1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _CFGMGR32_H_
7 #define _CFGMGR32_H_
8 
9 #include <_mingw_unicode.h>
10 #include <cfg.h>
11 #include <guiddef.h>
12 #include <apisetcconv.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18   typedef CONST VOID *PCVOID;
19 
20 #define MAX_DEVICE_ID_LEN 200
21 #define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
22 #define MAX_GUID_STRING_LEN 39
23 #define MAX_CLASS_NAME_LEN 32
24 #define MAX_PROFILE_LEN 80
25 #define MAX_CONFIG_VALUE 9999
26 #define MAX_INSTANCE_VALUE 9999
27 #define MAX_MEM_REGISTERS 9
28 #define MAX_IO_PORTS 20
29 #define MAX_IRQS 7
30 #define MAX_DMA_CHANNELS 7
31 
32 #define DWORD_MAX 0xFFFFFFFF
33 #define DWORDLONG_MAX 0xFFFFFFFFFFFFFFFF
34 
35 #define CONFIGMG_VERSION 0x0400
36 
37 #ifdef NT_INCLUDED
38   __MINGW_EXTENSION typedef unsigned __int64 DWORDLONG;
39   typedef DWORDLONG *PDWORDLONG;
40 #endif
41 
42   typedef DWORD RETURN_TYPE;
43   typedef RETURN_TYPE CONFIGRET;
44   typedef DWORD DEVNODE,DEVINST;
45   typedef DEVNODE *PDEVNODE,*PDEVINST;
46   typedef CHAR *DEVNODEID_A,*DEVINSTID_A;
47   typedef WCHAR *DEVNODEID_W,*DEVINSTID_W;
48 
49   __MINGW_TYPEDEF_UAW(DEVNODEID)
50   __MINGW_TYPEDEF_UAW(DEVINSTID)
51 
52   typedef DWORD_PTR LOG_CONF;
53   typedef LOG_CONF *PLOG_CONF;
54   typedef DWORD_PTR RES_DES;
55   typedef RES_DES *PRES_DES;
56   typedef ULONG RESOURCEID;
57   typedef RESOURCEID *PRESOURCEID;
58   typedef ULONG PRIORITY;
59   typedef PRIORITY *PPRIORITY;
60   typedef DWORD_PTR RANGE_LIST;
61   typedef RANGE_LIST *PRANGE_LIST;
62   typedef DWORD_PTR RANGE_ELEMENT;
63   typedef RANGE_ELEMENT *PRANGE_ELEMENT;
64   typedef HANDLE HMACHINE;
65   typedef HMACHINE *PHMACHINE;
66   typedef ULONG_PTR CONFLICT_LIST;
67   typedef CONFLICT_LIST *PCONFLICT_LIST;
68 
69   typedef struct _CONFLICT_DETAILS_A {
70     ULONG CD_ulSize;
71     ULONG CD_ulMask;
72     DEVINST CD_dnDevInst;
73     RES_DES CD_rdResDes;
74     ULONG CD_ulFlags;
75     CHAR CD_szDescription[MAX_PATH];
76   } CONFLICT_DETAILS_A ,*PCONFLICT_DETAILS_A;
77 
78   typedef struct _CONFLICT_DETAILS_W {
79     ULONG CD_ulSize;
80     ULONG CD_ulMask;
81     DEVINST CD_dnDevInst;
82     RES_DES CD_rdResDes;
83     ULONG CD_ulFlags;
84     WCHAR CD_szDescription[MAX_PATH];
85   } CONFLICT_DETAILS_W ,*PCONFLICT_DETAILS_W;
86 
87   __MINGW_TYPEDEF_UAW(CONFLICT_DETAILS)
88   __MINGW_TYPEDEF_UAW(PCONFLICT_DETAILS)
89 
90 #define CM_CDMASK_DEVINST (0x00000001)
91 #define CM_CDMASK_RESDES (0x00000002)
92 #define CM_CDMASK_FLAGS (0x00000004)
93 #define CM_CDMASK_DESCRIPTION (0x00000008)
94 #define CM_CDMASK_VALID (0x0000000F)
95 
96 #define CM_CDFLAGS_DRIVER (0x00000001)
97 #define CM_CDFLAGS_ROOT_OWNED (0x00000002)
98 #define CM_CDFLAGS_RESERVED (0x00000004)
99 
100   typedef ULONG REGDISPOSITION;
101 
102 #include "pshpack1.h"
103 
104 #define mMD_MemoryType (0x1)
105 #define fMD_MemoryType mMD_MemoryType
106 #define fMD_ROM (0x0)
107 #define fMD_RAM (0x1)
108 
109 #define mMD_32_24 (0x2)
110 #define fMD_32_24 mMD_32_24
111 #define fMD_24 (0x0)
112 #define fMD_32 (0x2)
113 
114 #define mMD_Prefetchable (0x4)
115 #define fMD_Prefetchable mMD_Prefetchable
116 #define fMD_Pref mMD_Prefetchable
117 #define fMD_PrefetchDisallowed (0x0)
118 #define fMD_PrefetchAllowed (0x4)
119 
120 #define mMD_Readable (0x8)
121 #define fMD_Readable mMD_Readable
122 #define fMD_ReadAllowed (0x0)
123 #define fMD_ReadDisallowed (0x8)
124 
125 #define mMD_CombinedWrite (0x10)
126 #define fMD_CombinedWrite mMD_CombinedWrite
127 #define fMD_CombinedWriteDisallowed (0x0)
128 #define fMD_CombinedWriteAllowed (0x10)
129 
130 #define mMD_Cacheable (0x20)
131 #define fMD_NonCacheable (0x0)
132 #define fMD_Cacheable (0x20)
133 
134   typedef struct Mem_Range_s {
135     DWORDLONG MR_Align;
136     ULONG MR_nBytes;
137     DWORDLONG MR_Min;
138     DWORDLONG MR_Max;
139     DWORD MR_Flags;
140     DWORD MR_Reserved;
141   } MEM_RANGE,*PMEM_RANGE;
142 
143   typedef struct Mem_Des_s {
144     DWORD MD_Count;
145     DWORD MD_Type;
146     DWORDLONG MD_Alloc_Base;
147     DWORDLONG MD_Alloc_End;
148     DWORD MD_Flags;
149     DWORD MD_Reserved;
150   } MEM_DES,*PMEM_DES;
151 
152   typedef struct Mem_Resource_s {
153     MEM_DES MEM_Header;
154     MEM_RANGE MEM_Data[ANYSIZE_ARRAY];
155   } MEM_RESOURCE,*PMEM_RESOURCE;
156 
157 #define MType_Range sizeof(struct Mem_Range_s)
158 
159 #define fIOD_PortType (0x1)
160 #define fIOD_Memory (0x0)
161 #define fIOD_IO (0x1)
162 #define fIOD_DECODE (0x00fc)
163 #define fIOD_10_BIT_DECODE (0x0004)
164 #define fIOD_12_BIT_DECODE (0x0008)
165 #define fIOD_16_BIT_DECODE (0x0010)
166 #define fIOD_POSITIVE_DECODE (0x0020)
167 #define fIOD_PASSIVE_DECODE (0x0040)
168 #define fIOD_WINDOW_DECODE (0x0080)
169 
170 #define IO_ALIAS_10_BIT_DECODE (0x00000004)
171 #define IO_ALIAS_12_BIT_DECODE (0x00000010)
172 #define IO_ALIAS_16_BIT_DECODE (0x00000000)
173 #define IO_ALIAS_POSITIVE_DECODE (0x000000FF)
174 
175   typedef struct IO_Range_s {
176     DWORDLONG IOR_Align;
177     DWORD IOR_nPorts;
178     DWORDLONG IOR_Min;
179     DWORDLONG IOR_Max;
180     DWORD IOR_RangeFlags;
181     DWORDLONG IOR_Alias;
182   } IO_RANGE,*PIO_RANGE;
183 
184   typedef struct IO_Des_s {
185     DWORD IOD_Count;
186     DWORD IOD_Type;
187     DWORDLONG IOD_Alloc_Base;
188     DWORDLONG IOD_Alloc_End;
189     DWORD IOD_DesFlags;
190   } IO_DES,*PIO_DES;
191 
192   typedef struct IO_Resource_s {
193     IO_DES IO_Header;
194     IO_RANGE IO_Data[ANYSIZE_ARRAY];
195   } IO_RESOURCE,*PIO_RESOURCE;
196 
197 #define IOA_Local 0xff
198 
199 #define IOType_Range sizeof(struct IO_Range_s)
200 
201 #define mDD_Width (0x3)
202 #define fDD_BYTE (0x0)
203 #define fDD_WORD (0x1)
204 #define fDD_DWORD (0x2)
205 #define fDD_BYTE_AND_WORD (0x3)
206 
207 #define mDD_BusMaster (0x4)
208 #define fDD_NoBusMaster (0x0)
209 #define fDD_BusMaster (0x4)
210 
211 #define mDD_Type (0x18)
212 #define fDD_TypeStandard (0x00)
213 #define fDD_TypeA (0x08)
214 #define fDD_TypeB (0x10)
215 #define fDD_TypeF (0x18)
216 
217   typedef struct DMA_Range_s {
218     ULONG DR_Min;
219     ULONG DR_Max;
220     ULONG DR_Flags;
221   } DMA_RANGE,*PDMA_RANGE;
222 
223   typedef struct DMA_Des_s {
224     DWORD DD_Count;
225     DWORD DD_Type;
226     DWORD DD_Flags;
227     ULONG DD_Alloc_Chan;
228   } DMA_DES,*PDMA_DES;
229 
230   typedef struct DMA_Resource_s {
231     DMA_DES DMA_Header;
232     DMA_RANGE DMA_Data[ANYSIZE_ARRAY];
233   } DMA_RESOURCE,*PDMA_RESOURCE;
234 
235 #define DType_Range sizeof(struct DMA_Range_s)
236 
237 #define mIRQD_Share (0x1)
238 #define fIRQD_Exclusive (0x0)
239 #define fIRQD_Share (0x1)
240 
241 #define fIRQD_Share_Bit 0
242 #define fIRQD_Level_Bit 1
243 
244 #define mIRQD_Edge_Level (0x2)
245 #define fIRQD_Level (0x0)
246 #define fIRQD_Edge (0x2)
247 
248   typedef struct IRQ_Range_s {
249     ULONG IRQR_Min;
250     ULONG IRQR_Max;
251     ULONG IRQR_Flags;
252   } IRQ_RANGE,*PIRQ_RANGE;
253 
254   typedef struct IRQ_Des_32_s {
255     DWORD IRQD_Count;
256     DWORD IRQD_Type;
257     DWORD IRQD_Flags;
258     ULONG IRQD_Alloc_Num;
259     ULONG32 IRQD_Affinity;
260   } IRQ_DES_32,*PIRQ_DES_32;
261 
262   typedef struct IRQ_Des_64_s {
263     DWORD IRQD_Count;
264     DWORD IRQD_Type;
265     DWORD IRQD_Flags;
266     ULONG IRQD_Alloc_Num;
267     ULONG64 IRQD_Affinity;
268   } IRQ_DES_64,*PIRQ_DES_64;
269 
270 #ifdef _WIN64
271   typedef IRQ_DES_64 IRQ_DES;
272   typedef PIRQ_DES_64 PIRQ_DES;
273 #else
274   typedef IRQ_DES_32 IRQ_DES;
275   typedef PIRQ_DES_32 PIRQ_DES;
276 #endif
277 
278   typedef struct IRQ_Resource_32_s {
279     IRQ_DES_32 IRQ_Header;
280     IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
281   } IRQ_RESOURCE_32,*PIRQ_RESOURCE_32;
282 
283   typedef struct IRQ_Resource_64_s {
284     IRQ_DES_64 IRQ_Header;
285     IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
286   } IRQ_RESOURCE_64,*PIRQ_RESOURCE_64;
287 
288 #ifdef _WIN64
289   typedef IRQ_RESOURCE_64 IRQ_RESOURCE;
290   typedef PIRQ_RESOURCE_64 PIRQ_RESOURCE;
291 #else
292   typedef IRQ_RESOURCE_32 IRQ_RESOURCE;
293   typedef PIRQ_RESOURCE_32 PIRQ_RESOURCE;
294 #endif
295 
296 #define IRQType_Range sizeof(struct IRQ_Range_s)
297 
298 #define CM_RESDES_WIDTH_DEFAULT (0x00000000)
299 #define CM_RESDES_WIDTH_32 (0x00000001)
300 #define CM_RESDES_WIDTH_64 (0x00000002)
301 #define CM_RESDES_WIDTH_BITS (0x00000003)
302 
303   typedef struct DevPrivate_Range_s {
304     DWORD PR_Data1;
305     DWORD PR_Data2;
306     DWORD PR_Data3;
307   } DEVPRIVATE_RANGE,*PDEVPRIVATE_RANGE;
308 
309   typedef struct DevPrivate_Des_s {
310     DWORD PD_Count;
311     DWORD PD_Type;
312     DWORD PD_Data1;
313     DWORD PD_Data2;
314     DWORD PD_Data3;
315     DWORD PD_Flags;
316   } DEVPRIVATE_DES,*PDEVPRIVATE_DES;
317 
318   typedef struct DevPrivate_Resource_s {
319     DEVPRIVATE_DES PRV_Header;
320     DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY];
321   } DEVPRIVATE_RESOURCE,*PDEVPRIVATE_RESOURCE;
322 
323 #define PType_Range sizeof(struct DevPrivate_Range_s)
324 
325   typedef struct CS_Des_s {
326     DWORD CSD_SignatureLength;
327     DWORD CSD_LegacyDataOffset;
328     DWORD CSD_LegacyDataSize;
329     DWORD CSD_Flags;
330     GUID CSD_ClassGuid;
331     BYTE CSD_Signature[ANYSIZE_ARRAY];
332   } CS_DES,*PCS_DES;
333 
334   typedef struct CS_Resource_s {
335     CS_DES CS_Header;
336   } CS_RESOURCE,*PCS_RESOURCE;
337 
338 #define mPCD_IO_8_16 (0x1)
339 #define fPCD_IO_8 (0x0)
340 #define fPCD_IO_16 (0x1)
341 #define mPCD_MEM_8_16 (0x2)
342 #define fPCD_MEM_8 (0x0)
343 #define fPCD_MEM_16 (0x2)
344 #define mPCD_MEM_A_C (0xC)
345 #define fPCD_MEM1_A (0x4)
346 #define fPCD_MEM2_A (0x8)
347 #define fPCD_IO_ZW_8 (0x10)
348 #define fPCD_IO_SRC_16 (0x20)
349 #define fPCD_IO_WS_16 (0x40)
350 #define mPCD_MEM_WS (0x300)
351 #define fPCD_MEM_WS_ONE (0x100)
352 #define fPCD_MEM_WS_TWO (0x200)
353 #define fPCD_MEM_WS_THREE (0x300)
354 
355 #define fPCD_MEM_A (0x4)
356 
357 #define fPCD_ATTRIBUTES_PER_WINDOW (0x8000)
358 
359 #define fPCD_IO1_16 (0x00010000)
360 #define fPCD_IO1_ZW_8 (0x00020000)
361 #define fPCD_IO1_SRC_16 (0x00040000)
362 #define fPCD_IO1_WS_16 (0x00080000)
363 
364 #define fPCD_IO2_16 (0x00100000)
365 #define fPCD_IO2_ZW_8 (0x00200000)
366 #define fPCD_IO2_SRC_16 (0x00400000)
367 #define fPCD_IO2_WS_16 (0x00800000)
368 
369 #define mPCD_MEM1_WS (0x03000000)
370 #define fPCD_MEM1_WS_ONE (0x01000000)
371 #define fPCD_MEM1_WS_TWO (0x02000000)
372 #define fPCD_MEM1_WS_THREE (0x03000000)
373 #define fPCD_MEM1_16 (0x04000000)
374 
375 #define mPCD_MEM2_WS (0x30000000)
376 #define fPCD_MEM2_WS_ONE (0x10000000)
377 #define fPCD_MEM2_WS_TWO (0x20000000)
378 #define fPCD_MEM2_WS_THREE (0x30000000)
379 #define fPCD_MEM2_16 (0x40000000)
380 
381 #define PCD_MAX_MEMORY 2
382 #define PCD_MAX_IO 2
383 
384   typedef struct PcCard_Des_s {
385     DWORD PCD_Count;
386     DWORD PCD_Type;
387     DWORD PCD_Flags;
388     BYTE PCD_ConfigIndex;
389     BYTE PCD_Reserved[3];
390     DWORD PCD_MemoryCardBase1;
391     DWORD PCD_MemoryCardBase2;
392     DWORD PCD_MemoryCardBase[PCD_MAX_MEMORY];
393     WORD PCD_MemoryFlags[PCD_MAX_MEMORY];
394     BYTE PCD_IoFlags[PCD_MAX_IO];
395   } PCCARD_DES,*PPCCARD_DES;
396 
397   typedef struct PcCard_Resource_s {
398     PCCARD_DES PcCard_Header;
399   } PCCARD_RESOURCE,*PPCCARD_RESOURCE;
400 
401 #define mPMF_AUDIO_ENABLE (0x8)
402 #define fPMF_AUDIO_ENABLE (0x8)
403 
404   typedef struct MfCard_Des_s {
405     DWORD PMF_Count;
406     DWORD PMF_Type;
407     DWORD PMF_Flags;
408     BYTE PMF_ConfigOptions;
409     BYTE PMF_IoResourceIndex;
410     BYTE PMF_Reserved[2];
411     DWORD PMF_ConfigRegisterBase;
412   } MFCARD_DES,*PMFCARD_DES;
413 
414   typedef struct MfCard_Resource_s {
415     MFCARD_DES MfCard_Header;
416   } MFCARD_RESOURCE,*PMFCARD_RESOURCE;
417 
418   typedef struct BusNumber_Range_s {
419     ULONG BUSR_Min;
420     ULONG BUSR_Max;
421     ULONG BUSR_nBusNumbers;
422     ULONG BUSR_Flags;
423   } BUSNUMBER_RANGE,*PBUSNUMBER_RANGE;
424 
425   typedef struct BusNumber_Des_s {
426     DWORD BUSD_Count;
427     DWORD BUSD_Type;
428     DWORD BUSD_Flags;
429     ULONG BUSD_Alloc_Base;
430     ULONG BUSD_Alloc_End;
431   } BUSNUMBER_DES,*PBUSNUMBER_DES;
432 
433   typedef struct BusNumber_Resource_s {
434     BUSNUMBER_DES BusNumber_Header;
435     BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY];
436   } BUSNUMBER_RESOURCE,*PBUSNUMBER_RESOURCE;
437 
438 #define BusNumberType_Range sizeof(struct BusNumber_Range_s)
439 
440 #define CM_HWPI_NOT_DOCKABLE (0x00000000)
441 #define CM_HWPI_UNDOCKED (0x00000001)
442 #define CM_HWPI_DOCKED (0x00000002)
443 
444   typedef struct HWProfileInfo_sA {
445     ULONG HWPI_ulHWProfile;
446     CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
447     DWORD HWPI_dwFlags;
448   } HWPROFILEINFO_A,*PHWPROFILEINFO_A;
449 
450   typedef struct HWProfileInfo_sW {
451     ULONG HWPI_ulHWProfile;
452     WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
453     DWORD HWPI_dwFlags;
454   } HWPROFILEINFO_W,*PHWPROFILEINFO_W;
455 
456   __MINGW_TYPEDEF_UAW(HWPROFILEINFO)
457   __MINGW_TYPEDEF_UAW(PHWPROFILEINFO)
458 
459 #include "poppack.h"
460 
461 #define ResType_All (0x00000000)
462 #define ResType_None (0x00000000)
463 #define ResType_Mem (0x00000001)
464 #define ResType_IO (0x00000002)
465 #define ResType_DMA (0x00000003)
466 #define ResType_IRQ (0x00000004)
467 #define ResType_DoNotUse (0x00000005)
468 #define ResType_BusNumber (0x00000006)
469 #define ResType_MAX (0x00000006)
470 #define ResType_Ignored_Bit (0x00008000)
471 #define ResType_ClassSpecific (0x0000FFFF)
472 #define ResType_Reserved (0x00008000)
473 #define ResType_DevicePrivate (0x00008001)
474 #define ResType_PcCardConfig (0x00008002)
475 #define ResType_MfCardConfig (0x00008003)
476 
477 #define CM_ADD_RANGE_ADDIFCONFLICT (0x00000000)
478 #define CM_ADD_RANGE_DONOTADDIFCONFLICT (0x00000001)
479 #define CM_ADD_RANGE_BITS (0x00000001)
480 
481 #define BASIC_LOG_CONF 0x00000000
482 #define FILTERED_LOG_CONF 0x00000001
483 #define ALLOC_LOG_CONF 0x00000002
484 #define BOOT_LOG_CONF 0x00000003
485 #define FORCED_LOG_CONF 0x00000004
486 #define OVERRIDE_LOG_CONF 0x00000005
487 #define NUM_LOG_CONF 0x00000006
488 #define LOG_CONF_BITS 0x00000007
489 
490 #define PRIORITY_EQUAL_FIRST (0x00000008)
491 #define PRIORITY_EQUAL_LAST (0x00000000)
492 #define PRIORITY_BIT (0x00000008)
493 
494 #define RegDisposition_OpenAlways (0x00000000)
495 #define RegDisposition_OpenExisting (0x00000001)
496 #define RegDisposition_Bits (0x00000001)
497 
498 #define CM_ADD_ID_HARDWARE (0x00000000)
499 #define CM_ADD_ID_COMPATIBLE (0x00000001)
500 #define CM_ADD_ID_BITS (0x00000001)
501 
502 #define CM_CREATE_DEVNODE_NORMAL (0x00000000)
503 #define CM_CREATE_DEVNODE_NO_WAIT_INSTALL (0x00000001)
504 #define CM_CREATE_DEVNODE_PHANTOM (0x00000002)
505 #define CM_CREATE_DEVNODE_GENERATE_ID (0x00000004)
506 #define CM_CREATE_DEVNODE_DO_NOT_INSTALL (0x00000008)
507 #define CM_CREATE_DEVNODE_BITS (0x0000000F)
508 
509 #define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
510 #define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
511 #define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
512 #define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
513 #define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
514 #define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
515 
516 #define CM_DELETE_CLASS_ONLY (0x00000000)
517 #define CM_DELETE_CLASS_SUBKEYS (0x00000001)
518 #define CM_DELETE_CLASS_BITS (0x00000001)
519 
520 #define CM_DETECT_NEW_PROFILE (0x00000001)
521 #define CM_DETECT_CRASHED (0x00000002)
522 #define CM_DETECT_HWPROF_FIRST_BOOT (0x00000004)
523 #define CM_DETECT_RUN (0x80000000)
524 #define CM_DETECT_BITS (0x80000007)
525 
526 #define CM_DISABLE_POLITE (0x00000000)
527 #define CM_DISABLE_ABSOLUTE (0x00000001)
528 #define CM_DISABLE_HARDWARE (0x00000002)
529 #define CM_DISABLE_UI_NOT_OK (0x00000004)
530 #define CM_DISABLE_BITS (0x00000007)
531 
532 #define CM_GETIDLIST_FILTER_NONE (0x00000000)
533 #define CM_GETIDLIST_FILTER_ENUMERATOR (0x00000001)
534 #define CM_GETIDLIST_FILTER_SERVICE (0x00000002)
535 #define CM_GETIDLIST_FILTER_EJECTRELATIONS (0x00000004)
536 #define CM_GETIDLIST_FILTER_REMOVALRELATIONS (0x00000008)
537 #define CM_GETIDLIST_FILTER_POWERRELATIONS (0x00000010)
538 #define CM_GETIDLIST_FILTER_BUSRELATIONS (0x00000020)
539 #define CM_GETIDLIST_DONOTGENERATE (0x10000040)
540 #define CM_GETIDLIST_FILTER_BITS (0x1000007F)
541 
542 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT (0x00000000)
543 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES (0x00000001)
544 #define CM_GET_DEVICE_INTERFACE_LIST_BITS (0x00000001)
545 
546 #define CM_DRP_DEVICEDESC (0x00000001)
547 #define CM_DRP_HARDWAREID (0x00000002)
548 #define CM_DRP_COMPATIBLEIDS (0x00000003)
549 #define CM_DRP_UNUSED0 (0x00000004)
550 #define CM_DRP_SERVICE (0x00000005)
551 #define CM_DRP_UNUSED1 (0x00000006)
552 #define CM_DRP_UNUSED2 (0x00000007)
553 #define CM_DRP_CLASS (0x00000008)
554 #define CM_DRP_CLASSGUID (0x00000009)
555 #define CM_DRP_DRIVER (0x0000000A)
556 #define CM_DRP_CONFIGFLAGS (0x0000000B)
557 #define CM_DRP_MFG (0x0000000C)
558 #define CM_DRP_FRIENDLYNAME (0x0000000D)
559 #define CM_DRP_LOCATION_INFORMATION (0x0000000E)
560 #define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000F)
561 #define CM_DRP_CAPABILITIES (0x00000010)
562 #define CM_DRP_UI_NUMBER (0x00000011)
563 #define CM_DRP_UPPERFILTERS (0x00000012)
564 #define CM_DRP_LOWERFILTERS (0x00000013)
565 #define CM_DRP_BUSTYPEGUID (0x00000014)
566 #define CM_DRP_LEGACYBUSTYPE (0x00000015)
567 #define CM_DRP_BUSNUMBER (0x00000016)
568 #define CM_DRP_ENUMERATOR_NAME (0x00000017)
569 #define CM_DRP_SECURITY (0x00000018)
570 #define CM_CRP_SECURITY CM_DRP_SECURITY
571 #define CM_DRP_SECURITY_SDS (0x00000019)
572 #define CM_CRP_SECURITY_SDS CM_DRP_SECURITY_SDS
573 #define CM_DRP_DEVTYPE (0x0000001A)
574 #define CM_CRP_DEVTYPE CM_DRP_DEVTYPE
575 #define CM_DRP_EXCLUSIVE (0x0000001B)
576 #define CM_CRP_EXCLUSIVE CM_DRP_EXCLUSIVE
577 #define CM_DRP_CHARACTERISTICS (0x0000001C)
578 #define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS
579 #define CM_DRP_ADDRESS (0x0000001D)
580 #define CM_DRP_UI_NUMBER_DESC_FORMAT (0x0000001E)
581 #define CM_DRP_DEVICE_POWER_DATA (0x0000001F)
582 #define CM_DRP_REMOVAL_POLICY (0x00000020)
583 #define CM_DRP_REMOVAL_POLICY_HW_DEFAULT (0x00000021)
584 #define CM_DRP_REMOVAL_POLICY_OVERRIDE (0x00000022)
585 #define CM_DRP_INSTALL_STATE (0x00000023)
586 
587 #define CM_DRP_MIN (0x00000001)
588 #define CM_CRP_MIN CM_DRP_MIN
589 #define CM_DRP_MAX (0x00000023)
590 #define CM_CRP_MAX CM_DRP_MAX
591 
592 #define CM_DEVCAP_LOCKSUPPORTED (0x00000001)
593 #define CM_DEVCAP_EJECTSUPPORTED (0x00000002)
594 #define CM_DEVCAP_REMOVABLE (0x00000004)
595 #define CM_DEVCAP_DOCKDEVICE (0x00000008)
596 #define CM_DEVCAP_UNIQUEID (0x00000010)
597 #define CM_DEVCAP_SILENTINSTALL (0x00000020)
598 #define CM_DEVCAP_RAWDEVICEOK (0x00000040)
599 #define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
600 #define CM_DEVCAP_HARDWAREDISABLED (0x00000100)
601 #define CM_DEVCAP_NONDYNAMIC (0x00000200)
602 
603 #define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1
604 #define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2
605 #define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3
606 
607 #define CM_INSTALL_STATE_INSTALLED 0
608 #define CM_INSTALL_STATE_NEEDS_REINSTALL 1
609 #define CM_INSTALL_STATE_FAILED_INSTALL 2
610 #define CM_INSTALL_STATE_FINISH_INSTALL 3
611 
612 #define CM_LOCATE_DEVNODE_NORMAL 0x00000000
613 #define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
614 #define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
615 #define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
616 #define CM_LOCATE_DEVNODE_BITS 0x00000007
617 
618 #define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
619 #define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
620 #define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
621 #define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
622 #define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
623 
624 #define CM_OPEN_CLASS_KEY_INSTALLER (0x00000000)
625 #define CM_OPEN_CLASS_KEY_INTERFACE (0x00000001)
626 #define CM_OPEN_CLASS_KEY_BITS (0x00000001)
627 
628 #define CM_REMOVE_UI_OK 0x00000000
629 #define CM_REMOVE_UI_NOT_OK 0x00000001
630 #define CM_REMOVE_NO_RESTART 0x00000002
631 #define CM_REMOVE_BITS 0x00000003
632 
633 #define CM_QUERY_REMOVE_UI_OK (CM_REMOVE_UI_OK)
634 #define CM_QUERY_REMOVE_UI_NOT_OK (CM_REMOVE_UI_NOT_OK)
635 #define CM_QUERY_REMOVE_BITS (CM_QUERY_REMOVE_UI_OK|CM_QUERY_REMOVE_UI_NOT_OK)
636 
637 #define CM_REENUMERATE_NORMAL 0x00000000
638 #define CM_REENUMERATE_SYNCHRONOUS 0x00000001
639 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
640 #define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
641 #define CM_REENUMERATE_BITS 0x00000007
642 
643 #define CM_REGISTER_DEVICE_DRIVER_STATIC (0x00000000)
644 #define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE (0x00000001)
645 #define CM_REGISTER_DEVICE_DRIVER_REMOVABLE (0x00000002)
646 #define CM_REGISTER_DEVICE_DRIVER_BITS (0x00000003)
647 
648 #define CM_REGISTRY_HARDWARE (0x00000000)
649 #define CM_REGISTRY_SOFTWARE (0x00000001)
650 #define CM_REGISTRY_USER (0x00000100)
651 #define CM_REGISTRY_CONFIG (0x00000200)
652 #define CM_REGISTRY_BITS (0x00000301)
653 
654 #define CM_SET_DEVNODE_PROBLEM_NORMAL (0x00000000)
655 #define CM_SET_DEVNODE_PROBLEM_OVERRIDE (0x00000001)
656 #define CM_SET_DEVNODE_PROBLEM_BITS (0x00000001)
657 
658 #define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL
659 #define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE
660 #define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS
661 
662 #define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)
663 #define CM_SET_HW_PROF_FLAGS_BITS (0x00000001)
664 
665 #define CM_SETUP_DEVNODE_READY (0x00000000)
666 #define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
667 #define CM_SETUP_DOWNLOAD (0x00000001)
668 #define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
669 #define CM_SETUP_PROP_CHANGE (0x00000003)
670 #define CM_SETUP_DEVNODE_RESET (0x00000004)
671 #define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
672 #define CM_SETUP_BITS (0x00000007)
673 
674 #define CM_QUERY_ARBITRATOR_RAW (0x00000000)
675 #define CM_QUERY_ARBITRATOR_TRANSLATED (0x00000001)
676 #define CM_QUERY_ARBITRATOR_BITS (0x00000001)
677 
678 #define CM_CUSTOMDEVPROP_MERGE_MULTISZ (0x00000001)
679 #define CM_CUSTOMDEVPROP_BITS (0x00000001)
680 
681 #define CM_Add_ID __MINGW_NAME_AW(CM_Add_ID)
682 #define CM_Add_ID_Ex __MINGW_NAME_AW(CM_Add_ID_Ex)
683 #define CM_Connect_Machine __MINGW_NAME_AW(CM_Connect_Machine)
684 #define CM_Create_DevNode __MINGW_NAME_AW(CM_Create_DevNode)
685 #define CM_Create_DevInst __MINGW_NAME_AW(CM_Create_DevNode)
686 #define CM_Create_DevNode_Ex __MINGW_NAME_AW(CM_Create_DevNode_Ex)
687 #define CM_Create_DevInst_Ex __MINGW_NAME_AW(CM_Create_DevInst_Ex)
688 #define CM_Enumerate_Enumerators __MINGW_NAME_AW(CM_Enumerate_Enumerators)
689 #define CM_Enumerate_Enumerators_Ex __MINGW_NAME_AW(CM_Enumerate_Enumerators_Ex)
690 #define CM_Get_Class_Name __MINGW_NAME_AW(CM_Get_Class_Name)
691 #define CM_Get_Class_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Name_Ex)
692 #define CM_Get_Class_Key_Name __MINGW_NAME_AW(CM_Get_Class_Key_Name)
693 #define CM_Get_Class_Key_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Key_Name_Ex)
694 #define CM_Get_Device_ID __MINGW_NAME_AW(CM_Get_Device_ID)
695 #define CM_Get_Device_ID_Ex __MINGW_NAME_AW(CM_Get_Device_ID_Ex)
696 #define CM_Get_Device_ID_List __MINGW_NAME_AW(CM_Get_Device_ID_List)
697 #define CM_Get_Device_ID_List_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Ex)
698 #define CM_Get_Device_ID_List_Size __MINGW_NAME_AW(CM_Get_Device_ID_List_Size)
699 #define CM_Get_Device_ID_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Size_Ex)
700 #define CM_Get_DevInst_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
701 #define CM_Get_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
702 #define CM_Get_DevNode_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
703 #define CM_Get_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
704 #define CM_Get_DevInst_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
705 #define CM_Get_DevInst_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
706 #define CM_Get_DevNode_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
707 #define CM_Get_DevNode_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
708 #define CM_Get_Hardware_Profile_Info __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info)
709 #define CM_Get_Hardware_Profile_Info_Ex __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info_Ex)
710 #define CM_Get_HW_Prof_Flags __MINGW_NAME_AW(CM_Get_HW_Prof_Flags)
711 #define CM_Get_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Get_HW_Prof_Flags_Ex)
712 #define CM_Get_Device_Interface_Alias __MINGW_NAME_AW(CM_Get_Device_Interface_Alias)
713 #define CM_Get_Device_Interface_Alias_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_Alias_Ex)
714 #define CM_Get_Device_Interface_List __MINGW_NAME_AW(CM_Get_Device_Interface_List)
715 #define CM_Get_Device_Interface_List_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Ex)
716 #define CM_Get_Device_Interface_List_Size __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size)
717 #define CM_Get_Device_Interface_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size_Ex)
718 #define CM_Locate_DevNode __MINGW_NAME_AW(CM_Locate_DevNode)
719 #define CM_Locate_DevInst __MINGW_NAME_AW(CM_Locate_DevNode)
720 #define CM_Locate_DevNode_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
721 #define CM_Locate_DevInst_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
722 #define CM_Open_Class_Key __MINGW_NAME_AW(CM_Open_Class_Key)
723 #define CM_Open_Class_Key_Ex __MINGW_NAME_AW(CM_Open_Class_Key_Ex)
724 #define CM_Query_And_Remove_SubTree __MINGW_NAME_AW(CM_Query_And_Remove_SubTree)
725 #define CM_Query_And_Remove_SubTree_Ex __MINGW_NAME_AW(CM_Query_And_Remove_SubTree_Ex)
726 #define CM_Request_Device_Eject __MINGW_NAME_AW(CM_Request_Device_Eject)
727 #define CM_Request_Device_Eject_Ex __MINGW_NAME_AW(CM_Request_Device_Eject_Ex)
728 #define CM_Register_Device_Interface __MINGW_NAME_AW(CM_Register_Device_Interface)
729 #define CM_Register_Device_Interface_Ex __MINGW_NAME_AW(CM_Register_Device_Interface_Ex)
730 #define CM_Unregister_Device_Interface __MINGW_NAME_AW(CM_Unregister_Device_Interface)
731 #define CM_Unregister_Device_Interface_Ex __MINGW_NAME_AW(CM_Unregister_Device_Interface_Ex)
732 #define CM_Set_DevInst_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
733 #define CM_Set_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
734 #define CM_Set_DevNode_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
735 #define CM_Set_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
736 #define CM_Set_HW_Prof_Flags __MINGW_NAME_AW(CM_Set_HW_Prof_Flags)
737 #define CM_Set_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Set_HW_Prof_Flags_Ex)
738 #define CM_Get_Resource_Conflict_Details __MINGW_NAME_AW(CM_Get_Resource_Conflict_Details)
739 #define CM_Get_Class_Registry_Property __MINGW_NAME_AW(CM_Get_Class_Registry_Property)
740 #define CM_Set_Class_Registry_Property __MINGW_NAME_AW(CM_Set_Class_Registry_Property)
741 
742   CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags);
743   CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags,HMACHINE hMachine);
744   CMAPI CONFIGRET WINAPI CM_Add_IDA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags);
745   CMAPI CONFIGRET WINAPI CM_Add_IDW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags);
746   CMAPI CONFIGRET WINAPI CM_Add_ID_ExA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags,HMACHINE hMachine);
747   CMAPI CONFIGRET WINAPI CM_Add_ID_ExW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags,HMACHINE hMachine);
748   CMAPI CONFIGRET WINAPI CM_Add_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
749   CMAPI CONFIGRET WINAPI CM_Add_Res_Des(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
750   CMAPI CONFIGRET WINAPI CM_Add_Res_Des_Ex(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
751   CMAPI CONFIGRET WINAPI CM_Connect_MachineA(PCSTR UNCServerName,PHMACHINE phMachine);
752   CMAPI CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName,PHMACHINE phMachine);
753   CMAPI CONFIGRET WINAPI CM_Create_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags);
754   CMAPI CONFIGRET WINAPI CM_Create_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags);
755   CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
756   CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
757 #define CM_Create_DevInstW CM_Create_DevNodeW
758 #define CM_Create_DevInstA CM_Create_DevNodeA
759 #define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
760 #define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
761   CMAPI CONFIGRET WINAPI CM_Create_Range_List(PRANGE_LIST prlh,ULONG ulFlags);
762   CMAPI CONFIGRET WINAPI CM_Delete_Class_Key(LPGUID ClassGuid,ULONG ulFlags);
763   CMAPI CONFIGRET WINAPI CM_Delete_Class_Key_Ex(LPGUID ClassGuid,ULONG ulFlags,HANDLE hMachine);
764   CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags);
765   CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags,HANDLE hMachine);
766 #define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
767 #define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
768   CMAPI CONFIGRET WINAPI CM_Delete_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
769   CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags);
770   CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags,HMACHINE hMachine);
771   CMAPI CONFIGRET WINAPI CM_Disable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
772   CMAPI CONFIGRET WINAPI CM_Disable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
773 #define CM_Disable_DevInst CM_Disable_DevNode
774 #define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
775   CMAPI CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine);
776   CMAPI CONFIGRET WINAPI CM_Dup_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,ULONG ulFlags);
777   CMAPI CONFIGRET WINAPI CM_Enable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
778   CMAPI CONFIGRET WINAPI CM_Enable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
779 #define CM_Enable_DevInst CM_Enable_DevNode
780 #define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
781   CMAPI CONFIGRET WINAPI CM_Enumerate_Classes(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags);
782   CMAPI CONFIGRET WINAPI CM_Enumerate_Classes_Ex(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags,HMACHINE hMachine);
783   CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
784   CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
785   CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
786   CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
787   CMAPI CONFIGRET WINAPI CM_Find_Range(PDWORDLONG pullStart,DWORDLONG ullStart,ULONG ulLength,DWORDLONG ullAlignment,DWORDLONG ullEnd,RANGE_LIST rlh,ULONG ulFlags);
788   CMAPI CONFIGRET WINAPI CM_First_Range(RANGE_LIST rlh,PDWORDLONG pullStart,PDWORDLONG pullEnd,PRANGE_ELEMENT preElement,ULONG ulFlags);
789   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags);
790   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Ex(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags,HMACHINE hMachine);
791   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Handle(LOG_CONF lcLogConf);
792   CMAPI CONFIGRET WINAPI CM_Free_Range_List(RANGE_LIST rlh,ULONG ulFlags);
793   CMAPI CONFIGRET WINAPI CM_Free_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags);
794   CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
795   CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Handle(RES_DES rdResDes);
796   CMAPI CONFIGRET WINAPI CM_Get_Child(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
797   CMAPI CONFIGRET WINAPI CM_Get_Child_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
798   CMAPI CONFIGRET WINAPI CM_Get_Class_NameA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
799   CMAPI CONFIGRET WINAPI CM_Get_Class_NameW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
800   CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
801   CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
802   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
803   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
804   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
805   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
806   CMAPI CONFIGRET WINAPI CM_Get_Depth(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags);
807   CMAPI CONFIGRET WINAPI CM_Get_Depth_Ex(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
808   CMAPI CONFIGRET WINAPI CM_Get_Device_IDA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
809   CMAPI CONFIGRET WINAPI CM_Get_Device_IDW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
810   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
811   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
812   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
813   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
814   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
815   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
816   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags);
817   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags);
818   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
819   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
820   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags);
821   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
822   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
823   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
824   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
825   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
826 #define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
827 #define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
828 #define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
829 #define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
830   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
831   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
832   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
833   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
834 #define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW
835 #define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA
836 #define CM_Get_DevInst_Custom_Property_ExW CM_Get_DevNode_Custom_Property_ExW
837 #define CM_Get_DevInst_Custom_Property_ExA CM_Get_DevNode_Custom_Property_ExA
838   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags);
839   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
840 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
841 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
842   CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags);
843   CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
844   CMAPI CONFIGRET WINAPI CM_Get_Global_State(PULONG pulState,ULONG ulFlags);
845   CMAPI CONFIGRET WINAPI CM_Get_Global_State_Ex(PULONG pulState,ULONG ulFlags,HMACHINE hMachine);
846   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags);
847   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
848   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags);
849   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
850   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
851   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
852   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
853   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
854   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
855   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
856   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
857   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
858   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
859   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
860   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
861   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
862   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags);
863   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags);
864   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
865   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
866   CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags);
867   CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags,HMACHINE hMachine);
868   CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags);
869   CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags,HMACHINE hMachine);
870   CMAPI CONFIGRET WINAPI CM_Get_Parent(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
871   CMAPI CONFIGRET WINAPI CM_Get_Parent_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
872   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags);
873   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
874   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags);
875   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
876   CMAPI CONFIGRET WINAPI CM_Get_Sibling(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags);
877   CMAPI CONFIGRET WINAPI CM_Get_Sibling_Ex(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags,HMACHINE hMachine);
878   CMAPI WORD WINAPI CM_Get_Version(VOID);
879   CMAPI WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine);
880   CMAPI WINBOOL WINAPI CM_Is_Version_Available(WORD wVersion);
881   CMAPI WINBOOL WINAPI CM_Is_Version_Available_Ex(WORD wVersion,HMACHINE hMachine);
882   CMAPI CONFIGRET WINAPI CM_Intersect_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
883   CMAPI CONFIGRET WINAPI CM_Invert_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,DWORDLONG ullMaxValue,ULONG ulFlags);
884   CMAPI CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags);
885   CMAPI CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags);
886   CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
887   CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
888 #define CM_Locate_DevInstA CM_Locate_DevNodeA
889 #define CM_Locate_DevInstW CM_Locate_DevNodeW
890 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
891 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
892   CMAPI CONFIGRET WINAPI CM_Merge_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
893   CMAPI CONFIGRET WINAPI CM_Modify_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
894   CMAPI CONFIGRET WINAPI CM_Modify_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
895   CMAPI CONFIGRET WINAPI CM_Move_DevNode(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags);
896   CMAPI CONFIGRET WINAPI CM_Move_DevNode_Ex(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags,HMACHINE hMachine);
897 #define CM_Move_DevInst CM_Move_DevNode
898 #define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
899   CMAPI CONFIGRET WINAPI CM_Next_Range(PRANGE_ELEMENT preElement,PDWORDLONG pullStart,PDWORDLONG pullEnd,ULONG ulFlags);
900   CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags);
901   CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags,HMACHINE hMachine);
902   CMAPI CONFIGRET WINAPI CM_Open_Class_KeyA(LPGUID ClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
903   CMAPI CONFIGRET WINAPI CM_Open_Class_KeyW(LPGUID ClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
904   CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExA(LPGUID pszClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
905   CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExW(LPGUID pszClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
906   CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags);
907   CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key_Ex(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags,HMACHINE hMachine);
908 #define CM_Open_DevInst_Key CM_Open_DevNode_Key
909 #define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
910   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
911   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
912   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
913   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
914   CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
915   CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
916   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
917   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
918   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
919   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
920   CMAPI CONFIGRET WINAPI CM_Request_Device_EjectA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
921   CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
922   CMAPI CONFIGRET WINAPI CM_Request_Device_EjectW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
923   CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
924   CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode(DEVINST dnDevInst,ULONG ulFlags);
925   CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
926 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
927 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
928   CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
929   CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
930   CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
931   CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
932   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags,HMACHINE hMachine);
933   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags);
934 #define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
935 #define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
936   CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceA(LPCSTR pszDeviceInterface,ULONG ulFlags);
937   CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceW(LPCWSTR pszDeviceInterface,ULONG ulFlags);
938   CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA(LPCSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
939   CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW(LPCWSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
940   CMAPI CONFIGRET WINAPI CM_Register_Device_Driver(DEVINST dnDevInst,ULONG ulFlags);
941   CMAPI CONFIGRET WINAPI CM_Register_Device_Driver_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
942   CMAPI CONFIGRET WINAPI CM_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
943   CMAPI CONFIGRET WINAPI CM_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
944   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
945   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
946   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
947   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
948 #define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
949 #define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
950 #define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
951 #define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
952   CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present(PBOOL pbPresent);
953   CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex(PBOOL pbPresent,HMACHINE hMachine);
954   CMAPI CONFIGRET WINAPI CM_Request_Eject_PC(VOID);
955   CMAPI CONFIGRET WINAPI CM_Request_Eject_PC_Ex(HMACHINE hMachine);
956   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
957   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
958   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
959   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
960   CMAPI CONFIGRET WINAPI CM_Setup_DevNode(DEVINST dnDevInst,ULONG ulFlags);
961   CMAPI CONFIGRET WINAPI CM_Setup_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
962 #define CM_Setup_DevInst CM_Setup_DevNode
963 #define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex
964   CMAPI CONFIGRET WINAPI CM_Test_Range_Available(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
965   CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode(DEVNODE dnPhantom,ULONG ulFlags);
966   CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode_Ex(DEVNODE dnPhantom,ULONG ulFlags,HANDLE hMachine);
967 #define CM_Uninstall_DevInst CM_Uninstall_DevNode
968 #define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
969   CMAPI CONFIGRET WINAPI CM_Run_Detection(ULONG ulFlags);
970   CMAPI CONFIGRET WINAPI CM_Run_Detection_Ex(ULONG ulFlags,HMACHINE hMachine);
971   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof(ULONG ulHardwareProfile,ULONG ulFlags);
972   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Ex(ULONG ulHardwareProfile,ULONG ulFlags,HMACHINE hMachine);
973   CMAPI CONFIGRET WINAPI CM_Query_Resource_Conflict_List(PCONFLICT_LIST pclConflictList,DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
974   CMAPI CONFIGRET WINAPI CM_Free_Resource_Conflict_Handle(CONFLICT_LIST clConflictList);
975   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_Count(CONFLICT_LIST clConflictList,PULONG pulCount);
976   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsA(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_A pConflictDetails);
977   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsW(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_W pConflictDetails);
978   CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
979   CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
980   CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
981   CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
982 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
983   DWORD WINAPI CM_WaitNoPendingInstallEvents(DWORD dwTimeout);
984 
985 #define CR_SUCCESS (0x00000000)
986 #define CR_DEFAULT (0x00000001)
987 #define CR_OUT_OF_MEMORY (0x00000002)
988 #define CR_INVALID_POINTER (0x00000003)
989 #define CR_INVALID_FLAG (0x00000004)
990 #define CR_INVALID_DEVNODE (0x00000005)
991 #define CR_INVALID_DEVINST CR_INVALID_DEVNODE
992 #define CR_INVALID_RES_DES (0x00000006)
993 #define CR_INVALID_LOG_CONF (0x00000007)
994 #define CR_INVALID_ARBITRATOR (0x00000008)
995 #define CR_INVALID_NODELIST (0x00000009)
996 #define CR_DEVNODE_HAS_REQS (0x0000000A)
997 #define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
998 #define CR_INVALID_RESOURCEID (0x0000000B)
999 #define CR_DLVXD_NOT_FOUND (0x0000000C)
1000 #define CR_NO_SUCH_DEVNODE (0x0000000D)
1001 #define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
1002 #define CR_NO_MORE_LOG_CONF (0x0000000E)
1003 #define CR_NO_MORE_RES_DES (0x0000000F)
1004 #define CR_ALREADY_SUCH_DEVNODE (0x00000010)
1005 #define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
1006 #define CR_INVALID_RANGE_LIST (0x00000011)
1007 #define CR_INVALID_RANGE (0x00000012)
1008 #define CR_FAILURE (0x00000013)
1009 #define CR_NO_SUCH_LOGICAL_DEV (0x00000014)
1010 #define CR_CREATE_BLOCKED (0x00000015)
1011 #define CR_NOT_SYSTEM_VM (0x00000016)
1012 #define CR_REMOVE_VETOED (0x00000017)
1013 #define CR_APM_VETOED (0x00000018)
1014 #define CR_INVALID_LOAD_TYPE (0x00000019)
1015 #define CR_BUFFER_SMALL (0x0000001A)
1016 #define CR_NO_ARBITRATOR (0x0000001B)
1017 #define CR_NO_REGISTRY_HANDLE (0x0000001C)
1018 #define CR_REGISTRY_ERROR (0x0000001D)
1019 #define CR_INVALID_DEVICE_ID (0x0000001E)
1020 #define CR_INVALID_DATA (0x0000001F)
1021 #define CR_INVALID_API (0x00000020)
1022 #define CR_DEVLOADER_NOT_READY (0x00000021)
1023 #define CR_NEED_RESTART (0x00000022)
1024 #define CR_NO_MORE_HW_PROFILES (0x00000023)
1025 #define CR_DEVICE_NOT_THERE (0x00000024)
1026 #define CR_NO_SUCH_VALUE (0x00000025)
1027 #define CR_WRONG_TYPE (0x00000026)
1028 #define CR_INVALID_PRIORITY (0x00000027)
1029 #define CR_NOT_DISABLEABLE (0x00000028)
1030 #define CR_FREE_RESOURCES (0x00000029)
1031 #define CR_QUERY_VETOED (0x0000002A)
1032 #define CR_CANT_SHARE_IRQ (0x0000002B)
1033 #define CR_NO_DEPENDENT (0x0000002C)
1034 #define CR_SAME_RESOURCES (0x0000002D)
1035 #define CR_NO_SUCH_REGISTRY_KEY (0x0000002E)
1036 #define CR_INVALID_MACHINENAME (0x0000002F)
1037 #define CR_REMOTE_COMM_FAILURE (0x00000030)
1038 #define CR_MACHINE_UNAVAILABLE (0x00000031)
1039 #define CR_NO_CM_SERVICES (0x00000032)
1040 #define CR_ACCESS_DENIED (0x00000033)
1041 #define CR_CALL_NOT_IMPLEMENTED (0x00000034)
1042 #define CR_INVALID_PROPERTY (0x00000035)
1043 #define CR_DEVICE_INTERFACE_ACTIVE (0x00000036)
1044 #define CR_NO_SUCH_DEVICE_INTERFACE (0x00000037)
1045 #define CR_INVALID_REFERENCE_STRING (0x00000038)
1046 #define CR_INVALID_CONFLICT_LIST (0x00000039)
1047 #define CR_INVALID_INDEX (0x0000003A)
1048 #define CR_INVALID_STRUCTURE_SIZE (0x0000003B)
1049 #define NUM_CR_RESULTS (0x0000003C)
1050 
1051 #ifdef __cplusplus
1052 }
1053 #endif
1054 #endif
1055