ReactOS  0.4.15-dev-3294-ge98684e
mmsys.c
Go to the documentation of this file.
1 /*
2  *
3  * PROJECT: ReactOS Multimedia Control Panel
4  * FILE: dll/cpl/mmsys/mmsys.c
5  * PURPOSE: ReactOS Multimedia Control Panel
6  * PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com>
7  * Dmitry Chapyshev <dmitry@reactos.org>
8  * UPDATE HISTORY:
9  * 2005/11/23 Created
10  */
11 
12 #include "mmsys.h"
13 
14 #include <winsvc.h>
15 #include <shlwapi.h>
16 #include <debug.h>
17 
18 #include <swenum.h>
19 #include <newdev.h>
20 #include <initguid.h>
21 #include <devguid.h>
22 
23 typedef enum
24 {
29 
30 typedef struct
31 {
37 
38 typedef struct
39 {
44 
46 {
47  {
48  L"WindowsLogon",
49  L"ReactOS Logon",
51  L"ReactOS_Logon.wav"
52  },
53  {
54  L"WindowsLogoff",
55  L"ReactOS Logoff",
57  L"ReactOS_Logoff.wav"
58  },
59  {
60  NULL,
61  NULL,
62  0,
63  NULL
64  }
65 };
66 
68 {
69  {
70  L".Default",
71  L"ReactOS Standard",
73  },
74  {
75  L".None",
76  L"No Sounds",
77  -1
78  },
79  {
80  NULL,
81  NULL
82  }
83 };
84 
85 
88  LPGUID lpGuids,
89  UINT uNumberOfGuids,
91 
93  IN LPCTSTR HardwareId,
94  IN LPCTSTR FullInfPath,
95  IN DWORD InstallFlags,
96  OUT OPTIONAL PBOOL bRebootRequired
97  );
98 
99 #define UPDATEDRIVERFORPLUGANDPLAYDEVICES "UpdateDriverForPlugAndPlayDevicesW"
100 #define NUM_APPLETS (1)
101 
102 
104 
105 /* Applets */
107 {
109 };
110 
111 
114 {
115  DPRINT1("DllCanUnloadNow() stubs\n");
116  return S_OK;
117 }
118 
121  REFIID riid,
122  LPVOID *ppv)
123 {
124  DPRINT1("DllGetClassObject() stubs\n");
125  return S_OK;
126 }
127 
128 
129 VOID WINAPI
132  LPWSTR lpszCmd,
133  int nCmdShow)
134 {
135  DPRINT1("ShowDriverSettingsAfterForkW() stubs\n");
136 }
137 
138 VOID WINAPI
141  LPSTR lpszCmd,
142  int nCmdShow)
143 {
144  DPRINT1("ShowDriverSettingsAfterForkA() stubs\n");
145 }
146 
147 VOID WINAPI
150  LPSTR lpszCmd,
151  int nCmdShow)
152 {
153  DPRINT1("ShowDriverSettingsAfterFork() stubs\n");
154 }
155 
156 BOOL WINAPI
158  LPCSTR pszPropSheet,
159  LPSTR pszName,
160  LPSTR pszCaption)
161 {
162  DPRINT1("ShowMMCPLPropertySheet() stubs\n");
163  return TRUE;
164 }
165 
166 VOID WINAPI
169  LPWSTR lpszCmd,
170  int nCmdShow)
171 {
172  DPRINT1("mmseRunOnceW() stubs\n");
173 }
174 
175 VOID WINAPI
178  LPSTR lpszCmd,
179  int nCmdShow)
180 {
181  DPRINT1("mmseRunOnceA() stubs\n");
182 }
183 
184 VOID WINAPI
187  LPSTR lpszCmd,
188  int nCmdShow)
189 {
190  DPRINT1("mmseRunOnce() stubs\n");
191 }
192 
193 BOOL WINAPI
196  LPARAM lParam)
197 {
198  DPRINT1("MediaPropPageProvider() stubs\n");
199  return TRUE;
200 }
201 
202 VOID
204 {
205  UINT i = 0;
206  HKEY hSubKey;
207  WCHAR Buffer[40];
208 
209  do
210  {
212  {
213  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)EventLabels[i].DefaultName, (wcslen(EventLabels[i].DefaultName)+1) * sizeof(WCHAR));
214  swprintf(Buffer, L"@mmsys.cpl,-%u", EventLabels[i].LocalizedResId);
215  RegSetValueExW(hSubKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Buffer, (wcslen(Buffer)+1) * sizeof(WCHAR));
216 
217  RegCloseKey(hSubKey);
218  }
219  i++;
220  }while(EventLabels[i].LabelName);
221 }
222 
223 VOID
225 {
226  UINT i = 0;
227  HKEY hSubKey;
228 
229  do
230  {
232  {
233  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[i].DefaultName, (wcslen(SystemSchemes[i].DefaultName)+1) * sizeof(WCHAR));
234  RegCloseKey(hSubKey);
235  }
236  i++;
237  }while(SystemSchemes[i].LabelName);
238 }
239 
240 VOID
242 {
243  HKEY hKey, hSubKey;
245  UINT i = 0;
246 
248  return;
249 
250  RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[0].DefaultName, (wcslen(SystemSchemes[0].DefaultName)+1) * sizeof(WCHAR));
251  swprintf(Path, L"@mmsys.cpl,-%u", SystemSchemes[0].IconId);
252  RegSetValueExW(hKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
253 
254  do
255  {
257  {
258  HKEY hScheme;
259 
260  swprintf(Path, L"%%SystemRoot%%\\media\\%s", EventLabels[i].FileName);
261  if (RegCreateKeyExW(hSubKey, L".Current", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
262  {
263  RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
264  RegCloseKey(hScheme);
265  }
266 
267  if (RegCreateKeyExW(hSubKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
268  {
269  RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
270  RegCloseKey(hScheme);
271  }
272  RegCloseKey(hSubKey);
273  }
274  i++;
275  }while(EventLabels[i].LabelName);
276 
277  RegCloseKey(hKey);
278 }
279 
280 
281 VOID
283 {
284  HKEY hKey, hSubKey;
285  DWORD dwDisposition;
286 
288  return;
289 
290  if (RegCreateKeyExW(hKey, L"EventLabels", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
291  {
292  InstallSystemSoundLabels(hSubKey);
293  RegCloseKey(hSubKey);
294  }
295 
296  if (RegCreateKeyExW(hKey, L"Schemes", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwDisposition) == ERROR_SUCCESS)
297  {
298  HKEY hNames;
299 
300  if (RegCreateKeyExW(hSubKey, L"Names", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNames, NULL) == ERROR_SUCCESS)
301  {
303  RegCloseKey(hNames);
304  }
305 
306  if (RegCreateKeyExW(hSubKey, L"Apps", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNames, NULL) == ERROR_SUCCESS)
307  {
309  RegCloseKey(hNames);
310  if (dwDisposition & REG_CREATED_NEW_KEY)
311  {
312  // FIXME
313  RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)L".Default", (wcslen(L".Default")+1) * sizeof(WCHAR));
314  }
315  }
316 
317  RegCloseKey(hSubKey);
318  }
319 
320  RegCloseKey(hKey);
321 }
322 
323 BOOL
325 {
326  HDEVINFO hDevInfo;
327  SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
329  PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData;
330 
332  if (!hDevInfo)
333  {
334  // failed
335  return FALSE;
336  }
337 
338  DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
339  if (!SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &SWBusGuid, 0, &DeviceInterfaceData))
340  {
341  // failed
343  return FALSE;
344  }
345 
346  DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W));
347  if (!DeviceInterfaceDetailData)
348  {
349  // failed
351  return FALSE;
352  }
353 
354  DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W);
355  if (!SetupDiGetDeviceInterfaceDetailW(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData,MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W), NULL, NULL))
356  {
357  // failed
358  HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
360  return FALSE;
361  }
362  HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
364  return TRUE;
365 }
366 
367 DWORD
369 {
372  GUID ClassGUID;
373  TCHAR ClassName[50];
374  int Result = 0;
375  HMODULE hModule = NULL;
377  BOOL reboot = FALSE;
378  DWORD flags = 0;
379 
380  if (!SetupDiGetINFClass(InfPath,&ClassGUID,ClassName,sizeof(ClassName)/sizeof(ClassName[0]),0))
381  {
382  return -1;
383  }
384 
387  {
388  return -1;
389  }
390 
393  {
395  return -1;
396  }
397 
398  if(!SetupDiSetDeviceRegistryProperty(DeviceInfoSet, &DeviceInfoData, SPDRP_HARDWAREID, (LPBYTE)HardwareIdList, (lstrlen(HardwareIdList)+1+1)*sizeof(TCHAR)))
399  {
401  return -1;
402  }
403 
405  {
407  return -1;
408  }
409 
410  if(GetFileAttributes(InfPath)==(DWORD)(-1)) {
412  return -1;
413  }
414 
416  hModule = LoadLibraryW(L"newdev.dll");
417  if(!hModule) {
419  return -1;
420  }
421 
423  if(!UpdateProc)
424  {
427  return -1;
428  }
429 
430  if(!UpdateProc(NULL, HardwareIdList, InfPath, flags, &reboot))
431  {
434  return -1;
435  }
436 
439  return Result;
440 }
441 
442 DWORD
444 {
445  UINT Length;
446  LPWSTR pBuffer;
447  WCHAR szBuffer[MAX_PATH];
448  HINF hInf;
449  PVOID Context;
450  BOOL Result;
451  SC_HANDLE hSCManager, hService;
452  WCHAR WaveName[20];
453  HKEY hKey;
455  ULONG Index;
456 
457  if (!IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_SOUND) &&
458  !IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_MEDIA))
459  return ERROR_DI_DO_DEFAULT;
460 
461  Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
462  if (!Length || Length >= MAX_PATH - 14)
463  {
464  return ERROR_GEN_FAILURE;
465  }
466 
467  pBuffer = PathAddBackslashW(szBuffer);
468  if (!pBuffer)
469  {
470  return ERROR_GEN_FAILURE;
471  }
472 
473  wcscpy(pBuffer, L"inf\\audio.inf");
474 
475  hInf = SetupOpenInfFileW(szBuffer,
476  NULL,
478  NULL);
479 
480  if (hInf == INVALID_HANDLE_VALUE)
481  {
482  return ERROR_GEN_FAILURE;
483  }
484 
486  if (Context == NULL)
487  {
488  SetupCloseInfFile(hInf);
489  return ERROR_GEN_FAILURE;
490  }
491 
493  hInf,
494  L"AUDIO_Inst.NT",
495  SPINST_ALL,
496  NULL,
497  NULL,
500  Context,
501  NULL,
502  NULL);
503 
504  if (Result)
505  {
507  L"Audio_Inst.NT.Services",
508  0);
509  }
510 
512  SetupCloseInfFile(hInf);
513 
515  {
516  Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
517  if (!Length || Length >= MAX_PATH - 14)
518  {
519  return ERROR_GEN_FAILURE;
520  }
521 
522  pBuffer = PathAddBackslashW(szBuffer);
523  if (!pBuffer)
524  {
525  return ERROR_GEN_FAILURE;
526  }
527 
528  wcscpy(pBuffer, L"inf\\machine.inf");
529  InstallSoftwareBusPnpEnumerator(szBuffer, L"ROOT\\SWENUM\0");
530  }
531 
533  if (!hSCManager)
534  {
535  return ERROR_DI_DO_DEFAULT;
536  }
537 
538  hService = OpenService(hSCManager, L"AudioSrv", SERVICE_ALL_ACCESS);
539  if (hService)
540  {
541  /* Make AudioSrv start automatically */
543 
544  StartService(hService, 0, NULL);
545  CloseServiceHandle(hService);
546  }
548 
549  if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32", 0, GENERIC_READ | GENERIC_WRITE, &hKey) == ERROR_SUCCESS)
550  {
551  szBuffer[Length] = '\0';
552  pBuffer = PathAddBackslashW(szBuffer);
553  wcscpy(pBuffer, L"system32\\wdmaud.drv");
554 
555  for(Index = 1; Index <= 4; Index++)
556  {
557  swprintf(WaveName, L"wave%u", Index);
558  if (RegQueryValueExW(hKey, WaveName, 0, NULL, NULL, &BufferSize) != ERROR_MORE_DATA)
559  {
560  /* Store new audio driver entry */
561  RegSetValueExW(hKey, WaveName, 0, REG_SZ, (LPBYTE)szBuffer, (wcslen(szBuffer)+1) * sizeof(WCHAR));
562  break;
563  }
564  else
565  {
567  BufferSize = sizeof(Buffer);
568 
569  if (RegQueryValueExW(hKey, WaveName, 0, NULL, (LPBYTE)Buffer, &BufferSize) == ERROR_SUCCESS)
570  {
571  /* Make sure the buffer is zero terminated */
572  Buffer[MAX_PATH-1] = L'\0';
573 
574  if (!wcsicmp(Buffer, szBuffer))
575  {
576  /* An entry already exists */
577  break;
578  }
579  }
580  }
581  }
582  RegCloseKey(hKey);
583  }
585 
586  return ERROR_DI_DO_DEFAULT;
587 
588 }
589 
590 DWORD
592 {
593  return ERROR_DI_DO_DEFAULT;
594 }
595 
596 DWORD
598 {
599  return ERROR_DI_DO_DEFAULT;
600 }
601 
602 DWORD
604 {
605  return ERROR_DI_DO_DEFAULT;
606 }
607 
608 DWORD
610 {
611  return ERROR_DI_DO_DEFAULT;
612 }
613 
614 DWORD
616 {
617  return ERROR_DI_DO_DEFAULT;
618 }
619 
622  IN HDEVINFO hDevInfo,
623  IN PSP_DEVINFO_DATA pspDevInfoData OPTIONAL)
624 {
625  switch (diFunction)
626  {
627  case DIF_INSTALLDEVICE:
628  return MMSYS_InstallDevice(hDevInfo, pspDevInfoData);
629  case DIF_REMOVE:
630  return MMSYS_RemoveDevice(hDevInfo, pspDevInfoData);
631  case DIF_ALLOW_INSTALL:
632  return MMSYS_AllowInstallDevice(hDevInfo, pspDevInfoData);
633  case DIF_SELECTDEVICE:
634  return MMSYS_SelectDevice(hDevInfo, pspDevInfoData);
635  case DIF_DETECT:
636  return MMSYS_DetectDevice(hDevInfo, pspDevInfoData);
638  return MMSYS_SelectBestCompatDRV(hDevInfo, pspDevInfoData);
639  default:
640  return ERROR_DI_DO_DEFAULT;
641  }
642 }
643 
644 
645 /* Hardware property page dialog callback */
646 static INT_PTR CALLBACK
648  UINT uMsg,
649  WPARAM wParam,
650  LPARAM lParam)
651 {
654  switch(uMsg)
655  {
656  case WM_INITDIALOG:
657  {
658  GUID Guids[2];
659  Guids[0] = GUID_DEVCLASS_CDROM;
660  Guids[1] = GUID_DEVCLASS_MEDIA;
661 
662  /* Create the hardware page */
664  Guids,
665  sizeof(Guids) / sizeof(Guids[0]),
667  break;
668  }
669  }
670 
671  return FALSE;
672 }
673 
674 static int CALLBACK
676 {
677  // NOTE: This callback is needed to set large icon correctly.
678  HICON hIcon;
679  switch (uMsg)
680  {
681  case PSCB_INITIALIZED:
682  {
684  SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
685  break;
686  }
687  }
688  return 0;
689 }
690 
693  UINT uMsg,
694  LPARAM wParam,
695  LPARAM lParam)
696 {
697  PROPSHEETPAGE psp[5];
698  PROPSHEETHEADER psh; // = { 0 };
699  TCHAR Caption[256];
700  INT nPage = 0;
701 
705 
706  if (uMsg == CPL_STARTWPARMSW && lParam != 0)
707  nPage = _wtoi((PWSTR)lParam);
708 
709  LoadString(hApplet, IDS_CPLNAME, Caption, _countof(Caption));
710 
711  psh.dwSize = sizeof(PROPSHEETHEADER);
713  psh.hwndParent = hwnd;
714  psh.hInstance = hApplet;
715  psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
716  psh.pszCaption = Caption;
717  psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
718  psh.nStartPage = 0;
719  psh.ppsp = psp;
720  psh.pfnCallback = PropSheetProc;
721 
727 
728  if (nPage != 0 && nPage <= psh.nPages)
729  psh.nStartPage = nPage;
730 
731  return (LONG)(PropertySheet(&psh) != -1);
732 }
733 
734 VOID
736  WORD idDlg,
738 {
739  ZeroMemory(psp, sizeof(PROPSHEETPAGE));
740  psp->dwSize = sizeof(PROPSHEETPAGE);
741  psp->dwFlags = PSP_DEFAULT;
742  psp->hInstance = hApplet;
743  psp->pszTemplate = MAKEINTRESOURCE(idDlg);
744  psp->pfnDlgProc = DlgProc;
745 }
746 
747 
748 /* Control Panel Callback */
750 CPlApplet(HWND hwndCpl,
751  UINT uMsg,
752  LPARAM lParam1,
753  LPARAM lParam2)
754 {
755  switch(uMsg)
756  {
757  case CPL_INIT:
758  return TRUE;
759 
760  case CPL_GETCOUNT:
761  return NUM_APPLETS;
762 
763  case CPL_INQUIRE:
764  {
765  CPLINFO *CPlInfo = (CPLINFO*)lParam2;
766  UINT uAppIndex = (UINT)lParam1;
767 
768  CPlInfo->lData = 0;
769  CPlInfo->idIcon = Applets[uAppIndex].idIcon;
770  CPlInfo->idName = Applets[uAppIndex].idName;
771  CPlInfo->idInfo = Applets[uAppIndex].idDescription;
772  break;
773  }
774 
775  case CPL_DBLCLK:
776  {
777  UINT uAppIndex = (UINT)lParam1;
778  Applets[uAppIndex].AppletProc(hwndCpl,
779  uMsg,
780  lParam1,
781  lParam2);
782  break;
783  }
784 
785  case CPL_STARTWPARMSW:
786  return Applets[(UINT)lParam1].AppletProc(hwndCpl, uMsg, lParam1, lParam2);
787  }
788 
789  return FALSE;
790 }
791 
792 VOID WINAPI
795  LPTSTR lpszCmd,
796  int nCmdShow)
797 {
798  PROPSHEETPAGE psp[1];
799  PROPSHEETHEADER psh;
800  TCHAR Caption[256];
801 
802  DPRINT("ShowAudioPropertySheet()\n");
803 
804  LoadString(hApplet, IDS_CPLNAME, Caption, _countof(Caption));
805 
806  psh.dwSize = sizeof(PROPSHEETHEADER);
808  psh.hwndParent = hwnd;
809  psh.hInstance = hInstance;
810  psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
811  psh.pszCaption = Caption;
812  psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
813  psh.nStartPage = 0;
814  psh.ppsp = psp;
815  psh.pfnCallback = PropSheetProc;
816 
818 
819  PropertySheet(&psh);
820 }
821 
822 VOID WINAPI
825  LPSTR lpszCmd,
826  int nCmdShow)
827 {
828  PROPSHEETPAGE psp[5];
829  PROPSHEETHEADER psh;
830  TCHAR Caption[256];
831 
832  DPRINT("ShowFullControlPanel()\n");
833 
834  LoadString(hApplet, IDS_CPLNAME, Caption, _countof(Caption));
835 
836  psh.dwSize = sizeof(PROPSHEETHEADER);
838  psh.hwndParent = hwnd;
839  psh.hInstance = hInstance;
840  psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
841  psh.pszCaption = Caption;
842  psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
843  psh.nStartPage = 0;
844  psh.ppsp = psp;
845  psh.pfnCallback = PropSheetProc;
846 
852 
853  PropertySheet(&psh);
854 }
855 
856 BOOL WINAPI
858  DWORD dwReason,
859  LPVOID lpReserved)
860 {
861  UNREFERENCED_PARAMETER(lpReserved);
862  switch(dwReason)
863  {
864  case DLL_PROCESS_ATTACH:
865  hApplet = hinstDLL;
866  DisableThreadLibraryCalls(hinstDLL);
867  break;
868  }
869 
870  return TRUE;
871 }
#define StartService
Definition: winsvc.h:585
HWND WINAPI DeviceCreateHardwarePageEx(HWND hWndParent, LPGUID lpGuids, UINT uNumberOfGuids, HWPAGE_DISPLAYMODE DisplayMode)
#define DIF_SELECTDEVICE
Definition: setupapi.h:120
Definition: mmsys.c:27
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
WORD idDlg
Definition: desk.c:110
#define MAKEINTRESOURCE
Definition: winuser.h:591
HWPAGE_DISPLAYMODE
Definition: mmsys.c:23
#define IN
Definition: typedefs.h:39
VOID InstallSystemSoundSchemeNames(HKEY hKey)
Definition: mmsys.c:224
VOID InstallDefaultSystemSoundScheme(HKEY hRootKey)
Definition: mmsys.c:241
static HICON
Definition: imagelist.c:84
#define REFIID
Definition: guiddef.h:118
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
enum HWPAGE_DISPLAYMODE * PHWPAGE_DISPLAYMODE
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
#define UPDATEDRIVERFORPLUGANDPLAYDEVICES
Definition: mmsys.c:99
Definition: cpl.h:24
#define INF_STYLE_WIN4
Definition: infsupp.h:41
UINT LocalizedResId
Definition: mmsys.c:34
#define ERROR_SUCCESS
Definition: deptool.c:10
#define SC_MANAGER_CONNECT
Definition: winsvc.h:14
INT_PTR CALLBACK AudioDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: audio.c:241
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
static EVENT_LABEL_ITEM EventLabels[]
Definition: mmsys.c:45
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *class, LPCWSTR enumstr, HWND parent, DWORD flags)
Definition: devinst.c:2288
DWORD MMSYS_SelectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:603
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
REFIID riid
Definition: precomp.h:44
uint16_t * PWSTR
Definition: typedefs.h:56
LPWSTR LabelName
Definition: mmsys.c:40
#define REFCLSID
Definition: guiddef.h:117
#define INSTALLFLAG_FORCE
Definition: newdev.h:34
#define HKEY_CURRENT_USER
Definition: winreg.h:11
LONG APIENTRY MmSysApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
Definition: mmsys.c:692
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:3007
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
int idName
Definition: hotplug.h:36
int idIcon
Definition: hotplug.h:35
#define CALLBACK
Definition: compat.h:35
REFIID LPVOID * ppv
Definition: atlbase.h:39
int idInfo
Definition: cpl.h:27
#define IDD_VOLUME
Definition: resource.h:19
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: mmsys.c:675
VOID WINAPI mmseRunOnceW(HWND hwnd, HINSTANCE hInstance, LPWSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:167
#define INVALID_HANDLE_VALUE
Definition: compat.h:590
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: mmsys.c:120
#define ZeroMemory
Definition: winbase.h:1664
VOID WINAPI mmseRunOnce(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:185
VOID InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
Definition: mmsys.c:735
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
Definition: prsht.h:327
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
UINT_PTR WPARAM
Definition: windef.h:207
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4020
#define SERVICE_ALL_ACCESS
Definition: winsvc.h:62
#define swprintf
Definition: precomp.h:40
int32_t INT_PTR
Definition: typedefs.h:64
#define PSH_USECALLBACK
Definition: prsht.h:48
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
Definition: parser.c:1229
char * LPSTR
Definition: xmlstorage.h:182
#define BOOL
Definition: nt_native.h:43
LPWSTR DefaultName
Definition: mmsys.c:33
int32_t INT
Definition: typedefs.h:58
#define OpenService
Definition: winsvc.h:576
WPARAM wParam
Definition: combotst.c:138
#define IDD_AUDIO
Definition: resource.h:21
CHAR * LPTSTR
Definition: xmlstorage.h:192
BOOL(WINAPI * UpdateDriverForPlugAndPlayDevicesProto)(IN OPTIONAL HWND hwndParent, IN LPCTSTR HardwareId, IN LPCTSTR FullInfPath, IN DWORD InstallFlags, OUT OPTIONAL PBOOL bRebootRequired)
Definition: mmsys.c:92
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
Definition: infsupp.c:43
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
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
int idIcon
Definition: cpl.h:25
#define SERVICE_NO_CHANGE
Definition: winsvc.h:20
int idDescription
Definition: hotplug.h:37
#define CPL_DBLCLK
Definition: cpl.h:16
HWPAGE_DISPLAYMODE
Definition: main.h:22
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:683
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA_W
DWORD dwReason
Definition: misc.cpp:154
#define ChangeServiceConfig
Definition: winsvc.h:567
HINSTANCE hInstance
Definition: charmap.c:20
#define IDS_CPLNAME
Definition: resource.h:8
VOID WINAPI mmseRunOnceA(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:176
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:53
#define PSH_USEICONID
Definition: prsht.h:42
#define FALSE
Definition: types.h:117
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
Definition: devinst.c:1205
#define SP_COPY_NEWER
Definition: setupapi.h:478
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
Definition: path.c:294
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL IsSoftwareBusPnpEnumeratorInstalled()
Definition: mmsys.c:324
long LONG
Definition: pedump.c:60
#define NUM_APPLETS
Definition: mmsys.c:100
#define DIF_REGISTERDEVICE
Definition: setupapi.h:144
#define GENERIC_WRITE
Definition: nt_native.h:90
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
Definition: scm.c:580
#define LoadLibraryW(x)
Definition: compat.h:606
PVOID pBuffer
#define PROPSHEETHEADER
Definition: prsht.h:392
static HWND hwndParent
Definition: cryptui.c:300
_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
#define IDS_REACTOS_LOGOFF
Definition: resource.h:81
LONG_PTR LPARAM
Definition: windef.h:208
HINSTANCE hApplet
Definition: mmsys.c:103
Definition: bufpool.h:45
#define REG_CREATED_NEW_KEY
Definition: nt_native.h:1084
const APPLET Applets[NUM_APPLETS]
Definition: mmsys.c:106
const char * LPCSTR
Definition: xmlstorage.h:183
BOOL * PBOOL
Definition: windef.h:161
static const WCHAR ClassGUID[]
Definition: devclass.c:30
DWORD MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:443
VOID WINAPI ShowAudioPropertySheet(HWND hwnd, HINSTANCE hInstance, LPTSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:793
INT_PTR CALLBACK SoundsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: sounds.c:1091
#define IDS_CPLDESCRIPTION
Definition: resource.h:9
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
#define DIF_INSTALLDEVICE
Definition: setupapi.h:121
#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
char TCHAR
Definition: xmlstorage.h:189
#define OpenSCManager
Definition: winsvc.h:575
#define PSP_DEFAULT
Definition: prsht.h:22
#define FreeLibrary(x)
Definition: compat.h:607
VOID WINAPI ShowDriverSettingsAfterForkW(HWND hwnd, HINSTANCE hInstance, LPWSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:130
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LPWSTR DefaultName
Definition: mmsys.c:41
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
DWORD MMSYS_DetectDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:609
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define SetupDiCreateDeviceInfo
Definition: setupapi.h:2579
#define PSH_PROPTITLE
Definition: prsht.h:40
LONG HRESULT
Definition: typedefs.h:79
_In_ WDFCOLLECTION _In_ ULONG Index
APPLET_PROC AppletProc
Definition: hotplug.h:38
#define _countof(array)
Definition: sndvol32.h:68
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2889
LONG CALLBACK CPlApplet(HWND hwndCpl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
Definition: mmsys.c:750
#define MAX_PATH
Definition: compat.h:34
#define WINAPI
Definition: msvc.h:6
#define IDD_HARDWARE
Definition: resource.h:28
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W * PSP_DEVICE_INTERFACE_DETAIL_DATA_W
#define IDI_CPLICON
Definition: resource.h:4
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved)
Definition: mmsys.c:857
DWORD MMSYS_RemoveDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:591
#define SetupDiSetDeviceRegistryProperty
Definition: setupapi.h:2620
#define SPDRP_HARDWAREID
Definition: setupapi.h:508
#define CPL_STARTWPARMSW
Definition: cpl.h:21
#define CPL_INIT
Definition: cpl.h:12
GLbitfield flags
Definition: glext.h:7161
#define IDS_REACTOS_DEFAULT_SCHEME
Definition: resource.h:83
VOID WINAPI ShowFullControlPanel(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:823
static VIDEODISPLAYMODE DisplayMode
Definition: pcvideo.c:117
#define wcsicmp
Definition: compat.h:15
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:1327
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define CPL_INQUIRE
Definition: cpl.h:14
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
#define IDD_SOUNDS
Definition: resource.h:20
#define IDD_VOICE
Definition: resource.h:22
void WINAPI SetupTermDefaultQueueCallback(PVOID context)
Definition: queue.c:1704
#define SPINST_ALL
Definition: setupapi.h:601
#define GENERIC_READ
Definition: compat.h:135
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
VOID InstallSystemSoundScheme()
Definition: mmsys.c:282
SC_HANDLE hSCManager
Definition: sc.c:12
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define GetFileAttributes
Definition: winbase.h:3671
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2872
#define IDS_REACTOS_LOGON
Definition: resource.h:82
BOOL WINAPI ShowMMCPLPropertySheet(HWND hwnd, LPCSTR pszPropSheet, LPSTR pszName, LPSTR pszCaption)
Definition: mmsys.c:157
#define S_OK
Definition: intsafe.h:52
#define lstrlen
Definition: winbase.h:3732
#define STATIC_BUSID_SoftwareDeviceEnumerator
Definition: swenum.h:25
PRTL_UNICODE_STRING_BUFFER Path
#define PSCB_INITIALIZED
Definition: prsht.h:75
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
BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF Inf, PCWSTR SectionName, DWORD Flags)
Definition: install.c:1612
LPWSTR FileName
Definition: mmsys.c:35
HICON hIcon
Definition: msconfig.c:44
FxAutoRegKey hKey
#define PSH_PROPSHEETPAGE
Definition: prsht.h:43
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
PVOID WINAPI SetupInitDefaultQueueCallback(HWND owner)
Definition: queue.c:1677
DWORD InstallSoftwareBusPnpEnumerator(LPWSTR InfPath, LPCWSTR HardwareIdList)
Definition: mmsys.c:368
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
Definition: devinst.c:2776
VOID WINAPI ShowDriverSettingsAfterFork(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:148
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define DPRINT1
Definition: precomp.h:8
#define SERVICE_AUTO_START
Definition: cmtypes.h:977
LPWSTR LabelName
Definition: mmsys.c:32
INT_PTR CALLBACK VoiceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: voice.c:15
#define DIGCF_DEVICEINTERFACE
Definition: setupapi.h:174
#define ERROR_DI_DO_DEFAULT
Definition: setupapi.h:310
struct tagContext Context
Definition: acpixf.h:1034
VOID InstallSystemSoundLabels(HKEY hKey)
Definition: mmsys.c:203
#define OUT
Definition: typedefs.h:40
#define DIF_ALLOW_INSTALL
Definition: setupapi.h:143
#define PropertySheet
Definition: prsht.h:400
#define DIF_REMOVE
Definition: setupapi.h:124
struct _SP_DEVICE_INTERFACE_DATA SP_DEVICE_INTERFACE_DATA
unsigned int ULONG
Definition: retypes.h:1
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
static SYSTEM_SCHEME_ITEM SystemSchemes[]
Definition: mmsys.c:67
VOID WINAPI ShowDriverSettingsAfterForkA(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmd, int nCmdShow)
Definition: mmsys.c:139
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
#define GetProcAddress(x, y)
Definition: compat.h:612
#define DIF_SELECTBESTCOMPATDRV
Definition: setupapi.h:142
DWORD MMSYS_SelectBestCompatDRV(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:615
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
static INT_PTR CALLBACK HardwareDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: mmsys.c:647
DWORD MMSYS_AllowInstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
Definition: mmsys.c:597
#define ERROR_GEN_FAILURE
Definition: winerror.h:134
UINT DI_FUNCTION
Definition: setupapi.h:672
#define DPRINT
Definition: sndvol32.h:71
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define DIF_DETECT
Definition: setupapi.h:134
#define SetupDiGetINFClass
Definition: setupapi.h:2609
HRESULT WINAPI DllCanUnloadNow(VOID)
Definition: mmsys.c:113
BOOL WINAPI MediaPropPageProvider(LPVOID Info, LPFNADDPROPSHEETPAGE PropSheetPage, LPARAM lParam)
Definition: mmsys.c:194
#define WM_INITDIALOG
Definition: winuser.h:1722
LPARAM lParam
Definition: combotst.c:139
DLGPROC DlgProc
Definition: desk.c:111
#define HeapFree(x, y, z)
Definition: compat.h:594
#define CPL_GETCOUNT
Definition: cpl.h:13
#define LoadString
Definition: winuser.h:5795
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
INT_PTR CALLBACK VolumeDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: volume.c:417
#define PROPSHEETPAGE
Definition: prsht.h:389
DWORD WINAPI MediaClassInstaller(IN DI_FUNCTION diFunction, IN HDEVINFO hDevInfo, IN PSP_DEVINFO_DATA pspDevInfoData OPTIONAL)
Definition: mmsys.c:621
#define APIENTRY
Definition: api.h:79
#define BufferSize
Definition: mmc.h:75
#define ICON_BIG
Definition: tnclass.cpp:51
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251
Definition: hotplug.h:33
HMODULE hModule
Definition: animate.c:44
#define DIGCF_PRESENT
Definition: setupapi.h:171
#define DICD_GENERATE_ID
Definition: setupapi.h:110
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define REG_SZ
Definition: layer.c:22
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68