ReactOS  0.4.15-dev-994-ga9f6032
devprblm.cpp
Go to the documentation of this file.
1 /*
2  * ReactOS Device Manager Applet
3  * Copyright (C) 2004 - 2005 ReactOS Team
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 /*
20  * PROJECT: ReactOS devmgr.dll
21  * FILE: lib/devmgr/devprblm.c
22  * PURPOSE: ReactOS Device Manager
23  * PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com>
24  * UPDATE HISTORY:
25  * 04-04-2004 Created
26  */
27 
28 #include "precomp.h"
29 #include "properties.h"
30 #include "resource.h"
31 
32 
33 BOOL
35  IN HDEVINFO hDevInfo,
36  IN PSP_DEVINFO_DATA DevInfoData,
37  IN HMACHINE hMachine OPTIONAL)
38 {
39  WCHAR szDeviceInstanceId[256];
40  CONFIGRET cr;
41  ULONG Status, ProblemNumber;
42  DWORD dwReboot;
43  BOOL Ret = FALSE;
44 
45  /* Get the device instance id */
46  if (!SetupDiGetDeviceInstanceId(hDevInfo,
47  DevInfoData,
48  szDeviceInstanceId,
49  256,
50  NULL))
51  return FALSE;
52 
54  &ProblemNumber,
55  DevInfoData->DevInst,
56  0,
57  hMachine);
58  if (cr == CR_SUCCESS && (Status & DN_HAS_PROBLEM))
59  {
60  switch (ProblemNumber)
61  {
63  {
64  /* FIXME - only if it's not a root bus devloader */
65  /* FIXME - display the update driver wizard */
66  break;
67  }
68 
73  case CM_PROB_LIAR:
75  {
76  /* FIXME - display the update driver wizard */
77  InstallDevInst(hWndParent, szDeviceInstanceId, TRUE, &dwReboot);
78  break;
79  }
80 
84  {
85  /* FIXME - display the conflict wizard */
86  break;
87  }
88 
90  case CM_PROB_REINSTALL:
92  {
93  /* FIXME - display the driver (re)installation wizard */
94  InstallDevInst(hWndParent, szDeviceInstanceId, TRUE, &dwReboot);
95  break;
96  }
97 
99  {
100  /* FIXME - 4 cases:
101  1) if it's a missing system devloader:
102  - fail
103  2) if it's not a system devloader but still missing:
104  - display the driver reinstallation wizard
105  3) if it's not a system devloader but the file can be found:
106  - display the update driver wizard
107  4) if it's a missing or empty software key
108  - display the update driver wizard
109  */
110  break;
111  }
112 
120  case CM_PROB_PHANTOM:
121  /* FIXME - do nothing */
122  break;
123 
126  /* FIXME - display search hardware wizard */
127  break;
128 
131  case CM_PROB_MOVED:
132  case CM_PROB_TOO_EARLY:
134  /* FIXME - reboot computer */
135  break;
136 
137  case CM_PROB_REGISTRY:
138  /* FIXME - check registry */
139  break;
140 
141  case CM_PROB_DISABLED:
142  {
143  /* FIXME - if device was disabled by user display the "Enable Device" wizard,
144  otherwise Troubleshoot because the device was disabled by the system */
145  break;
146  }
147 
149  {
150  /* FIXME - if it's a graphics adapter:
151  - if it's a a secondary adapter and the main adapter
152  couldn't be found
153  - do nothing or default action
154  - else
155  - display the Properties
156  - else
157  - Update driver
158  */
159  break;
160  }
161 
162  case CM_PROB_FAILED_ADD:
163  {
164  /* FIXME - display the properties of the sub-device */
165  break;
166  }
167 
177  case CM_PROB_HALTED:
181  default:
182  {
183  /* FIXME - troubleshoot the device */
184  break;
185  }
186  }
187  }
188 
189  return Ret;
190 }
191 
192 
193 /***************************************************************************
194  * NAME EXPORTED
195  * DeviceProblemWizardA
196  *
197  * DESCRIPTION
198  * Calls the device problem wizard
199  *
200  * ARGUMENTS
201  * hWndParent: Handle to the parent window
202  * lpMachineName: Machine Name, NULL is the local machine
203  * lpDeviceID: Specifies the device, also see NOTEs
204  *
205  * RETURN VALUE
206  * TRUE: if no errors occured
207  * FALSE: if errors occured
208  *
209  * @implemented
210  */
211 BOOL
212 WINAPI
214  IN LPCSTR lpMachineName OPTIONAL,
215  IN LPCSTR lpDeviceID)
216 {
217  LPWSTR lpMachineNameW = NULL;
218  LPWSTR lpDeviceIDW = NULL;
219  BOOL Ret = FALSE;
220 
221  if (lpMachineName != NULL)
222  {
223  if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
224  CP_ACP)))
225  {
226  goto Cleanup;
227  }
228  }
229  if (lpDeviceID != NULL)
230  {
231  if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
232  CP_ACP)))
233  {
234  goto Cleanup;
235  }
236  }
237 
239  lpMachineNameW,
240  lpDeviceIDW);
241 
242 Cleanup:
243  if (lpMachineNameW != NULL)
244  {
246  0,
247  lpMachineNameW);
248  }
249  if (lpDeviceIDW != NULL)
250  {
252  0,
253  lpDeviceIDW);
254  }
255 
256  return Ret;
257 }
258 
259 
260 /***************************************************************************
261  * NAME EXPORTED
262  * DeviceProblemWizardW
263  *
264  * DESCRIPTION
265  * Calls the device problem wizard
266  *
267  * ARGUMENTS
268  * hWndParent: Handle to the parent window
269  * lpMachineName: Machine Name, NULL is the local machine
270  * lpDeviceID: Specifies the device, also see NOTEs
271  *
272  * RETURN VALUE
273  * TRUE: if no errors occured
274  * FALSE: if errors occured
275  *
276  * @unimplemented
277  */
278 BOOL
279 WINAPI
281  IN LPCWSTR lpMachineName OPTIONAL,
282  IN LPCWSTR lpDeviceID)
283 {
284  HDEVINFO hDevInfo;
285  SP_DEVINFO_DATA DevInfoData;
286  HINSTANCE hComCtl32;
287  CONFIGRET cr;
288  HMACHINE hMachine;
289  BOOL Ret = FALSE;
290 
291  if (lpDeviceID == NULL)
292  {
294  return FALSE;
295  }
296 
297  /* dynamically load comctl32 */
298  hComCtl32 = LoadAndInitComctl32();
299  if (hComCtl32 != NULL)
300  {
302  hWndParent,
303  lpMachineName,
304  NULL);
305  if (hDevInfo != INVALID_HANDLE_VALUE)
306  {
307  cr = CM_Connect_Machine(lpMachineName,
308  &hMachine);
309  if (cr == CR_SUCCESS)
310  {
311  DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
312  if (SetupDiOpenDeviceInfo(hDevInfo,
313  lpDeviceID,
314  hWndParent,
315  0,
316  &DevInfoData))
317  {
319  hDevInfo,
320  &DevInfoData,
321  hMachine);
322  }
323 
324  CM_Disconnect_Machine(hMachine);
325  }
326 
328  }
329 
330  FreeLibrary(hComCtl32);
331  }
332 
333  return Ret;
334 }
335 
336 
338 {
350  IDS_DEV_LIAR,
359  IDS_UNKNOWN, /* CM_PROB_VXDLDR, not used on NT */
390 };
391 
392 
393 /***************************************************************************
394  * NAME EXPORTED
395  * DeviceProblemTextA
396  *
397  * DESCRIPTION
398  * Gets the problem text from a problem number displayed in the properties dialog
399  *
400  * ARGUMENTS
401  * hMachine: Machine handle or NULL for the local machine
402  * DevInst: Device instance handle
403  * uProblemId: Specifies the problem ID
404  * lpString: Pointer to a buffer where the string is to be copied to. If the buffer
405  * is too small, the return value is the required string length in characters,
406  * excluding the NULL-termination.
407  * uMaxString: Size of the buffer in characters
408  *
409  * RETURN VALUE
410  * The return value is the length of the string in characters.
411  * It returns 0 if an error occured.
412  *
413  * @implemented
414  */
415 UINT
416 WINAPI
418  IN DEVINST dnDevInst,
419  IN ULONG uProblemId,
420  OUT LPSTR lpString,
421  IN UINT uMaxString)
422 {
423  LPWSTR lpBuffer = NULL;
424  UINT Ret = 0;
425 
426  if (uMaxString != 0)
427  {
429  0,
430  (uMaxString + 1) * sizeof(WCHAR));
431  if (lpBuffer == NULL)
432  {
434  return 0;
435  }
436  }
437 
438  Ret = DeviceProblemTextW(hMachine,
439  dnDevInst,
440  uProblemId,
441  lpBuffer,
442  uMaxString);
443 
444  if (lpBuffer != NULL)
445  {
446  if (Ret)
447  {
449  0,
450  lpBuffer,
451  (int)Ret,
452  lpString,
453  (int)uMaxString,
454  NULL,
455  NULL);
456  }
457 
459  0,
460  lpBuffer);
461  }
462 
463  return Ret;
464 }
465 
466 
467 /***************************************************************************
468  * NAME EXPORTED
469  * DeviceProblemTextW
470  *
471  * DESCRIPTION
472  * Gets the problem text from a problem number displayed in the properties dialog
473  *
474  * ARGUMENTS
475  * hMachine: Machine handle or NULL for the local machine
476  * DevInst: Device instance handle
477  * uProblemId: Specifies the problem ID
478  * lpString: Pointer to a buffer where the string is to be copied to. If the buffer
479  * is too small, the return value is the required string length in characters,
480  * excluding the NULL-termination.
481  * uMaxString: Size of the buffer in characters
482  *
483  * RETURN VALUE
484  * The return value is the length of the string in characters.
485  * It returns 0 if an error occured.
486  *
487  * @implemented
488  */
489 UINT
490 WINAPI
492  IN DEVINST dnDevInst,
493  IN ULONG uProblemId,
494  OUT LPWSTR lpString,
495  IN UINT uMaxString)
496 {
497  UINT MessageId = IDS_UNKNOWN;
498  UINT Ret = 0;
499 
500  if (uProblemId < sizeof(ProblemStringId) / sizeof(ProblemStringId[0]))
501  MessageId = ProblemStringId[uProblemId];
502 
503  if (uProblemId == 0)
504  {
505  if (uMaxString != 0)
506  {
507  Ret = LoadString(hDllInstance,
508  MessageId,
509  lpString,
510  (int)uMaxString);
511  }
512  else
513  {
515  MessageId);
516  }
517  }
518  else
519  {
520  LPWSTR szProblem;
521  WCHAR szInfo[] = L"FIXME";
522  DWORD dwRet;
523  BOOL AdvFormat = FALSE;
524  UINT StringIDs[] =
525  {
526  MessageId,
527  IDS_DEVCODE,
528  };
529 
530  switch (uProblemId)
531  {
533  {
534  /* FIXME - if not a root bus devloader then use IDS_DEV_DEVLOADER_FAILED2 */
535  /* FIXME - get the type string (ie. ISAPNP, PCI or BIOS for root bus devloaders,
536  or FLOP, ESDI, SCSI, etc for others */
537  AdvFormat = TRUE;
538  break;
539  }
540 
542  {
543  /* FIXME - 4 cases:
544  1) if it's a missing system devloader:
545  - get the system devloader name
546  2) if it's not a system devloader but still missing:
547  - get the devloader name (file name?)
548  3) if it's not a system devloader but the file can be found:
549  - use IDS_DEV_DEVLOADER_NOT_FOUND2
550  4) if it's a missing or empty software key
551  - use IDS_DEV_DEVLOADER_NOT_FOUND3
552  - AdvFormat = FALSE!
553  */
554  AdvFormat = TRUE;
555  break;
556  }
557 
559  /* FIXME - if the device isn't enumerated by the BIOS/ACPI use IDS_DEV_INVALID_DATA2 */
560  AdvFormat = FALSE;
561  break;
562 
564  /* FIXME - get resource type (IRQ, DMA, Memory or I/O) */
565  AdvFormat = TRUE;
566  break;
567 
569  /* FIXME - get the .inf file name */
570  AdvFormat = TRUE;
571  break;
572 
573  case CM_PROB_DISABLED:
574  /* FIXME - if the device was disabled by the system use IDS_DEV_DISABLED2 */
575  break;
576 
577  case CM_PROB_FAILED_ADD:
578  /* FIXME - get the name of the sub-device with the error */
579  AdvFormat = TRUE;
580  break;
581  }
582 
583  if (AdvFormat)
584  {
585  StringIDs[1] = IDS_DEVCODE2;
587  StringIDs,
588  sizeof(StringIDs) / sizeof(StringIDs[0]),
589  &szProblem,
590  szInfo,
591  uProblemId);
592  }
593  else
594  {
596  StringIDs,
597  sizeof(StringIDs) / sizeof(StringIDs[0]),
598  &szProblem,
599  uProblemId);
600  }
601 
602  if (dwRet != 0)
603  {
604  if (uMaxString != 0 && uMaxString >= dwRet)
605  {
606  wcscpy(lpString,
607  szProblem);
608  }
609 
610  LocalFree((HLOCAL)szProblem);
611 
612  Ret = dwRet;
613  }
614  }
615 
616  return Ret;
617 }
#define CM_PROB_HALTED
Definition: cfg.h:74
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define IDS_DEV_NEED_RESTART
Definition: resource.h:149
BOOL WINAPI DeviceProblemWizardW(IN HWND hWndParent OPTIONAL, IN LPCWSTR lpMachineName OPTIONAL, IN LPCWSTR lpDeviceID)
Definition: devprblm.cpp:280
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3584
#define IN
Definition: typedefs.h:39
#define IDS_DEV_DEVICE_NOT_THERE
Definition: resource.h:161
#define IDS_DEV_DRIVER_FAILED_LOAD
Definition: resource.h:176
#define IDS_DEV_PHANTOM
Definition: resource.h:182
#define CM_PROB_REENUMERATION
Definition: cfg.h:45
#define WideCharToMultiByte
Definition: compat.h:111
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define IDS_DEV_HALTED
Definition: resource.h:181
#define IDS_DEV_DEVLOADER_NOT_FOUND
Definition: resource.h:140
#define IDS_DEV_NORMAL_CONFLICT
Definition: resource.h:147
#define IDS_DEV_FAILED_DRIVER_ENTRY
Definition: resource.h:174
#define CM_PROB_HELD_FOR_EJECT
Definition: cfg.h:77
#define TRUE
Definition: types.h:120
#define CM_PROB_NOT_VERIFIED
Definition: cfg.h:43
#define CM_PROB_PHANTOM
Definition: cfg.h:75
#define CM_PROB_LACKED_ARBITRATOR
Definition: cfg.h:35
CONFIGRET WINAPI CM_Disconnect_Machine(_In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1855
#define CP_ACP
Definition: compat.h:109
#define CM_PROB_OUT_OF_MEMORY
Definition: cfg.h:33
#define IDS_DEV_FAILED_ADD
Definition: resource.h:168
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define INVALID_HANDLE_VALUE
Definition: compat.h:479
#define CM_PROB_FAILED_START
Definition: cfg.h:40
#define IDS_DEV_IRQ_TRANSLATION_FAILED
Definition: resource.h:173
#define IDS_DEV_LACKED_ARBITRATOR
Definition: resource.h:137
#define CM_PROB_FAILED_POST_START
Definition: cfg.h:73
#define IDS_DEV_HARDWARE_DISABLED
Definition: resource.h:166
#define CM_PROB_DUPLICATE_DEVICE
Definition: cfg.h:72
#define CM_PROB_FAILED_DRIVER_ENTRY
Definition: cfg.h:67
char * LPSTR
Definition: xmlstorage.h:182
#define IDS_DEV_TOO_EARLY
Definition: resource.h:163
#define IDS_DEV_DISABLED_SERVICE
Definition: resource.h:169
#define CM_PROB_REGISTRY_TOO_LARGE
Definition: cfg.h:79
#define CM_PROB_WILL_BE_REMOVED
Definition: cfg.h:51
#define IDS_DEVCODE2
Definition: resource.h:109
#define IDS_DEV_REINSTALL
Definition: resource.h:153
#define IDS_DEV_TRANSLATION_FAILED
Definition: resource.h:170
DWORD LoadAndFormatStringsCat(IN HINSTANCE hInstance, IN UINT *uID, IN UINT nIDs, OUT LPWSTR *lpTarget,...)
Definition: misc.cpp:177
#define IDS_DEV_OUT_OF_MEMORY
Definition: resource.h:135
#define IDS_DEV_NO_SOFTCONFIG
Definition: resource.h:171
#define CM_PROB_PARTIAL_LOG_CONF
Definition: cfg.h:46
#define IDS_DEV_NOT_CONFIGURED
Definition: resource.h:132
#define IDS_DEVCODE
Definition: resource.h:108
#define CM_PROB_DISABLED
Definition: cfg.h:52
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define CM_PROB_INVALID_DATA
Definition: cfg.h:39
#define CM_PROB_NO_SOFTCONFIG
Definition: cfg.h:64
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:173
#define CR_SUCCESS
Definition: cfgmgr32.h:842
#define IDS_DEV_SETPROPERTIES_FAILED
Definition: resource.h:187
#define IDS_DEV_HELD_FOR_EJECT
Definition: resource.h:184
smooth NULL
Definition: ftsmooth.c:416
UINT WINAPI DeviceProblemTextW(IN HMACHINE hMachine OPTIONAL, IN DEVINST dnDevInst, IN ULONG uProblemId, OUT LPWSTR lpString, IN UINT uMaxString)
Definition: devprblm.cpp:491
#define CM_PROB_NORMAL_CONFLICT
Definition: cfg.h:42
#define IDS_DEV_DEVLOADER_NOT_READY
Definition: resource.h:158
HINSTANCE LoadAndInitComctl32(VOID)
Definition: misc.cpp:1106
const char * LPCSTR
Definition: xmlstorage.h:183
#define SetupDiCreateDeviceInfoListEx
Definition: setupapi.h:2575
#define IDS_UNKNOWN
Definition: resource.h:7
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
static HINSTANCE hDllInstance
Definition: clb.c:30
#define CM_PROB_DEVLOADER_NOT_FOUND
Definition: cfg.h:38
#define IDS_DEV_DISABLED
Definition: resource.h:156
#define CM_PROB_LIAR
Definition: cfg.h:41
#define IDS_DEV_NOT_VERIFIED
Definition: resource.h:148
#define IDS_DEV_FAILED_POST_START
Definition: resource.h:180
#define CM_PROB_HARDWARE_DISABLED
Definition: cfg.h:59
#define IDS_DEV_CANT_SHARE_IRQ
Definition: resource.h:167
#define FreeLibrary(x)
Definition: compat.h:496
static const UINT ProblemStringId[NUM_CM_PROB]
Definition: devprblm.cpp:337
#define GetProcessHeap()
Definition: compat.h:484
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CM_PROB_DISABLED_SERVICE
Definition: cfg.h:62
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2898
#define IDS_DEV_UNKNOWN_RESOURCE
Definition: resource.h:152
#define CM_PROB_TRANSLATION_FAILED
Definition: cfg.h:63
#define IDS_DEV_WILL_BE_REMOVED
Definition: resource.h:155
#define WINAPI
Definition: msvc.h:6
#define DN_HAS_PROBLEM
Definition: cfg.h:128
#define IDS_DEV_BIOS_TABLE
Definition: resource.h:172
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:500
BOOL WINAPI InstallDevInst(IN HWND hWndParent, IN LPCWSTR InstanceId, IN BOOL bUpdate, OUT LPDWORD lpReboot)
Definition: stubs.cpp:24
#define IDS_DEV_NO_VALID_LOG_CONF
Definition: resource.h:164
#define IDS_DEV_MOVED
Definition: resource.h:162
#define CM_PROB_CANT_SHARE_IRQ
Definition: cfg.h:60
#define CM_PROB_REINSTALL
Definition: cfg.h:48
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
Status
Definition: gdiplustypes.h:24
static const WCHAR L[]
Definition: oid.c:1250
#define SetupDiGetDeviceInstanceId
Definition: setupapi.h:2595
LPWSTR ConvertMultiByteToUnicode(IN LPCSTR lpMultiByteStr, IN UINT uCodePage)
Definition: misc.cpp:239
#define CM_PROB_DRIVER_FAILED_LOAD
Definition: cfg.h:69
#define IDS_DEV_FAILED_FILTER
Definition: resource.h:139
#define IDS_DEV_PARTIAL_LOG_CONF
Definition: resource.h:151
#define IDS_DEV_INVALID_DATA
Definition: resource.h:143
#define IDS_DEV_BOOT_CONFIG_CONFLICT
Definition: resource.h:138
static const WCHAR Cleanup[]
Definition: register.c:80
#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD
Definition: cfg.h:68
#define CM_PROB_UNKNOWN_RESOURCE
Definition: cfg.h:47
#define IDS_DEV_DEVLOADER_FAILED
Definition: resource.h:133
#define IDS_DEV_LEGACY_SERVICE_NO_DEVICES
Definition: resource.h:178
#define CM_PROB_NEED_RESTART
Definition: cfg.h:44
BOOL ShowDeviceProblemWizard(IN HWND hWndParent OPTIONAL, IN HDEVINFO hDevInfo, IN PSP_DEVINFO_DATA DevInfoData, IN HMACHINE hMachine OPTIONAL)
Definition: devprblm.cpp:34
#define CM_PROB_TOO_EARLY
Definition: cfg.h:56
DWORD DEVINST
Definition: cfgmgr32.h:76
#define CM_PROB_DEVLOADER_NOT_READY
Definition: cfg.h:53
#define IDS_DEV_LIAR
Definition: resource.h:146
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define CM_PROB_DEVICE_NOT_THERE
Definition: cfg.h:54
#define IDS_DEV_ENTRY_IS_WRONG_TYPE
Definition: resource.h:136
unsigned int UINT
Definition: ndis.h:50
#define CM_PROB_SYSTEM_SHUTDOWN
Definition: cfg.h:76
#define CM_PROB_LEGACY_SERVICE_NO_DEVICES
Definition: cfg.h:71
#define CM_PROB_DRIVER_BLOCKED
Definition: cfg.h:78
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
#define IDS_DEV_DUPLICATE_DEVICE
Definition: resource.h:179
#define CM_PROB_FAILED_INSTALL
Definition: cfg.h:58
#define IDS_DEV_REGISTRY
Definition: resource.h:154
#define IDS_DEV_DRIVER_BLOCKED
Definition: resource.h:185
#define OUT
Definition: typedefs.h:40
#define IDS_DEV_DRIVER_SERVICE_KEY_INVALID
Definition: resource.h:177
#define CM_PROB_MOVED
Definition: cfg.h:55
#define CM_PROB_DRIVER_SERVICE_KEY_INVALID
Definition: cfg.h:70
#define IDS_DEV_REGISTRY_TOO_LARGE
Definition: resource.h:186
unsigned int ULONG
Definition: retypes.h:1
#define CM_PROB_FAILED_FILTER
Definition: cfg.h:37
#define CM_PROB_BOOT_CONFIG_CONFLICT
Definition: cfg.h:36
BOOL WINAPI DeviceProblemWizardA(IN HWND hWndParent OPTIONAL, IN LPCSTR lpMachineName OPTIONAL, IN LPCSTR lpDeviceID)
Definition: devprblm.cpp:213
#define IDS_DEV_FAILED_INSTALL
Definition: resource.h:165
#define IDS_DEV_NO_PROBLEM
Definition: resource.h:131
#define IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD
Definition: resource.h:175
#define CM_PROB_ENTRY_IS_WRONG_TYPE
Definition: cfg.h:34
#define CM_PROB_FAILED_ADD
Definition: cfg.h:61
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define SetupDiOpenDeviceInfo
Definition: setupapi.h:2609
#define CM_PROB_DEVLOADER_FAILED
Definition: cfg.h:32
#define CM_Connect_Machine
Definition: cfgmgr32.h:1074
UINT WINAPI DeviceProblemTextA(IN HMACHINE hMachine OPTIONAL, IN DEVINST dnDevInst, IN ULONG uProblemId, OUT LPSTR lpString, IN UINT uMaxString)
Definition: devprblm.cpp:417
INT LengthOfStrResource(IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:23
#define HeapFree(x, y, z)
Definition: compat.h:483
#define CM_PROB_REGISTRY
Definition: cfg.h:49
#define LoadString
Definition: winuser.h:5794
#define NUM_CM_PROB
Definition: cfg.h:91
#define IDS_DEV_REENUMERATION
Definition: resource.h:150
#define CM_PROB_NO_VALID_LOG_CONF
Definition: cfg.h:57
#define CM_PROB_IRQ_TRANSLATION_FAILED
Definition: cfg.h:66
#define IDS_DEV_FAILED_START
Definition: resource.h:145
#define IDS_DEV_SYSTEM_SHUTDOWN
Definition: resource.h:183
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68