ReactOS  0.4.14-dev-337-gf981a68
mmsys.c File Reference
#include "mmsys.h"
#include <winsvc.h>
#include <shlwapi.h>
#include <debug.h>
#include <swenum.h>
#include <newdev.h>
#include <initguid.h>
#include <devguid.h>
Include dependency graph for mmsys.c:

Go to the source code of this file.

Classes

struct  EVENT_LABEL_ITEM
 
struct  SYSTEM_SCHEME_ITEM
 

Macros

#define UPDATEDRIVERFORPLUGANDPLAYDEVICES   "UpdateDriverForPlugAndPlayDevicesW"
 
#define NUM_APPLETS   (1)
 

Typedefs

typedef enum HWPAGE_DISPLAYMODEPHWPAGE_DISPLAYMODE
 
typedef BOOL(WINAPIUpdateDriverForPlugAndPlayDevicesProto) (IN OPTIONAL HWND hwndParent, IN LPCTSTR HardwareId, IN LPCTSTR FullInfPath, IN DWORD InstallFlags, OUT OPTIONAL PBOOL bRebootRequired)
 

Enumerations

enum  HWPAGE_DISPLAYMODE {
  HWPD_STANDARDLIST = 0, HWPD_LARGELIST, HWPD_MAX = HWPD_LARGELIST, HWPD_STANDARDLIST = 0,
  HWPD_LARGELIST, HWPD_MAX = HWPD_LARGELIST, HWPD_STANDARDLIST = 0, HWPD_LARGELIST,
  HWPD_MAX = HWPD_LARGELIST, HWPD_STANDARDLIST = 0, HWPD_LARGELIST, HWPD_MAX = HWPD_LARGELIST
}
 

Functions

HWND WINAPI DeviceCreateHardwarePageEx (HWND hWndParent, LPGUID lpGuids, UINT uNumberOfGuids, HWPAGE_DISPLAYMODE DisplayMode)
 
HRESULT WINAPI DllCanUnloadNow (VOID)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
VOID WINAPI ShowDriverSettingsAfterForkW (HWND hwnd, HINSTANCE hInstance, LPWSTR lpszCmd, int nCmdShow)
 
VOID WINAPI ShowDriverSettingsAfterForkA (HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
 
VOID WINAPI ShowDriverSettingsAfterFork (HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
 
BOOL WINAPI ShowMMCPLPropertySheet (HWND hwnd, LPCSTR pszPropSheet, LPSTR pszName, LPSTR pszCaption)
 
VOID WINAPI ShowAudioPropertySheet (HWND hwnd, HINSTANCE hInstance, LPTSTR lpszCmd, int nCmdShow)
 
VOID WINAPI mmseRunOnceW (HWND hwnd, HINSTANCE hInstance, LPWSTR lpszCmd, int nCmdShow)
 
VOID WINAPI mmseRunOnceA (HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
 
VOID WINAPI mmseRunOnce (HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
 
BOOL WINAPI MediaPropPageProvider (LPVOID Info, LPFNADDPROPSHEETPAGE PropSheetPage, LPARAM lParam)
 
VOID WINAPI ShowFullControlPanel (HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
 
VOID InstallSystemSoundLabels (HKEY hKey)
 
VOID InstallSystemSoundSchemeNames (HKEY hKey)
 
VOID InstallDefaultSystemSoundScheme (HKEY hRootKey)
 
VOID InstallSystemSoundScheme ()
 
BOOL IsSoftwareBusPnpEnumeratorInstalled ()
 
DWORD InstallSoftwareBusPnpEnumerator (LPWSTR InfPath, LPCWSTR HardwareIdList)
 
DWORD MMSYS_InstallDevice (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD MMSYS_RemoveDevice (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD MMSYS_AllowInstallDevice (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD MMSYS_SelectDevice (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD MMSYS_DetectDevice (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD MMSYS_SelectBestCompatDRV (HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
 
DWORD WINAPI MediaClassInstaller (IN DI_FUNCTION diFunction, IN HDEVINFO hDevInfo, IN PSP_DEVINFO_DATA pspDevInfoData OPTIONAL)
 
static INT_PTR CALLBACK HardwareDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
LONG APIENTRY MmSysApplet (HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
 
VOID InitPropSheetPage (PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
 
LONG CALLBACK CPlApplet (HWND hwndCpl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved)
 

Variables

static EVENT_LABEL_ITEM EventLabels []
 
static SYSTEM_SCHEME_ITEM SystemSchemes []
 
HINSTANCE hApplet = 0
 
const APPLET Applets [NUM_APPLETS]
 

Macro Definition Documentation

◆ NUM_APPLETS

#define NUM_APPLETS   (1)

Definition at line 100 of file mmsys.c.

◆ UPDATEDRIVERFORPLUGANDPLAYDEVICES

#define UPDATEDRIVERFORPLUGANDPLAYDEVICES   "UpdateDriverForPlugAndPlayDevicesW"

Definition at line 99 of file mmsys.c.

Typedef Documentation

◆ PHWPAGE_DISPLAYMODE

◆ UpdateDriverForPlugAndPlayDevicesProto

typedef BOOL(WINAPI * UpdateDriverForPlugAndPlayDevicesProto) (IN OPTIONAL HWND hwndParent, IN LPCTSTR HardwareId, IN LPCTSTR FullInfPath, IN DWORD InstallFlags, OUT OPTIONAL PBOOL bRebootRequired)

Definition at line 92 of file mmsys.c.

Enumeration Type Documentation

◆ HWPAGE_DISPLAYMODE

Enumerator
HWPD_STANDARDLIST 
HWPD_LARGELIST 
HWPD_MAX 
HWPD_STANDARDLIST 
HWPD_LARGELIST 
HWPD_MAX 
HWPD_STANDARDLIST 
HWPD_LARGELIST 
HWPD_MAX 
HWPD_STANDARDLIST 
HWPD_LARGELIST 
HWPD_MAX 

Definition at line 23 of file mmsys.c.

24 {
Definition: mmsys.c:27
HWPAGE_DISPLAYMODE
Definition: mmsys.c:23
enum HWPAGE_DISPLAYMODE * PHWPAGE_DISPLAYMODE

Function Documentation

◆ CPlApplet()

LONG CALLBACK CPlApplet ( HWND  hwndCpl,
UINT  uMsg,
LPARAM  lParam1,
LPARAM  lParam2 
)

Definition at line 761 of file mmsys.c.

765 {
766  switch(uMsg)
767  {
768  case CPL_INIT:
769  return TRUE;
770 
771  case CPL_GETCOUNT:
772  return NUM_APPLETS;
773 
774  case CPL_INQUIRE:
775  {
776  CPLINFO *CPlInfo = (CPLINFO*)lParam2;
777  UINT uAppIndex = (UINT)lParam1;
778 
779  CPlInfo->lData = 0;
780  CPlInfo->idIcon = Applets[uAppIndex].idIcon;
781  CPlInfo->idName = Applets[uAppIndex].idName;
782  CPlInfo->idInfo = Applets[uAppIndex].idDescription;
783  break;
784  }
785 
786  case CPL_DBLCLK:
787  {
788  UINT uAppIndex = (UINT)lParam1;
789  Applets[uAppIndex].AppletProc(hwndCpl,
790  uMsg,
791  lParam1,
792  lParam2);
793  break;
794  }
795  }
796 
797  return FALSE;
798 }
#define TRUE
Definition: types.h:120
Definition: cpl.h:24
int idName
Definition: hotplug.h:27
int idIcon
Definition: hotplug.h:26
int idInfo
Definition: cpl.h:27
int idIcon
Definition: cpl.h:25
int idDescription
Definition: hotplug.h:28
#define CPL_DBLCLK
Definition: cpl.h:16
#define NUM_APPLETS
Definition: mmsys.c:100
const APPLET Applets[NUM_APPLETS]
Definition: mmsys.c:106
APPLET_PROC AppletProc
Definition: hotplug.h:29
#define CPL_INIT
Definition: cpl.h:12
#define CPL_INQUIRE
Definition: cpl.h:14
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
unsigned int UINT
Definition: ndis.h:50
#define CPL_GETCOUNT
Definition: cpl.h:13

◆ DeviceCreateHardwarePageEx()

HWND WINAPI DeviceCreateHardwarePageEx ( HWND  hWndParent,
LPGUID  lpGuids,
UINT  uNumberOfGuids,
HWPAGE_DISPLAYMODE  DisplayMode 
)

Referenced by HardwareDlgProc().

◆ DllCanUnloadNow()

HRESULT WINAPI DllCanUnloadNow ( VOID  )

Definition at line 113 of file mmsys.c.

114 {
115  DPRINT1("DllCanUnloadNow() stubs\n");
116  return S_OK;
117 }
#define S_OK
Definition: intsafe.h:59
#define DPRINT1
Definition: precomp.h:8

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 120 of file mmsys.c.

123 {
124  DPRINT1("DllGetClassObject() stubs\n");
125  return S_OK;
126 }
#define S_OK
Definition: intsafe.h:59
#define DPRINT1
Definition: precomp.h:8

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  dwReason,
LPVOID  lpReserved 
)

Definition at line 802 of file mmsys.c.

805 {
806  UNREFERENCED_PARAMETER(lpReserved);
807  switch(dwReason)
808  {
809  case DLL_PROCESS_ATTACH:
810  hApplet = hinstDLL;
811  DisableThreadLibraryCalls(hinstDLL);
812  break;
813  }
814 
815  return TRUE;
816 }
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
DWORD dwReason
Definition: misc.cpp:154
HINSTANCE hApplet
Definition: mmsys.c:103

◆ HardwareDlgProc()

static INT_PTR CALLBACK HardwareDlgProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 665 of file mmsys.c.

669 {
672  switch(uMsg)
673  {
674  case WM_INITDIALOG:
675  {
676  GUID Guids[2];
677  Guids[0] = GUID_DEVCLASS_CDROM;
678  Guids[1] = GUID_DEVCLASS_MEDIA;
679 
680  /* Create the hardware page */
682  Guids,
683  sizeof(Guids) / sizeof(Guids[0]),
685  break;
686  }
687  }
688 
689  return FALSE;
690 }
HWND WINAPI DeviceCreateHardwarePageEx(HWND hWndParent, LPGUID lpGuids, UINT uNumberOfGuids, HWPAGE_DISPLAYMODE DisplayMode)
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
WPARAM wParam
Definition: combotst.c:138
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139

Referenced by MmSysApplet().

◆ InitPropSheetPage()

VOID InitPropSheetPage ( PROPSHEETPAGE psp,
WORD  idDlg,
DLGPROC  DlgProc 
)

Definition at line 746 of file mmsys.c.

749 {
750  ZeroMemory(psp, sizeof(PROPSHEETPAGE));
751  psp->dwSize = sizeof(PROPSHEETPAGE);
752  psp->dwFlags = PSP_DEFAULT;
753  psp->hInstance = hApplet;
754  psp->pszTemplate = MAKEINTRESOURCE(idDlg);
755  psp->pfnDlgProc = DlgProc;
756 }
WORD idDlg
Definition: desk.c:109
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define ZeroMemory
Definition: winbase.h:1642
HINSTANCE hApplet
Definition: mmsys.c:103
#define PSP_DEFAULT
Definition: prsht.h:22
DLGPROC DlgProc
Definition: desk.c:110
#define PROPSHEETPAGE
Definition: prsht.h:371

Referenced by MmSysApplet().

◆ InstallDefaultSystemSoundScheme()

VOID InstallDefaultSystemSoundScheme ( HKEY  hRootKey)

Definition at line 259 of file mmsys.c.

260 {
261  HKEY hKey, hSubKey;
263  UINT i = 0;
264 
265  if (RegCreateKeyExW(hRootKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL) != ERROR_SUCCESS)
266  return;
267 
268  RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[0].DefaultName, (wcslen(SystemSchemes[0].DefaultName)+1) * sizeof(WCHAR));
269  swprintf(Path, L"@mmsys.cpl,-%u", SystemSchemes[0].IconId);
270  RegSetValueExW(hKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
271 
272  do
273  {
275  {
276  HKEY hScheme;
277 
278  swprintf(Path, L"%%SystemRoot%%\\media\\%s", EventLabels[i].FileName);
279  if (RegCreateKeyExW(hSubKey, L".Current", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
280  {
281  RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
282  RegCloseKey(hScheme);
283  }
284 
285  if (RegCreateKeyExW(hSubKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
286  {
287  RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
288  RegCloseKey(hScheme);
289  }
290  RegCloseKey(hSubKey);
291  }
292  i++;
293  }while(EventLabels[i].LabelName);
294 
295  RegCloseKey(hKey);
296 }
#define ERROR_SUCCESS
Definition: deptool.c:10
static EVENT_LABEL_ITEM EventLabels[]
Definition: mmsys.c:45
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
smooth NULL
Definition: ftsmooth.c:416
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4895
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
#define swprintf(buf, format,...)
Definition: sprintf.c:56
static const WCHAR L[]
Definition: oid.c:1250
PRTL_UNICODE_STRING_BUFFER Path
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
unsigned int UINT
Definition: ndis.h:50
static SYSTEM_SCHEME_ITEM SystemSchemes[]
Definition: mmsys.c:67
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define REG_SZ
Definition: layer.c:22

Referenced by InstallSystemSoundScheme().

◆ InstallSoftwareBusPnpEnumerator()

DWORD InstallSoftwareBusPnpEnumerator ( LPWSTR  InfPath,
LPCWSTR  HardwareIdList 
)

Definition at line 386 of file mmsys.c.

387 {
390  GUID ClassGUID;
391  TCHAR ClassName[50];
392  int Result = 0;
393  HMODULE hModule = NULL;
395  BOOL reboot = FALSE;
396  DWORD flags = 0;
397 
398  if (!SetupDiGetINFClass(InfPath,&ClassGUID,ClassName,sizeof(ClassName)/sizeof(ClassName[0]),0))
399  {
400  return -1;
401  }
402 
405  {
406  return -1;
407  }
408 
411  {
413  return -1;
414  }
415 
416  if(!SetupDiSetDeviceRegistryProperty(DeviceInfoSet, &DeviceInfoData, SPDRP_HARDWAREID, (LPBYTE)HardwareIdList, (lstrlen(HardwareIdList)+1+1)*sizeof(TCHAR)))
417  {
419  return -1;
420  }
421 
423  {
425  return -1;
426  }
427 
428  if(GetFileAttributes(InfPath)==(DWORD)(-1)) {
430  return -1;
431  }
432 
434  hModule = LoadLibraryW(L"newdev.dll");
435  if(!hModule) {
437  return -1;
438  }
439 
441  if(!UpdateProc)
442  {
445  return -1;
446  }
447 
448  if(!UpdateProc(NULL, HardwareIdList, InfPath, flags, &reboot))
449  {
452  return -1;
453  }
454 
457  return Result;
458 }
#define UPDATEDRIVERFORPLUGANDPLAYDEVICES
Definition: mmsys.c:99
#define INSTALLFLAG_FORCE
Definition: newdev.h:34
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4029
BOOL(WINAPI * UpdateDriverForPlugAndPlayDevicesProto)(IN OPTIONAL HWND hwndParent, IN LPCTSTR HardwareId, IN LPCTSTR FullInfPath, IN DWORD InstallFlags, OUT OPTIONAL PBOOL bRebootRequired)
Definition: mmsys.c:92
unsigned char * LPBYTE
Definition: typedefs.h:52
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
Definition: devinst.c:1214
unsigned int BOOL
Definition: ntddk_ex.h:94
#define DIF_REGISTERDEVICE
Definition: setupapi.h:144
#define LoadLibraryW(x)
Definition: compat.h:412
smooth NULL
Definition: ftsmooth.c:416
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
static const WCHAR ClassGUID[]
Definition: devclass.c:30
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
char TCHAR
Definition: xmlstorage.h:189
#define FreeLibrary(x)
Definition: compat.h:413
#define SetupDiCreateDeviceInfo
Definition: setupapi.h:2574
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2898
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1523
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetupDiSetDeviceRegistryProperty
Definition: setupapi.h:2615
#define SPDRP_HARDWAREID
Definition: setupapi.h:503
GLbitfield flags
Definition: glext.h:7161
static const WCHAR L[]
Definition: oid.c:1250
#define GetFileAttributes
Definition: winbase.h:3639
#define lstrlen
Definition: winbase.h:3700
#define GetProcAddress(x, y)
Definition: compat.h:418
#define SetupDiGetINFClass
Definition: setupapi.h:2604
HMODULE hModule
Definition: animate.c:44
#define DICD_GENERATE_ID
Definition: setupapi.h:110

Referenced by MMSYS_InstallDevice().

◆ InstallSystemSoundLabels()

VOID InstallSystemSoundLabels ( HKEY  hKey)

Definition at line 221 of file mmsys.c.

222 {
223  UINT i = 0;
224  HKEY hSubKey;
225  WCHAR Buffer[40];
226 
227  do
228  {
230  {
231  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)EventLabels[i].DefaultName, (wcslen(EventLabels[i].DefaultName)+1) * sizeof(WCHAR));
232  swprintf(Buffer, L"@mmsys.cpl,-%u", EventLabels[i].LocalizedResId);
233  RegSetValueExW(hSubKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Buffer, (wcslen(Buffer)+1) * sizeof(WCHAR));
234 
235  RegCloseKey(hSubKey);
236  }
237  i++;
238  }while(EventLabels[i].LabelName);
239 }
#define ERROR_SUCCESS
Definition: deptool.c:10
static EVENT_LABEL_ITEM EventLabels[]
Definition: mmsys.c:45
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
smooth NULL
Definition: ftsmooth.c:416
Definition: bufpool.h:45
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4895
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define swprintf(buf, format,...)
Definition: sprintf.c:56
static const WCHAR L[]
Definition: oid.c:1250
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
unsigned int UINT
Definition: ndis.h:50
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define REG_SZ
Definition: layer.c:22

Referenced by InstallSystemSoundScheme().

◆ InstallSystemSoundScheme()

VOID InstallSystemSoundScheme ( )

Definition at line 300 of file mmsys.c.

301 {
302  HKEY hKey, hSubKey;
303  DWORD dwDisposition;
304 
306  return;
307 
308  if (RegCreateKeyExW(hKey, L"EventLabels", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
309  {
310  InstallSystemSoundLabels(hSubKey);
311  RegCloseKey(hSubKey);
312  }
313 
314  if (RegCreateKeyExW(hKey, L"Schemes", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwDisposition) == ERROR_SUCCESS)
315  {
316  HKEY hNames;
317 
318  if (RegCreateKeyExW(hSubKey, L"Names", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNames, NULL) == ERROR_SUCCESS)
319  {
321  RegCloseKey(hNames);
322  }
323 
324  if (RegCreateKeyExW(hSubKey, L"Apps", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNames, NULL) == ERROR_SUCCESS)
325  {
327  RegCloseKey(hNames);
328  if (dwDisposition & REG_CREATED_NEW_KEY)
329  {
330  // FIXME
331  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)L".Default", (wcslen(L".Default")+1) * sizeof(WCHAR));
332  }
333  }
334 
335  RegCloseKey(hSubKey);
336  }
337 
338  RegCloseKey(hKey);
339 }
VOID InstallSystemSoundSchemeNames(HKEY hKey)
Definition: mmsys.c:242
VOID InstallDefaultSystemSoundScheme(HKEY hRootKey)
Definition: mmsys.c:259
#define ERROR_SUCCESS
Definition: deptool.c:10
#define HKEY_CURRENT_USER
Definition: winreg.h:11
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
smooth NULL
Definition: ftsmooth.c:416
#define REG_CREATED_NEW_KEY
Definition: nt_native.h:1084
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4895
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
static const WCHAR L[]
Definition: oid.c:1250
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
VOID InstallSystemSoundLabels(HKEY hKey)
Definition: mmsys.c:221
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define REG_SZ
Definition: layer.c:22

Referenced by MMSYS_InstallDevice().

◆ InstallSystemSoundSchemeNames()

VOID InstallSystemSoundSchemeNames ( HKEY  hKey)

Definition at line 242 of file mmsys.c.

243 {
244  UINT i = 0;
245  HKEY hSubKey;
246 
247  do
248  {
250  {
251  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[i].DefaultName, (wcslen(SystemSchemes[i].DefaultName)+1) * sizeof(WCHAR));
252  RegCloseKey(hSubKey);
253  }
254  i++;
255  }while(SystemSchemes[i].LabelName);
256 }
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
smooth NULL
Definition: ftsmooth.c:416
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4895
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
unsigned int UINT
Definition: ndis.h:50
static SYSTEM_SCHEME_ITEM SystemSchemes[]
Definition: mmsys.c:67
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define REG_SZ
Definition: layer.c:22

Referenced by InstallSystemSoundScheme().

◆ IsSoftwareBusPnpEnumeratorInstalled()

BOOL IsSoftwareBusPnpEnumeratorInstalled ( )

Definition at line 342 of file mmsys.c.

343 {
344  HDEVINFO hDevInfo;
345  SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
347  PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData;
348 
350  if (!hDevInfo)
351  {
352  // failed
353  return FALSE;
354  }
355 
356  DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
357  if (!SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &SWBusGuid, 0, &DeviceInterfaceData))
358  {
359  // failed
361  return FALSE;
362  }
363 
364  DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W));
365  if (!DeviceInterfaceDetailData)
366  {
367  // failed
369  return FALSE;
370  }
371 
372  DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W);
373  if (!SetupDiGetDeviceInterfaceDetailW(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData,MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W), NULL, NULL))
374  {
375  // failed
376  HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
378  return FALSE;
379  }
380  HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
382  return TRUE;
383 }
#define TRUE
Definition: types.h:120
HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *class, LPCWSTR enumstr, HWND parent, DWORD flags)
Definition: devinst.c:2297
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, DWORD DeviceInterfaceDetailDataSize, PDWORD RequiredSize, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:3016
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA_W
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2898
#define MAX_PATH
Definition: compat.h:26
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W * PSP_DEVICE_INTERFACE_DETAIL_DATA_W
#define STATIC_BUSID_SoftwareDeviceEnumerator
Definition: swenum.h:25
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
Definition: devinst.c:2785
#define DIGCF_DEVICEINTERFACE
Definition: setupapi.h:174
struct _SP_DEVICE_INTERFACE_DATA SP_DEVICE_INTERFACE_DATA
#define HeapFree(x, y, z)
Definition: compat.h:402
#define DIGCF_PRESENT
Definition: setupapi.h:171

Referenced by MMSYS_InstallDevice().

◆ MediaClassInstaller()

DWORD WINAPI MediaClassInstaller ( IN DI_FUNCTION  diFunction,
IN HDEVINFO  hDevInfo,
IN PSP_DEVINFO_DATA pspDevInfoData  OPTIONAL 
)

Definition at line 639 of file mmsys.c.

642 {
643  switch (diFunction)
644  {
645  case DIF_INSTALLDEVICE:
646  return MMSYS_InstallDevice(hDevInfo, pspDevInfoData);
647  case DIF_REMOVE:
648  return MMSYS_RemoveDevice(hDevInfo, pspDevInfoData);
649  case DIF_ALLOW_INSTALL:
650  return MMSYS_AllowInstallDevice(hDevInfo, pspDevInfoData);
651  case DIF_SELECTDEVICE:
652  return MMSYS_SelectDevice(hDevInfo, pspDevInfoData);
653  case DIF_DETECT:
654  return MMSYS_DetectDevice(hDevInfo, pspDevInfoData);
656  return MMSYS_SelectBestCompatDRV(hDevInfo, pspDevInfoData);
657  default:
658  return ERROR_DI_DO_DEFAULT;
659  }
660 }
#define DIF_SELECTDEVICE
Definition: setupapi.h:120
DWORD MMSYS_SelectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:621
DWORD MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:461
#define DIF_INSTALLDEVICE
Definition: setupapi.h:121
DWORD MMSYS_DetectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:627
DWORD MMSYS_RemoveDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:609
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305
#define DIF_ALLOW_INSTALL
Definition: setupapi.h:143
#define DIF_REMOVE
Definition: setupapi.h:124
#define DIF_SELECTBESTCOMPATDRV
Definition: setupapi.h:142
DWORD MMSYS_SelectBestCompatDRV(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:633
DWORD MMSYS_AllowInstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:615
#define DIF_DETECT
Definition: setupapi.h:134

◆ MediaPropPageProvider()

BOOL WINAPI MediaPropPageProvider ( LPVOID  Info,
LPFNADDPROPSHEETPAGE  PropSheetPage,
LPARAM  lParam 
)

Definition at line 203 of file mmsys.c.

206 {
207  DPRINT1("MediaPropPageProvider() stubs\n");
208  return TRUE;
209 }
#define TRUE
Definition: types.h:120
#define DPRINT1
Definition: precomp.h:8

◆ mmseRunOnce()

VOID WINAPI mmseRunOnce ( HWND  hwnd,
HINSTANCE  hInstance,
LPSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 194 of file mmsys.c.

198 {
199  DPRINT1("mmseRunOnce() stubs\n");
200 }
#define DPRINT1
Definition: precomp.h:8

◆ mmseRunOnceA()

VOID WINAPI mmseRunOnceA ( HWND  hwnd,
HINSTANCE  hInstance,
LPSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 185 of file mmsys.c.

189 {
190  DPRINT1("mmseRunOnceA() stubs\n");
191 }
#define DPRINT1
Definition: precomp.h:8

◆ mmseRunOnceW()

VOID WINAPI mmseRunOnceW ( HWND  hwnd,
HINSTANCE  hInstance,
LPWSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 176 of file mmsys.c.

180 {
181  DPRINT1("mmseRunOnceW() stubs\n");
182 }
#define DPRINT1
Definition: precomp.h:8

◆ MMSYS_AllowInstallDevice()

DWORD MMSYS_AllowInstallDevice ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 615 of file mmsys.c.

616 {
617  return ERROR_DI_DO_DEFAULT;
618 }
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305

Referenced by MediaClassInstaller().

◆ MMSYS_DetectDevice()

DWORD MMSYS_DetectDevice ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 627 of file mmsys.c.

628 {
629  return ERROR_DI_DO_DEFAULT;
630 }
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305

Referenced by MediaClassInstaller().

◆ MMSYS_InstallDevice()

DWORD MMSYS_InstallDevice ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 461 of file mmsys.c.

462 {
463  UINT Length;
464  LPWSTR pBuffer;
465  WCHAR szBuffer[MAX_PATH];
466  HINF hInf;
467  PVOID Context;
468  BOOL Result;
469  SC_HANDLE hSCManager, hService;
470  WCHAR WaveName[20];
471  HKEY hKey;
473  ULONG Index;
474 
475  if (!IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_SOUND) &&
476  !IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_MEDIA))
477  return ERROR_DI_DO_DEFAULT;
478 
479  Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
480  if (!Length || Length >= MAX_PATH - 14)
481  {
482  return ERROR_GEN_FAILURE;
483  }
484 
485  pBuffer = PathAddBackslashW(szBuffer);
486  if (!pBuffer)
487  {
488  return ERROR_GEN_FAILURE;
489  }
490 
491  wcscpy(pBuffer, L"inf\\audio.inf");
492 
493  hInf = SetupOpenInfFileW(szBuffer,
494  NULL,
496  NULL);
497 
498  if (hInf == INVALID_HANDLE_VALUE)
499  {
500  return ERROR_GEN_FAILURE;
501  }
502 
504  if (Context == NULL)
505  {
506  SetupCloseInfFile(hInf);
507  return ERROR_GEN_FAILURE;
508  }
509 
511  hInf,
512  L"AUDIO_Inst.NT",
513  SPINST_ALL,
514  NULL,
515  NULL,
518  Context,
519  NULL,
520  NULL);
521 
522  if (Result)
523  {
525  L"Audio_Inst.NT.Services",
526  0);
527  }
528 
530  SetupCloseInfFile(hInf);
531 
533  {
534  Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
535  if (!Length || Length >= MAX_PATH - 14)
536  {
537  return ERROR_GEN_FAILURE;
538  }
539 
540  pBuffer = PathAddBackslashW(szBuffer);
541  if (!pBuffer)
542  {
543  return ERROR_GEN_FAILURE;
544  }
545 
546  wcscpy(pBuffer, L"inf\\machine.inf");
547  InstallSoftwareBusPnpEnumerator(szBuffer, L"ROOT\\SWENUM\0");
548  }
549 
551  if (!hSCManager)
552  {
553  return ERROR_DI_DO_DEFAULT;
554  }
555 
556  hService = OpenService(hSCManager, L"AudioSrv", SERVICE_ALL_ACCESS);
557  if (hService)
558  {
559  /* Make AudioSrv start automatically */
561 
562  StartService(hService, 0, NULL);
563  CloseServiceHandle(hService);
564  }
566 
567  if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32", 0, GENERIC_READ | GENERIC_WRITE, &hKey) == ERROR_SUCCESS)
568  {
569  szBuffer[Length] = '\0';
570  pBuffer = PathAddBackslashW(szBuffer);
571  wcscpy(pBuffer, L"system32\\wdmaud.drv");
572 
573  for(Index = 1; Index <= 4; Index++)
574  {
575  swprintf(WaveName, L"wave%u", Index);
576  if (RegQueryValueExW(hKey, WaveName, 0, NULL, NULL, &BufferSize) != ERROR_MORE_DATA)
577  {
578  /* Store new audio driver entry */
579  RegSetValueExW(hKey, WaveName, 0, REG_SZ, (LPBYTE)szBuffer, (wcslen(szBuffer)+1) * sizeof(WCHAR));
580  break;
581  }
582  else
583  {
585  BufferSize = sizeof(Buffer);
586 
587  if (RegQueryValueExW(hKey, WaveName, 0, NULL, (LPBYTE)Buffer, &BufferSize) == ERROR_SUCCESS)
588  {
589  /* Make sure the buffer is zero terminated */
590  Buffer[MAX_PATH-1] = L'\0';
591 
592  if (!wcsicmp(Buffer, szBuffer))
593  {
594  /* An entry already exists */
595  break;
596  }
597  }
598  }
599  }
600  RegCloseKey(hKey);
601  }
603 
604  return ERROR_DI_DO_DEFAULT;
605 
606 }
#define StartService
Definition: winsvc.h:585
#define INF_STYLE_WIN4
Definition: infsupp.h:41
#define ERROR_SUCCESS
Definition: deptool.c:10
#define SC_MANAGER_CONNECT
Definition: winsvc.h:14
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
#define SERVICE_ALL_ACCESS
Definition: winsvc.h:62
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
Definition: parser.c:1229
#define OpenService
Definition: winsvc.h:576
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
Definition: infsupp.c:43
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
#define SERVICE_NO_CHANGE
Definition: winsvc.h:20
#define ChangeServiceConfig
Definition: winsvc.h:567
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
#define SP_COPY_NEWER
Definition: setupapi.h:473
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
Definition: path.c:289
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL IsSoftwareBusPnpEnumeratorInstalled()
Definition: mmsys.c:342
#define GENERIC_WRITE
Definition: nt_native.h:90
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
Definition: scm.c:577
smooth NULL
Definition: ftsmooth.c:416
PVOID pBuffer
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
Definition: bufpool.h:45
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4895
#define OpenSCManager
Definition: winsvc.h:575
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4116
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
#define swprintf(buf, format,...)
Definition: sprintf.c:56
static const UCHAR Index[8]
Definition: usbohci.c:18
#define BufferSize
Definition: classpnp.h:419
unsigned long DWORD
Definition: ntddk_ex.h:95
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
BOOL WINAPI SetupInstallFromInfSectionW(HWND owner, HINF hinf, PCWSTR section, UINT flags, HKEY key_root, PCWSTR src_root, UINT copy_flags, PSP_FILE_CALLBACK_W callback, PVOID context, HDEVINFO devinfo, PSP_DEVINFO_DATA devinfo_data)
Definition: install.c:1324
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
UINT WINAPI SetupDefaultQueueCallbackW(PVOID context, UINT notification, UINT_PTR param1, UINT_PTR param2)
Definition: queue.c:1777
void WINAPI SetupTermDefaultQueueCallback(PVOID context)
Definition: queue.c:1704
#define SPINST_ALL
Definition: setupapi.h:596
#define GENERIC_READ
Definition: compat.h:124
VOID InstallSystemSoundScheme()
Definition: mmsys.c:300
SC_HANDLE hSCManager
Definition: sc.c:12
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define wcsicmp
Definition: string.h:1152
BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF Inf, PCWSTR SectionName, DWORD Flags)
Definition: install.c:1609
PVOID WINAPI SetupInitDefaultQueueCallback(HWND owner)
Definition: queue.c:1677
DWORD InstallSoftwareBusPnpEnumerator(LPWSTR InfPath, LPCWSTR HardwareIdList)
Definition: mmsys.c:386
unsigned int UINT
Definition: ndis.h:50
#define SERVICE_AUTO_START
Definition: cmtypes.h:975
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305
struct tagContext Context
Definition: acpixf.h:1024
unsigned int ULONG
Definition: retypes.h:1
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
#define ERROR_GEN_FAILURE
Definition: winerror.h:134
WCHAR * LPWSTR
Definition: xmlstorage.h:184
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define REG_SZ
Definition: layer.c:22

Referenced by MediaClassInstaller().

◆ MMSYS_RemoveDevice()

DWORD MMSYS_RemoveDevice ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 609 of file mmsys.c.

610 {
611  return ERROR_DI_DO_DEFAULT;
612 }
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305

Referenced by MediaClassInstaller().

◆ MMSYS_SelectBestCompatDRV()

DWORD MMSYS_SelectBestCompatDRV ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 633 of file mmsys.c.

634 {
635  return ERROR_DI_DO_DEFAULT;
636 }
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305

Referenced by MediaClassInstaller().

◆ MMSYS_SelectDevice()

DWORD MMSYS_SelectDevice ( HDEVINFO  hDevInfo,
PSP_DEVINFO_DATA  pspDevInfoData 
)

Definition at line 621 of file mmsys.c.

622 {
623  return ERROR_DI_DO_DEFAULT;
624 }
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:305

Referenced by MediaClassInstaller().

◆ MmSysApplet()

LONG APIENTRY MmSysApplet ( HWND  hwnd,
UINT  uMsg,
LPARAM  wParam,
LPARAM  lParam 
)

Definition at line 710 of file mmsys.c.

714 {
715  PROPSHEETPAGE psp[5];
716  PROPSHEETHEADER psh; // = { 0 };
717  TCHAR Caption[256];
718 
722 
723  LoadString(hApplet, IDS_CPLNAME, Caption, _countof(Caption));
724 
725  psh.dwSize = sizeof(PROPSHEETHEADER);
727  psh.hwndParent = hwnd;
728  psh.hInstance = hApplet;
729  psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
730  psh.pszCaption = Caption;
731  psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
732  psh.nStartPage = 0;
733  psh.ppsp = psp;
734  psh.pfnCallback = PropSheetProc;
735 
741 
742  return (LONG)(PropertySheet(&psh) != -1);
743 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
INT_PTR CALLBACK AudioDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: audio.c:241
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define _countof(array)
Definition: fontsub.cpp:30
#define IDD_VOLUME
Definition: resource.h:19
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: mmsys.c:693
VOID InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
Definition: mmsys.c:746
#define PSH_USECALLBACK
Definition: prsht.h:48
WPARAM wParam
Definition: combotst.c:138
#define IDD_AUDIO
Definition: resource.h:21
#define IDS_CPLNAME
Definition: resource.h:8
#define PSH_USEICONID
Definition: prsht.h:42
long LONG
Definition: pedump.c:60
#define PROPSHEETHEADER
Definition: prsht.h:374
HINSTANCE hApplet
Definition: mmsys.c:103
INT_PTR CALLBACK SoundsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: sounds.c:1092
char TCHAR
Definition: xmlstorage.h:189
#define PSH_PROPTITLE
Definition: prsht.h:40
#define IDD_HARDWARE
Definition: resource.h:28
#define IDI_CPLICON
Definition: resource.h:4
#define IDD_SOUNDS
Definition: resource.h:20
#define IDD_VOICE
Definition: resource.h:22
#define PSH_PROPSHEETPAGE
Definition: prsht.h:43
INT_PTR CALLBACK VoiceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: voice.c:15
#define PropertySheet
Definition: prsht.h:382
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
static INT_PTR CALLBACK HardwareDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: mmsys.c:665
LPARAM lParam
Definition: combotst.c:139
#define LoadString
Definition: winuser.h:5720
INT_PTR CALLBACK VolumeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: volume.c:417
#define PROPSHEETPAGE
Definition: prsht.h:371

◆ PropSheetProc()

static int CALLBACK PropSheetProc ( HWND  hwndDlg,
UINT  uMsg,
LPARAM  lParam 
)
static

Definition at line 693 of file mmsys.c.

694 {
695  // NOTE: This callback is needed to set large icon correctly.
696  HICON hIcon;
697  switch (uMsg)
698  {
699  case PSCB_INITIALIZED:
700  {
702  SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
703  break;
704  }
705  }
706  return 0;
707 }
static HICON
Definition: imagelist.c:84
LONG_PTR LPARAM
Definition: windef.h:208
HINSTANCE hApplet
Definition: mmsys.c:103
#define IDI_CPLICON
Definition: resource.h:4
#define PSCB_INITIALIZED
Definition: prsht.h:75
HICON hIcon
Definition: msconfig.c:44
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define ICON_BIG
Definition: tnclass.cpp:51

Referenced by MmSysApplet().

◆ ShowAudioPropertySheet()

VOID WINAPI ShowAudioPropertySheet ( HWND  hwnd,
HINSTANCE  hInstance,
LPTSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 167 of file mmsys.c.

171 {
172  DPRINT1("ShowAudioPropertySheet() stubs\n");
173 }
#define DPRINT1
Definition: precomp.h:8

◆ ShowDriverSettingsAfterFork()

VOID WINAPI ShowDriverSettingsAfterFork ( HWND  hwnd,
HINSTANCE  hInstance,
LPSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 148 of file mmsys.c.

152 {
153  DPRINT1("ShowDriverSettingsAfterFork() stubs\n");
154 }
#define DPRINT1
Definition: precomp.h:8

◆ ShowDriverSettingsAfterForkA()

VOID WINAPI ShowDriverSettingsAfterForkA ( HWND  hwnd,
HINSTANCE  hInstance,
LPSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 139 of file mmsys.c.

143 {
144  DPRINT1("ShowDriverSettingsAfterForkA() stubs\n");
145 }
#define DPRINT1
Definition: precomp.h:8

◆ ShowDriverSettingsAfterForkW()

VOID WINAPI ShowDriverSettingsAfterForkW ( HWND  hwnd,
HINSTANCE  hInstance,
LPWSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 130 of file mmsys.c.

134 {
135  DPRINT1("ShowDriverSettingsAfterForkW() stubs\n");
136 }
#define DPRINT1
Definition: precomp.h:8

◆ ShowFullControlPanel()

VOID WINAPI ShowFullControlPanel ( HWND  hwnd,
HINSTANCE  hInstance,
LPSTR  lpszCmd,
int  nCmdShow 
)

Definition at line 212 of file mmsys.c.

216 {
217  DPRINT1("ShowFullControlPanel() stubs\n");
218 }
#define DPRINT1
Definition: precomp.h:8

◆ ShowMMCPLPropertySheet()

BOOL WINAPI ShowMMCPLPropertySheet ( HWND  hwnd,
LPCSTR  pszPropSheet,
LPSTR  pszName,
LPSTR  pszCaption 
)

Definition at line 157 of file mmsys.c.

161 {
162  DPRINT1("ShowMMCPLPropertySheet() stubs\n");
163  return TRUE;
164 }
#define TRUE
Definition: types.h:120
#define DPRINT1
Definition: precomp.h:8

Variable Documentation

◆ Applets

Initial value:
=
{
}
LONG APIENTRY MmSysApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
Definition: mmsys.c:710
#define IDS_CPLNAME
Definition: resource.h:8
#define IDS_CPLDESCRIPTION
Definition: resource.h:9
#define IDI_CPLICON
Definition: resource.h:4

Definition at line 106 of file mmsys.c.

Referenced by CPlApplet().

◆ EventLabels

EVENT_LABEL_ITEM EventLabels[]
static
Initial value:
=
{
{
L"WindowsLogon",
L"ReactOS Logon",
L"ReactOS_Logon.wav"
},
{
L"WindowsLogoff",
L"ReactOS Logoff",
L"ReactOS_Logoff.wav"
},
{
0,
}
}
smooth NULL
Definition: ftsmooth.c:416
#define IDS_REACTOS_LOGOFF
Definition: resource.h:81
static const WCHAR L[]
Definition: oid.c:1250
#define IDS_REACTOS_LOGON
Definition: resource.h:82

Definition at line 45 of file mmsys.c.

Referenced by InstallDefaultSystemSoundScheme(), and InstallSystemSoundLabels().

◆ hApplet

HINSTANCE hApplet = 0

Definition at line 103 of file mmsys.c.

Referenced by DllMain(), InitPropSheetPage(), MmSysApplet(), and PropSheetProc().

◆ SystemSchemes

SYSTEM_SCHEME_ITEM SystemSchemes[]
static
Initial value:
=
{
{
L".Default",
L"ReactOS Standard",
},
{
L".None",
L"No Sounds",
-1
},
{
}
}
smooth NULL
Definition: ftsmooth.c:416
#define IDS_REACTOS_DEFAULT_SCHEME
Definition: resource.h:83
static const WCHAR L[]
Definition: oid.c:1250

Definition at line 67 of file mmsys.c.

Referenced by InstallDefaultSystemSoundScheme(), and InstallSystemSoundSchemeNames().