1 /**
2  * @file cfgmgr32.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 /* Created by Casper S. Hornstrup <chorns@users.sourceforge.net> */
25 #ifndef __CFGMGR32_H
26 #define __CFGMGR32_H
27 #pragma GCC system_header
28 #include <_mingw.h>
29 
30 /*
31  * PnP configuration manager
32  */
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 #include "ntddk.h"
39 
40 #if defined(_CFGMGR32_)
41 #define CMAPI DECLSPEC_EXPORT
42 #else
43 #define CMAPI DECLSPEC_IMPORT
44 #endif
45 
46 #include "cfg.h"
47 
48 #include <pshpack1.h>
49 
50 #define CR_SUCCESS                  			0x00000000
51 #define CR_DEFAULT                        0x00000001
52 #define CR_OUT_OF_MEMORY                  0x00000002
53 #define CR_INVALID_POINTER                0x00000003
54 #define CR_INVALID_FLAG                   0x00000004
55 #define CR_INVALID_DEVNODE                0x00000005
56 #define CR_INVALID_DEVINST          			CR_INVALID_DEVNODE
57 #define CR_INVALID_RES_DES                0x00000006
58 #define CR_INVALID_LOG_CONF               0x00000007
59 #define CR_INVALID_ARBITRATOR             0x00000008
60 #define CR_INVALID_NODELIST               0x00000009
61 #define CR_DEVNODE_HAS_REQS               0x0000000A
62 #define CR_DEVINST_HAS_REQS         			CR_DEVNODE_HAS_REQS
63 #define CR_INVALID_RESOURCEID             0x0000000B
64 #define CR_DLVXD_NOT_FOUND                0x0000000C
65 #define CR_NO_SUCH_DEVNODE                0x0000000D
66 #define CR_NO_SUCH_DEVINST          			CR_NO_SUCH_DEVNODE
67 #define CR_NO_MORE_LOG_CONF               0x0000000E
68 #define CR_NO_MORE_RES_DES                0x0000000F
69 #define CR_ALREADY_SUCH_DEVNODE           0x00000010
70 #define CR_ALREADY_SUCH_DEVINST     			CR_ALREADY_SUCH_DEVNODE
71 #define CR_INVALID_RANGE_LIST             0x00000011
72 #define CR_INVALID_RANGE                  0x00000012
73 #define CR_FAILURE                        0x00000013
74 #define CR_NO_SUCH_LOGICAL_DEV            0x00000014
75 #define CR_CREATE_BLOCKED                 0x00000015
76 #define CR_NOT_SYSTEM_VM                  0x00000016
77 #define CR_REMOVE_VETOED                  0x00000017
78 #define CR_APM_VETOED                     0x00000018
79 #define CR_INVALID_LOAD_TYPE              0x00000019
80 #define CR_BUFFER_SMALL                   0x0000001A
81 #define CR_NO_ARBITRATOR                  0x0000001B
82 #define CR_NO_REGISTRY_HANDLE             0x0000001C
83 #define CR_REGISTRY_ERROR                 0x0000001D
84 #define CR_INVALID_DEVICE_ID              0x0000001E
85 #define CR_INVALID_DATA                   0x0000001F
86 #define CR_INVALID_API                    0x00000020
87 #define CR_DEVLOADER_NOT_READY            0x00000021
88 #define CR_NEED_RESTART                   0x00000022
89 #define CR_NO_MORE_HW_PROFILES            0x00000023
90 #define CR_DEVICE_NOT_THERE               0x00000024
91 #define CR_NO_SUCH_VALUE                  0x00000025
92 #define CR_WRONG_TYPE                     0x00000026
93 #define CR_INVALID_PRIORITY               0x00000027
94 #define CR_NOT_DISABLEABLE                0x00000028
95 #define CR_FREE_RESOURCES                 0x00000029
96 #define CR_QUERY_VETOED                   0x0000002A
97 #define CR_CANT_SHARE_IRQ                 0x0000002B
98 #define CR_NO_DEPENDENT                   0x0000002C
99 #define CR_SAME_RESOURCES                 0x0000002D
100 #define CR_NO_SUCH_REGISTRY_KEY           0x0000002E
101 #define CR_INVALID_MACHINENAME            0x0000002F
102 #define CR_REMOTE_COMM_FAILURE            0x00000030
103 #define CR_MACHINE_UNAVAILABLE            0x00000031
104 #define CR_NO_CM_SERVICES                 0x00000032
105 #define CR_ACCESS_DENIED                  0x00000033
106 #define CR_CALL_NOT_IMPLEMENTED           0x00000034
107 #define CR_INVALID_PROPERTY               0x00000035
108 #define CR_DEVICE_INTERFACE_ACTIVE        0x00000036
109 #define CR_NO_SUCH_DEVICE_INTERFACE       0x00000037
110 #define CR_INVALID_REFERENCE_STRING       0x00000038
111 #define CR_INVALID_CONFLICT_LIST          0x00000039
112 #define CR_INVALID_INDEX                  0x0000003A
113 #define CR_INVALID_STRUCTURE_SIZE         0x0000003B
114 
115 
116 typedef DWORD RETURN_TYPE;
117 typedef RETURN_TYPE	CONFIGRET;
118 
119 typedef HANDLE HMACHINE;
120 typedef HMACHINE *PHMACHINE;
121 
122 typedef DWORD_PTR RES_DES;
123 typedef RES_DES *PRES_DES;
124 
125 typedef DWORD_PTR RANGE_ELEMENT;
126 typedef RANGE_ELEMENT *PRANGE_ELEMENT;
127 
128 typedef ULONG_PTR CONFLICT_LIST;
129 typedef CONFLICT_LIST *PCONFLICT_LIST;
130 
131 typedef DWORD_PTR LOG_CONF;
132 typedef LOG_CONF *PLOG_CONF;
133 
134 typedef ULONG PRIORITY;
135 typedef PRIORITY *PPRIORITY;
136 
137 typedef DWORD_PTR RANGE_LIST;
138 typedef RANGE_LIST *PRANGE_LIST;
139 
140 typedef DWORD DEVNODE, DEVINST;
141 typedef DEVNODE *PDEVNODE, *PDEVINST;
142 
143 typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
144 typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
145 
146 typedef __AW(DEVNODEID_) DEVNODEID;
147 typedef __AW(DEVINSTID_) DEVINSTID;
148 
149 typedef ULONG REGDISPOSITION;
150 
151 typedef ULONG RESOURCEID;
152 typedef RESOURCEID *PRESOURCEID;
153 
154 #define CM_RESDES_WIDTH_DEFAULT 					0x00000000
155 #define CM_RESDES_WIDTH_32      					0x00000001
156 #define CM_RESDES_WIDTH_64      					0x00000002
157 #define CM_RESDES_WIDTH_BITS    					0x00000003
158 
159 
160 #define MAX_CONFIG_VALUE      						9999
161 #define MAX_INSTANCE_VALUE    						9999
162 
163 #define MAX_DEVICE_ID_LEN     						200
164 #define MAX_DEVNODE_ID_LEN    						MAX_DEVICE_ID_LEN
165 
166 #define MAX_CLASS_NAME_LEN    						32
167 #define MAX_GUID_STRING_LEN   						39
168 #define MAX_PROFILE_LEN       						80
169 
170 
171 #define ResType_All                       0x00000000
172 #define ResType_None                      0x00000000
173 #define ResType_Mem                       0x00000001
174 #define ResType_IO                        0x00000002
175 #define ResType_DMA                       0x00000003
176 #define ResType_IRQ                       0x00000004
177 #define ResType_DoNotUse                  0x00000005
178 #define ResType_BusNumber                 0x00000006
179 #define ResType_MAX                       0x00000006
180 #define ResType_Ignored_Bit               0x00008000
181 #define ResType_ClassSpecific             0x0000FFFF
182 #define ResType_Reserved                  0x00008000
183 #define ResType_DevicePrivate             0x00008001
184 #define ResType_PcCardConfig              0x00008002
185 #define ResType_MfCardConfig              0x00008003
186 
187 #define CM_GETIDLIST_FILTER_NONE          		0x00000000
188 #define CM_GETIDLIST_FILTER_ENUMERATOR        0x00000001
189 #define CM_GETIDLIST_FILTER_SERVICE           0x00000002
190 #define CM_GETIDLIST_FILTER_EJECTRELATIONS    0x00000004
191 #define CM_GETIDLIST_FILTER_REMOVALRELATIONS  0x00000008
192 #define CM_GETIDLIST_FILTER_POWERRELATIONS    0x00000010
193 #define CM_GETIDLIST_FILTER_BUSRELATIONS      0x00000020
194 #define CM_GETIDLIST_DONOTGENERATE            0x10000040
195 #define CM_GETIDLIST_FILTER_BITS              0x1000007F
196 
197 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT     	0x00000000
198 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 	0x00000001
199 #define CM_GET_DEVICE_INTERFACE_LIST_BITS        	0x00000001
200 
201 
202 typedef struct BusNumber_Des_s {
203   DWORD  BUSD_Count;
204   DWORD  BUSD_Type;
205   DWORD  BUSD_Flags;
206   ULONG  BUSD_Alloc_Base;
207   ULONG  BUSD_Alloc_End;
208 } BUSNUMBER_DES, *PBUSNUMBER_DES;
209 
210 typedef struct BusNumber_Range_s {
211   ULONG  BUSR_Min;
212   ULONG  BUSR_Max;
213   ULONG  BUSR_nBusNumbers;
214   ULONG  BUSR_Flags;
215 } BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
216 
217 #define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
218 
219 typedef struct BusNumber_Resource_s {
220   BUSNUMBER_DES  BusNumber_Header;
221   BUSNUMBER_RANGE  BusNumber_Data[ANYSIZE_ARRAY];
222 } BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
223 
224 typedef struct CS_Des_s {
225   DWORD  CSD_SignatureLength;
226   DWORD  CSD_LegacyDataOffset;
227   DWORD  CSD_LegacyDataSize;
228   DWORD  CSD_Flags;
229   GUID  CSD_ClassGuid;
230   BYTE  CSD_Signature[ANYSIZE_ARRAY];
231 } CS_DES, *PCS_DES;
232 
233 typedef struct CS_Resource_s {
234   CS_DES  CS_Header;
235 } CS_RESOURCE, *PCS_RESOURCE;
236 
237 typedef struct DevPrivate_Des_s {
238   DWORD  PD_Count;
239   DWORD  PD_Type;
240   DWORD  PD_Data1;
241   DWORD  PD_Data2;
242   DWORD  PD_Data3;
243   DWORD  PD_Flags;
244 } DEVPRIVATE_DES, *PDEVPRIVATE_DES;
245 
246 typedef struct DevPrivate_Range_s {
247 	DWORD  PR_Data1;
248 	DWORD  PR_Data2;
249 	DWORD  PR_Data3;
250 } DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
251 
252 #define PType_Range sizeof(DEVPRIVATE_RANGE)
253 
254 typedef struct DevPrivate_Resource_s {
255   DEVPRIVATE_DES  PRV_Header;
256   DEVPRIVATE_RANGE  PRV_Data[ANYSIZE_ARRAY];
257 } DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
258 
259 /* DMA_DES.DD_Flags constants and masks */
260 #define mDD_Width         								0x3
261 #define fDD_BYTE          								0x0
262 #define fDD_WORD          								0x1
263 #define fDD_DWORD         								0x2
264 #define fDD_BYTE_AND_WORD 								0x3
265 
266 #define mDD_BusMaster     								0x4
267 #define fDD_NoBusMaster   								0x0
268 #define fDD_BusMaster     								0x4
269 
270 #define mDD_Type         									0x18
271 #define fDD_TypeStandard 									0x00
272 #define fDD_TypeA        									0x08
273 #define fDD_TypeB        									0x10
274 #define fDD_TypeF        									0x18
275 
276 typedef struct DMA_Des_s {
277   DWORD  DD_Count;
278   DWORD  DD_Type;
279   DWORD  DD_Flags;
280   ULONG  DD_Alloc_Chan;
281 } DMA_DES, *PDMA_DES;
282 
283 typedef struct DMA_Range_s {
284   ULONG  DR_Min;
285   ULONG  DR_Max;
286   ULONG  DR_Flags;
287 } DMA_RANGE, *PDMA_RANGE;
288 
289 #define DType_Range sizeof(DMA_RANGE)
290 
291 typedef struct DMA_Resource_s {
292   DMA_DES  DMA_Header;
293   DMA_RANGE  DMA_Data[ANYSIZE_ARRAY];
294 } DMA_RESOURCE, *PDMA_RESOURCE;
295 
296 /* IO_DES.Type constants and masks */
297 #define fIOD_PortType   									0x1
298 #define fIOD_Memory     									0x0
299 #define fIOD_IO         									0x1
300 #define fIOD_DECODE     									0x00fc
301 #define fIOD_10_BIT_DECODE    						0x0004
302 #define fIOD_12_BIT_DECODE    						0x0008
303 #define fIOD_16_BIT_DECODE    						0x0010
304 #define fIOD_POSITIVE_DECODE  						0x0020
305 #define fIOD_PASSIVE_DECODE   						0x0040
306 #define fIOD_WINDOW_DECODE    						0x0080
307 
308 typedef struct IO_Des_s {
309   DWORD  IOD_Count;
310   DWORD  IOD_Type;
311   DWORDLONG  IOD_Alloc_Base;
312   DWORDLONG  IOD_Alloc_End;
313   DWORD  IOD_DesFlags;
314 } IO_DES, *PIO_DES;
315 
316 /* IO_RANGE.IOR_Alias constants */
317 #define IO_ALIAS_10_BIT_DECODE      			0x00000004
318 #define IO_ALIAS_12_BIT_DECODE      			0x00000010
319 #define IO_ALIAS_16_BIT_DECODE      			0x00000000
320 #define IO_ALIAS_POSITIVE_DECODE    			0x000000FF
321 
322 typedef struct IO_Range_s {
323   DWORDLONG  IOR_Align;
324   DWORD  IOR_nPorts;
325   DWORDLONG  IOR_Min;
326   DWORDLONG  IOR_Max;
327   DWORD  IOR_RangeFlags;
328   DWORDLONG  IOR_Alias;
329 } IO_RANGE, *PIO_RANGE;
330 
331 #define IOType_Range sizeof(IO_RANGE)
332 
333 typedef struct IO_Resource_s {
334   IO_DES  IO_Header;
335   IO_RANGE  IO_Data[ANYSIZE_ARRAY];
336 } IO_RESOURCE, *PIO_RESOURCE;
337 
338 /* IRQ_DES.IRQD_flags constants */
339 #define mIRQD_Share        								0x1
340 #define fIRQD_Exclusive    								0x0
341 #define fIRQD_Share        								0x1
342 
343 #define fIRQD_Share_Bit    								0
344 #define fIRQD_Level_Bit    							  1
345 
346 #define mIRQD_Edge_Level   								0x2
347 #define fIRQD_Level        								0x0
348 #define fIRQD_Edge         								0x2
349 
350 typedef struct IRQ_Des_32_s {
351   DWORD  IRQD_Count;
352   DWORD  IRQD_Type;
353   DWORD  IRQD_Flags;
354   ULONG  IRQD_Alloc_Num;
355   ULONG32  IRQD_Affinity;
356 } IRQ_DES_32, *PIRQ_DES_32;
357 
358 typedef struct IRQ_Des_64_s {
359   DWORD  IRQD_Count;
360   DWORD  IRQD_Type;
361   DWORD  IRQD_Flags;
362   ULONG  IRQD_Alloc_Num;
363   ULONG64  IRQD_Affinity;
364 } IRQ_DES_64, *PIRQ_DES_64;
365 
366 #ifdef _WIN64
367 typedef IRQ_DES_64 IRQ_DES;
368 typedef PIRQ_DES_64 PIRQ_DES;
369 #else
370 typedef IRQ_DES_32 IRQ_DES;
371 typedef PIRQ_DES_32 PIRQ_DES;
372 #endif
373 
374 typedef struct IRQ_Range_s {
375   ULONG  IRQR_Min;
376   ULONG  IRQR_Max;
377   ULONG  IRQR_Flags;
378 } IRQ_RANGE, *PIRQ_RANGE;
379 
380 #define IRQType_Range sizeof(IRQ_RANGE)
381 
382 typedef struct IRQ_Resource_s {
383   IRQ_DES  IRQ_Header;
384   IRQ_RANGE  IRQ_Data[ANYSIZE_ARRAY];
385 } IRQ_RESOURCE, *PIRQ_RESOURCE;
386 
387 /* MEM_DES.MD_Flags constants */
388 #define mMD_MemoryType              0x1
389 #define fMD_MemoryType              mMD_MemoryType
390 #define fMD_ROM                     0x0
391 #define fMD_RAM                     0x1
392 
393 #define mMD_32_24                   0x2
394 #define fMD_32_24                   mMD_32_24
395 #define fMD_24                      0x0
396 #define fMD_32                      0x2
397 
398 #define mMD_Prefetchable            0x4
399 #define fMD_Prefetchable            mMD_Prefetchable
400 #define fMD_Pref                    mMD_Prefetchable
401 #define fMD_PrefetchDisallowed      0x0
402 #define fMD_PrefetchAllowed         0x4
403 
404 #define mMD_Readable                0x8
405 #define fMD_Readable                mMD_Readable
406 #define fMD_ReadAllowed             0x0
407 #define fMD_ReadDisallowed          0x8
408 
409 #define mMD_CombinedWrite           0x10
410 #define fMD_CombinedWrite           mMD_CombinedWrite
411 #define fMD_CombinedWriteDisallowed 0x0
412 #define fMD_CombinedWriteAllowed    0x10
413 
414 #define mMD_Cacheable               0x20
415 #define fMD_NonCacheable            0x0
416 #define fMD_Cacheable               0x20
417 
418 typedef struct Mem_Des_s {
419   DWORD  MD_Count;
420   DWORD  MD_Type;
421   DWORDLONG  MD_Alloc_Base;
422   DWORDLONG  MD_Alloc_End;
423   DWORD  MD_Flags;
424   DWORD  MD_Reserved;
425 } MEM_DES, *PMEM_DES;
426 
427 typedef struct Mem_Range_s {
428   DWORDLONG  MR_Align;
429   ULONG  MR_nBytes;
430   DWORDLONG  MR_Min;
431   DWORDLONG  MR_Max;
432   DWORD  MR_Flags;
433   DWORD  MR_Reserved;
434 } MEM_RANGE, *PMEM_RANGE;
435 
436 #define MType_Range sizeof(MEM_RANGE)
437 
438 typedef struct Mem_Resource_s {
439   MEM_DES  MEM_Header;
440   MEM_RANGE  MEM_Data[ANYSIZE_ARRAY];
441 } MEM_RESOURCE, *PMEM_RESOURCE;
442 
443 /* MFCARD_DES.PMF_Flags constants */
444 #define fPMF_AUDIO_ENABLE   							0x8
445 #define mPMF_AUDIO_ENABLE   							fPMF_AUDIO_ENABLE
446 
447 typedef struct MfCard_Des_s {
448   DWORD  PMF_Count;
449   DWORD  PMF_Type;
450   DWORD  PMF_Flags;
451   BYTE  PMF_ConfigOptions;
452   BYTE  PMF_IoResourceIndex;
453   BYTE  PMF_Reserved[2];
454   DWORD  PMF_ConfigRegisterBase;
455 } MFCARD_DES, *PMFCARD_DES;
456 
457 typedef struct MfCard_Resource_s {
458   MFCARD_DES  MfCard_Header;
459 } MFCARD_RESOURCE, *PMFCARD_RESOURCE;
460 
461 /* PCCARD_DES.PCD_Flags constants */
462 
463 typedef struct PcCard_Des_s {
464   DWORD  PCD_Count;
465   DWORD  PCD_Type;
466   DWORD  PCD_Flags;
467   BYTE  PCD_ConfigIndex;
468   BYTE  PCD_Reserved[3];
469   DWORD  PCD_MemoryCardBase1;
470   DWORD  PCD_MemoryCardBase2;
471 } PCCARD_DES, *PPCCARD_DES;
472 
473 #define mPCD_IO_8_16        							0x1
474 #define fPCD_IO_8           							0x0
475 #define fPCD_IO_16          							0x1
476 #define mPCD_MEM_8_16       							0x2
477 #define fPCD_MEM_8          							0x0
478 #define fPCD_MEM_16         							0x2
479 #define mPCD_MEM_A_C        							0xC
480 #define fPCD_MEM1_A         							0x4
481 #define fPCD_MEM2_A         							0x8
482 #define fPCD_IO_ZW_8        							0x10
483 #define fPCD_IO_SRC_16      							0x20
484 #define fPCD_IO_WS_16       							0x40
485 #define mPCD_MEM_WS         							0x300
486 #define fPCD_MEM_WS_ONE     							0x100
487 #define fPCD_MEM_WS_TWO     							0x200
488 #define fPCD_MEM_WS_THREE   							0x300
489 
490 #define fPCD_MEM_A          							0x4
491 
492 #define fPCD_ATTRIBUTES_PER_WINDOW 				0x8000
493 
494 #define fPCD_IO1_16         							0x00010000
495 #define fPCD_IO1_ZW_8       							0x00020000
496 #define fPCD_IO1_SRC_16     							0x00040000
497 #define fPCD_IO1_WS_16      							0x00080000
498 
499 #define fPCD_IO2_16         							0x00100000
500 #define fPCD_IO2_ZW_8       							0x00200000
501 #define fPCD_IO2_SRC_16     							0x00400000
502 #define fPCD_IO2_WS_16      							0x00800000
503 
504 #define mPCD_MEM1_WS        							0x03000000
505 #define fPCD_MEM1_WS_ONE    							0x01000000
506 #define fPCD_MEM1_WS_TWO    							0x02000000
507 #define fPCD_MEM1_WS_THREE  							0x03000000
508 #define fPCD_MEM1_16        							0x04000000
509 
510 #define mPCD_MEM2_WS        							0x30000000
511 #define fPCD_MEM2_WS_ONE    							0x10000000
512 #define fPCD_MEM2_WS_TWO    							0x20000000
513 #define fPCD_MEM2_WS_THREE  							0x30000000
514 #define fPCD_MEM2_16        							0x40000000
515 
516 #define PCD_MAX_MEMORY   									2
517 #define PCD_MAX_IO       									2
518 
519 typedef struct PcCard_Resource_s {
520   PCCARD_DES  PcCard_Header;
521 } PCCARD_RESOURCE, *PPCCARD_RESOURCE;
522 
523 
524 /* CONFLICT_DETAILS.CD.ulMask constants */
525 #define CM_CDMASK_DEVINST      						0x00000001
526 #define CM_CDMASK_RESDES       						0x00000002
527 #define CM_CDMASK_FLAGS        						0x00000004
528 #define CM_CDMASK_DESCRIPTION  						0x00000008
529 #define CM_CDMASK_VALID        					  0x0000000F
530 
531 /* CONFLICT_DETAILS.CD.ulFlags constants */
532 #define CM_CDFLAGS_DRIVER      						0x00000001
533 #define CM_CDFLAGS_ROOT_OWNED  						0x00000002
534 #define CM_CDFLAGS_RESERVED    						0x00000004
535 
536 typedef struct _CONFLICT_DETAILS_A {
537   ULONG  CD_ulSize;
538   ULONG  CD_ulMask;
539   DEVINST  CD_dnDevInst;
540   RES_DES  CD_rdResDes;
541   ULONG  CD_ulFlags;
542   CHAR  CD_szDescription[MAX_PATH];
543 } CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
544 
545 typedef struct _CONFLICT_DETAILS_W {
546   ULONG  CD_ulSize;
547   ULONG  CD_ulMask;
548   DEVINST  CD_dnDevInst;
549   RES_DES  CD_rdResDes;
550   ULONG  CD_ulFlags;
551   WCHAR  CD_szDescription[MAX_PATH];
552 } CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
553 
554 typedef __AW(CONFLICT_DETAILS_) CONFLICT_DETAILS;
555 typedef __AW(PCONFLICT_DETAILS_) PCONFLICT_DETAILS;
556 
557 /* CM_Add_Empty_Log_Conf.ulFlags constants */
558 #define PRIORITY_EQUAL_FIRST  						0x00000008
559 #define PRIORITY_EQUAL_LAST   						0x00000000
560 #define PRIORITY_BIT          						0x00000008
561 
562 CMAPI
563 CONFIGRET
564 WINAPI
565 CM_Add_Empty_Log_Conf(
566   /*OUT*/ PLOG_CONF  plcLogConf,
567   /*IN*/ DEVINST  dnDevInst,
568   /*IN*/ PRIORITY  Priority,
569   /*IN*/ ULONG  ulFlags);
570 
571 CMAPI
572 CONFIGRET
573 WINAPI
574 CM_Add_Empty_Log_Conf_Ex(
575   /*OUT*/ PLOG_CONF  plcLogConf,
576   /*IN*/ DEVINST  dnDevInst,
577   /*IN*/ PRIORITY  Priority,
578   /*IN*/ ULONG  ulFlags,
579   /*IN*/ HMACHINE  hMachine);
580 
581 /* CM_Add_ID.ulFlags constants */
582 #define CM_ADD_ID_HARDWARE              	0x00000000
583 #define CM_ADD_ID_COMPATIBLE              0x00000001
584 #define CM_ADD_ID_BITS                    0x00000001
585 
586 CMAPI
587 CONFIGRET
588 WINAPI
589 CM_Add_IDA(
590   /*IN*/ DEVINST  dnDevInst,
591   /*IN*/ PSTR  pszID,
592   /*IN*/ ULONG  ulFlags,
593   /*IN*/ HMACHINE  hMachine);
594 
595 CMAPI
596 CONFIGRET
597 WINAPI
598 CM_Add_ID_ExA(
599   /*IN*/ DEVINST  dnDevInst,
600   /*IN*/ PSTR  pszID,
601   /*IN*/ ULONG  ulFlags,
602   /*IN*/ HMACHINE  hMachine);
603 
604 CMAPI
605 CONFIGRET
606 WINAPI
607 CM_Add_ID_ExW(
608   /*IN*/ DEVINST  dnDevInst,
609   /*IN*/ PWSTR  pszID,
610   /*IN*/ ULONG  ulFlags,
611   /*IN*/ HMACHINE  hMachine);
612 
613 CMAPI
614 CONFIGRET
615 WINAPI
616 CM_Add_IDW(
617   /*IN*/ DEVINST  dnDevInst,
618   /*IN*/ PWSTR  pszID,
619   /*IN*/ ULONG  ulFlags,
620   /*IN*/ HMACHINE  hMachine);
621 
622 #define CM_Add_ID __AW(CM_Add_ID)
623 #define CM_Add_ID_Ex __AW(CM_Add_ID_Ex)
624 
625 /* FIXME: Obsolete CM_Add_Range */
626 
627 CMAPI
628 CONFIGRET
629 WINAPI
630 CM_Add_Res_Des(
631   /*OUT*/ PRES_DES  prdResDes,
632   /*IN*/ LOG_CONF  lcLogConf,
633   /*IN*/ RESOURCEID  ResourceID,
634   /*IN*/ PCVOID  ResourceData,
635   /*IN*/ ULONG  ResourceLen,
636   /*IN*/ ULONG  ulFlags);
637 
638 CMAPI
639 CONFIGRET
640 WINAPI
641 CM_Add_Res_Des_Ex(
642   /*OUT*/ PRES_DES  prdResDes,
643   /*IN*/ LOG_CONF  lcLogConf,
644   /*IN*/ RESOURCEID  ResourceID,
645   /*IN*/ PCVOID  ResourceData,
646   /*IN*/ ULONG  ResourceLen,
647   /*IN*/ ULONG  ulFlags,
648   /*IN*/ HMACHINE  hMachine);
649 
650 CMAPI
651 CONFIGRET
652 WINAPI
653 CM_Connect_MachineA(
654   /*IN*/ PCSTR  UNCServerName,
655   /*OUT*/ PHMACHINE  phMachine);
656 
657 CMAPI
658 CONFIGRET
659 WINAPI
660 CM_Connect_MachineW(
661   /*IN*/ PCWSTR  UNCServerName,
662   /*OUT*/ PHMACHINE  phMachine);
663 
664 #define CM_Connect_Machine __AW(CM_Connect_Machine)
665 
666 /* FIXME: Obsolete CM_Create_DevNode */
667 /* FIXME: Obsolete CM_Create_DevNodeEx */
668 /* FIXME: Obsolete CM_Create_Range_List */
669 /* FIXME: Obsolete CM_Delete_Class_Key */
670 /* FIXME: Obsolete CM_Delete_Class_Key_Ex */
671 /* FIXME: Obsolete CM_Delete_DevNode_Key */
672 /* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */
673 /* FIXME: Obsolete CM_Delete_Range */
674 /* FIXME: Obsolete CM_Detected_Resource_Conflict */
675 /* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
676 /* FIXME: Obsolete CM_Disable_DevNode */
677 /* FIXME: Obsolete CM_Disable_DevNodeEx */
678 
679 CMAPI
680 CONFIGRET
681 WINAPI
682 CM_Disconnect_Machine(
683   /*IN*/ HMACHINE  hMachine);
684 
685 /* FIXME: Obsolete CM_Enable_DevNode */
686 /* FIXME: Obsolete CM_Enable_DevNodeEx */
687 
688 CMAPI
689 CONFIGRET
690 WINAPI
691 CM_Enumerate_Classes(
692   /*IN*/ ULONG  ulClassIndex,
693   /*OUT*/ LPGUID  ClassGuid,
694   /*IN*/ ULONG  ulFlags);
695 
696 CMAPI
697 CONFIGRET
698 WINAPI
699 CM_Enumerate_Classes_Ex(
700   /*IN*/ ULONG  ulClassIndex,
701   /*OUT*/ LPGUID  ClassGuid,
702   /*IN*/ ULONG  ulFlags,
703   /*IN*/ HMACHINE  hMachine);
704 
705 CMAPI
706 CONFIGRET
707 WINAPI
708 CM_Enumerate_EnumeratorsA(
709   /*IN*/ ULONG  ulEnumIndex,
710   /*OUT*/ PCHAR  Buffer,
711   /*IN OUT*/ PULONG  pulLength,
712   /*IN*/ ULONG  ulFlags);
713 
714 CMAPI
715 CONFIGRET
716 WINAPI
717 CM_Enumerate_Enumerators_ExA(
718   /*IN*/ ULONG  ulEnumIndex,
719   /*OUT*/ PCHAR  Buffer,
720   /*IN OUT*/ PULONG  pulLength,
721   /*IN*/ ULONG  ulFlags,
722   /*IN*/ HMACHINE  hMachine);
723 
724 CMAPI
725 CONFIGRET
726 WINAPI
727 CM_Enumerate_Enumerators_ExW(
728   /*IN*/ ULONG  ulEnumIndex,
729   /*OUT*/ PWCHAR  Buffer,
730   /*IN OUT*/ PULONG  pulLength,
731   /*IN*/ ULONG  ulFlags,
732   /*IN*/ HMACHINE  hMachine);
733 
734 CMAPI
735 CONFIGRET
736 WINAPI
737 CM_Enumerate_EnumeratorsW(
738   /*IN*/ ULONG  ulEnumIndex,
739   /*OUT*/ PWCHAR  Buffer,
740   /*IN OUT*/ PULONG  pulLength,
741   /*IN*/ ULONG  ulFlags);
742 
743 #define CM_Enumerate_Enumerators __AW(CM_Enumerate_Enumerators)
744 #define CM_Enumerate_Enumerators_Ex __AW(CM_Enumerate_Enumerators_Ex)
745 
746 /* FIXME: Obsolete CM_Find_Range */
747 /* FIXME: Obsolete CM_First_Range */
748 
749 CMAPI
750 CONFIGRET
751 WINAPI
752 CM_Free_Log_Conf(
753   /*IN*/ LOG_CONF  lcLogConfToBeFreed,
754   /*IN*/ ULONG  ulFlags);
755 
756 CMAPI
757 CONFIGRET
758 WINAPI
759 CM_Free_Log_Conf_Ex(
760   /*IN*/ LOG_CONF  lcLogConfToBeFreed,
761   /*IN*/ ULONG  ulFlags,
762   /*IN*/ HMACHINE  hMachine);
763 
764 CMAPI
765 CONFIGRET
766 WINAPI
767 CM_Free_Log_Conf_Handle(
768   /*IN*/ LOG_CONF  lcLogConf);
769 
770 /* FIXME: Obsolete CM_Free_Range_List */
771 
772 CMAPI
773 CONFIGRET
774 WINAPI
775 CM_Free_Res_Des(
776   /*OUT*/ PRES_DES  prdResDes,
777   /*IN*/ RES_DES  rdResDes,
778   /*IN*/ ULONG  ulFlags);
779 
780 CMAPI
781 CONFIGRET
782 WINAPI
783 CM_Free_Res_Des_Ex(
784   /*OUT*/ PRES_DES  prdResDes,
785   /*IN*/ RES_DES  rdResDes,
786   /*IN*/ ULONG  ulFlags,
787   /*IN*/ HMACHINE  hMachine);
788 
789 CMAPI
790 CONFIGRET
791 WINAPI
792 CM_Free_Res_Des_Handle(
793   /*IN*/ RES_DES  rdResDes);
794 
795 CMAPI
796 CONFIGRET
797 WINAPI
798 CM_Free_Resource_Conflict_Handle(
799   /*IN*/ CONFLICT_LIST  clConflictList);
800 
801 CMAPI
802 CONFIGRET
803 WINAPI
804 CM_Get_Child(
805   /*OUT*/ PDEVINST  pdnDevInst,
806   /*IN*/ DEVINST  dnDevInst,
807   /*IN*/ ULONG  ulFlags);
808 
809 CMAPI
810 CONFIGRET
811 WINAPI
812 CM_Get_Child_Ex(
813   /*OUT*/ PDEVINST  pdnDevInst,
814   /*IN*/ DEVINST  dnDevInst,
815   /*IN*/ ULONG  ulFlags,
816   /*IN*/ HMACHINE  hMachine);
817 
818 /* FIXME: Obsolete CM_Get_Class_Name */
819 /* FIXME: Obsolete CM_Get_Class_Name_Ex */
820 /* FIXME: Obsolete CM_Get_Class_Key_Name */
821 /* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */
822 /* FIXME: Obsolete CM_Get_Class_Registry_Property */
823 
824 CMAPI
825 CONFIGRET
826 WINAPI
827 CM_Get_Depth(
828   /*OUT*/ PULONG  pulDepth,
829   /*IN*/ DEVINST  dnDevInst,
830   /*IN*/ ULONG  ulFlags);
831 
832 CMAPI
833 CONFIGRET
834 WINAPI
835 CM_Get_Depth_Ex(
836   /*OUT*/ PULONG  pulDepth,
837   /*IN*/ DEVINST  dnDevInst,
838   /*IN*/ ULONG  ulFlags,
839   /*IN*/ HMACHINE  hMachine);
840 
841 CMAPI
842 CONFIGRET
843 WINAPI
844 CM_Get_Device_IDA(
845   /*IN*/ DEVINST  dnDevInst,
846   /*OUT*/ PCHAR  Buffer,
847   /*IN*/ ULONG  BufferLen,
848   /*IN*/ ULONG  ulFlags);
849 
850 CMAPI
851 CONFIGRET
852 WINAPI
853 CM_Get_Device_ID_ExA(
854   /*IN*/ DEVINST  dnDevInst,
855   /*OUT*/ PCHAR  Buffer,
856   /*IN*/ ULONG  BufferLen,
857   /*IN*/ ULONG  ulFlags,
858   /*IN*/ HMACHINE  hMachine);
859 
860 CMAPI
861 CONFIGRET
862 WINAPI
863 CM_Get_Device_ID_ExW(
864   /*IN*/ DEVINST  dnDevInst,
865   /*OUT*/ PWCHAR  Buffer,
866   /*IN*/ ULONG  BufferLen,
867   /*IN*/ ULONG  ulFlags,
868   /*IN*/ HMACHINE  hMachine);
869 
870 CMAPI
871 CONFIGRET
872 WINAPI
873 CM_Get_Device_IDW(
874   /*IN*/ DEVINST  dnDevInst,
875   /*OUT*/ PWCHAR  Buffer,
876   /*IN*/ ULONG  BufferLen,
877   /*IN*/ ULONG  ulFlags);
878 
879 #define CM_Get_Device_ID __AW(CM_Get_Device_ID)
880 #define CM_Get_Device_ID_Ex __AW(CM_Get_Device_ID_Ex)
881 
882 CMAPI
883 CONFIGRET
884 WINAPI
885 CM_Get_Device_ID_ListA(
886   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
887   /*OUT*/ PCHAR  Buffer,
888   /*IN*/ ULONG  BufferLen,
889   /*IN*/ ULONG  ulFlags);
890 
891 CMAPI
892 CONFIGRET
893 WINAPI
894 CM_Get_Device_ID_List_ExA(
895   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
896   /*OUT*/ PCHAR  Buffer,
897   /*IN*/ ULONG  BufferLen,
898   /*IN*/ ULONG  ulFlags,
899   /*IN*/ HMACHINE  hMachine);
900 
901 CMAPI
902 CONFIGRET
903 WINAPI
904 CM_Get_Device_ID_List_ExW(
905   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
906   /*OUT*/ PWCHAR  Buffer,
907   /*IN*/ ULONG  BufferLen,
908   /*IN*/ ULONG  ulFlags,
909   /*IN*/ HMACHINE  hMachine);
910 
911 CMAPI
912 CONFIGRET
913 WINAPI
914 CM_Get_Device_ID_ListW(
915   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
916   /*OUT*/ PWCHAR  Buffer,
917   /*IN*/ ULONG  BufferLen,
918   /*IN*/ ULONG  ulFlags);
919 
920 #define CM_Get_Device_ID_List __AW(CM_Get_Device_ID_List)
921 #define CM_Get_Device_ID_List_Ex __AW(CM_Get_Device_ID_List_Ex)
922 
923 CMAPI
924 CONFIGRET
925 WINAPI
926 CM_Get_Device_ID_List_SizeA(
927   /*OUT*/ PULONG  pulLen,
928   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
929   /*IN*/ ULONG  ulFlags);
930 
931 CMAPI
932 CONFIGRET
933 WINAPI
934 CM_Get_Device_ID_List_Size_ExA(
935   /*OUT*/ PULONG  pulLen,
936   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
937   /*IN*/ ULONG  ulFlags,
938   /*IN*/ HMACHINE  hMachine);
939 
940 CMAPI
941 CONFIGRET
942 WINAPI
943 CM_Get_Device_ID_List_Size_ExW(
944   /*OUT*/ PULONG  pulLen,
945   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
946   /*IN*/ ULONG  ulFlags,
947   /*IN*/ HMACHINE  hMachine);
948 
949 CMAPI
950 CONFIGRET
951 WINAPI
952 CM_Get_Device_ID_List_SizeW(
953   /*OUT*/ PULONG  pulLen,
954   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
955   /*IN*/ ULONG  ulFlags);
956 
957 #define CM_Get_Device_ID_List_Size __AW(CM_Get_Device_ID_List_Size)
958 #define CM_Get_Device_ID_List_Size_Ex __AW(CM_Get_Device_ID_List_Size_Ex)
959 
960 CMAPI
961 CONFIGRET
962 WINAPI
963 CM_Get_Device_ID_Size(
964   /*OUT*/ PULONG  pulLen,
965   /*IN*/ DEVINST  dnDevInst,
966   /*IN*/ ULONG  ulFlags);
967 
968 CMAPI
969 CONFIGRET
970 WINAPI
971 CM_Get_Device_ID_Size_Ex(
972   /*OUT*/ PULONG  pulLen,
973   /*IN*/ DEVINST  dnDevInst,
974   /*IN*/ ULONG  ulFlags,
975   /*IN*/ HMACHINE  hMachine);
976 
977 /* FIXME: Obsolete CM_Get_Device_Interface_Alias */
978 /* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
979 /* FIXME: Obsolete CM_Get_Device_Interface_List */
980 /* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
981 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
982 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
983 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
984 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
985 /* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
986 
987 CMAPI
988 CONFIGRET
989 WINAPI
990 CM_Get_DevNode_Status(
991   /*OUT*/ PULONG  pulStatus,
992   /*OUT*/ PULONG  pulProblemNumber,
993   /*IN*/ DEVINST  dnDevInst,
994   /*IN*/ ULONG  ulFlags);
995 
996 CMAPI
997 CONFIGRET
998 WINAPI
999 CM_Get_DevNode_Status_Ex(
1000   /*OUT*/ PULONG  pulStatus,
1001   /*OUT*/ PULONG  pulProblemNumber,
1002   /*IN*/ DEVINST  dnDevInst,
1003   /*IN*/ ULONG  ulFlags,
1004   /*IN*/ HMACHINE  hMachine);
1005 
1006 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
1007 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
1008 
1009 /* CM_Get_First_Log_Conf.ulFlags constants */
1010 #define BASIC_LOG_CONF    0x00000000  /* Specifies the req list. */
1011 #define FILTERED_LOG_CONF 0x00000001  /* Specifies the filtered req list. */
1012 #define ALLOC_LOG_CONF    0x00000002  /* Specifies the Alloc Element. */
1013 #define BOOT_LOG_CONF     0x00000003  /* Specifies the RM Alloc Element. */
1014 #define FORCED_LOG_CONF   0x00000004  /* Specifies the Forced Log Conf */
1015 #define OVERRIDE_LOG_CONF 0x00000005  /* Specifies the Override req list. */
1016 #define NUM_LOG_CONF      0x00000006  /* Number of Log Conf type */
1017 #define LOG_CONF_BITS     0x00000007  /* The bits of the log conf type. */
1018 
1019 CMAPI
1020 CONFIGRET
1021 WINAPI
1022 CM_Get_First_Log_Conf(
1023   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
1024   /*IN*/ DEVINST  dnDevInst,
1025   /*IN*/ ULONG  ulFlags);
1026 
1027 CMAPI
1028 CONFIGRET
1029 WINAPI
1030 CM_Get_First_Log_Conf_Ex(
1031   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
1032   /*IN*/ DEVINST  dnDevInst,
1033   /*IN*/ ULONG  ulFlags,
1034   /*IN*/ HMACHINE  hMachine);
1035 
1036 /* FIXME: Obsolete CM_Get_Global_State */
1037 /* FIXME: Obsolete CM_Get_Global_State_Ex */
1038 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
1039 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
1040 /* FIXME: Obsolete CM_Get_HW_Prof_Flags */
1041 /* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */
1042 
1043 CMAPI
1044 CONFIGRET
1045 WINAPI
1046 CM_Get_Log_Conf_Priority(
1047   /*IN*/ LOG_CONF  lcLogConf,
1048   /*OUT*/ PPRIORITY  pPriority,
1049   /*IN*/ ULONG  ulFlags);
1050 
1051 CMAPI
1052 CONFIGRET
1053 WINAPI
1054 CM_Get_Log_Conf_Priority_Ex(
1055   /*IN*/ LOG_CONF  lcLogConf,
1056   /*OUT*/ PPRIORITY  pPriority,
1057   /*IN*/ ULONG  ulFlags,
1058   /*IN*/ HMACHINE  hMachine);
1059 
1060 CMAPI
1061 CONFIGRET
1062 WINAPI
1063 CM_Get_Next_Log_Conf(
1064   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
1065   /*IN*/ LOG_CONF  lcLogConf,
1066   /*IN*/ ULONG  ulFlags);
1067 
1068 CMAPI
1069 CONFIGRET
1070 WINAPI
1071 CM_Get_Next_Log_Conf_Ex(
1072   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
1073   /*IN*/ LOG_CONF  lcLogConf,
1074   /*IN*/ ULONG  ulFlags,
1075   /*IN*/ HMACHINE  hMachine);
1076 
1077 CMAPI
1078 CONFIGRET
1079 WINAPI
1080 CM_Get_Next_Res_Des(
1081   /*OUT*/ PRES_DES  prdResDes,
1082   /*IN*/ RES_DES  rdResDes,
1083   /*IN*/ RESOURCEID  ForResource,
1084   /*OUT*/ PRESOURCEID  pResourceID,
1085   /*IN*/ ULONG  ulFlags);
1086 
1087 CMAPI
1088 CONFIGRET
1089 WINAPI
1090 CM_Get_Next_Res_Des_Ex(
1091   /*OUT*/ PRES_DES  prdResDes,
1092   /*IN*/ RES_DES  rdResDes,
1093   /*IN*/ RESOURCEID  ForResource,
1094   /*OUT*/ PRESOURCEID  pResourceID,
1095   /*IN*/ ULONG  ulFlags,
1096   /*IN*/ HMACHINE  hMachine);
1097 
1098 CMAPI
1099 CONFIGRET
1100 WINAPI
1101 CM_Get_Parent(
1102   /*OUT*/ PDEVINST  pdnDevInst,
1103   /*IN*/ DEVINST  dnDevInst,
1104   /*IN*/ ULONG  ulFlags);
1105 
1106 CMAPI
1107 CONFIGRET
1108 WINAPI
1109 CM_Get_Parent_Ex(
1110   /*OUT*/ PDEVINST  pdnDevInst,
1111   /*IN*/ DEVINST  dnDevInst,
1112   /*IN*/ ULONG  ulFlags,
1113   /*IN*/ HMACHINE  hMachine);
1114 
1115 CMAPI
1116 CONFIGRET
1117 WINAPI
1118 CM_Get_Res_Des_Data(
1119   /*IN*/ RES_DES  rdResDes,
1120   /*OUT*/ PVOID  Buffer,
1121   /*IN*/ ULONG  BufferLen,
1122   /*IN*/ ULONG  ulFlags);
1123 
1124 CMAPI
1125 CONFIGRET
1126 WINAPI
1127 CM_Get_Res_Des_Data_Ex(
1128   /*IN*/ RES_DES  rdResDes,
1129   /*OUT*/ PVOID  Buffer,
1130   /*IN*/ ULONG  BufferLen,
1131   /*IN*/ ULONG  ulFlags,
1132   /*IN*/ HMACHINE  hMachine);
1133 
1134 CMAPI
1135 CONFIGRET
1136 WINAPI
1137 CM_Get_Res_Des_Data_Size(
1138   /*OUT*/ PULONG  pulSize,
1139   /*IN*/ RES_DES  rdResDes,
1140   /*IN*/ ULONG  ulFlags);
1141 
1142 CMAPI
1143 CONFIGRET
1144 WINAPI
1145 CM_Get_Res_Des_Data_Size_Ex(
1146   /*OUT*/ PULONG  pulSize,
1147   /*IN*/ RES_DES  rdResDes,
1148   /*IN*/ ULONG  ulFlags,
1149   /*IN*/ HMACHINE  hMachine);
1150 
1151 CMAPI
1152 CONFIGRET
1153 WINAPI
1154 CM_Get_Resource_Conflict_Count(
1155   /*IN*/ CONFLICT_LIST  clConflictList,
1156   /*OUT*/ PULONG  pulCount);
1157 
1158 CMAPI
1159 CONFIGRET
1160 WINAPI
1161 CM_Get_Resource_Conflict_DetailsA(
1162   /*IN*/ CONFLICT_LIST  clConflictList,
1163   /*IN*/ ULONG  ulIndex,
1164   /*IN OUT*/ PCONFLICT_DETAILS_A  pConflictDetails);
1165 
1166 CMAPI
1167 CONFIGRET
1168 WINAPI
1169 CM_Get_Resource_Conflict_DetailsW(
1170   /*IN*/ CONFLICT_LIST  clConflictList,
1171   /*IN*/ ULONG  ulIndex,
1172   /*IN OUT*/ PCONFLICT_DETAILS_W  pConflictDetails);
1173 
1174 #define CM_Get_Resource_Conflict_Details __AW(CM_Get_Resource_Conflict_Details)
1175 
1176 CMAPI
1177 CONFIGRET
1178 WINAPI
1179 CM_Get_Sibling(
1180   /*OUT*/ PDEVINST  pdnDevInst,
1181   /*IN*/ DEVINST  DevInst,
1182   /*IN*/ ULONG  ulFlags);
1183 
1184 CMAPI
1185 CONFIGRET
1186 WINAPI
1187 CM_Get_Sibling_Ex(
1188   /*OUT*/ PDEVINST  pdnDevInst,
1189   /*IN*/ DEVINST  DevInst,
1190   /*IN*/ ULONG  ulFlags,
1191   /*IN*/ HMACHINE  hMachine);
1192 
1193 CMAPI
1194 WORD
1195 WINAPI
1196 CM_Get_Version(
1197   VOID);
1198 
1199 CMAPI
1200 WORD
1201 WINAPI
1202 CM_Get_Version_Ex(
1203   /*IN*/ HMACHINE  hMachine);
1204 
1205 /* FIXME: Obsolete CM_Intersect_Range_List */
1206 /* FIXME: Obsolete CM_Invert_Range_List */
1207 /* FIXME: Obsolete CM_Is_Dock_Station_Present */
1208 /* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
1209 
1210 /* CM_Locate_DevNode.ulFlags constants */
1211 #define CM_LOCATE_DEVNODE_NORMAL       		0x00000000
1212 #define CM_LOCATE_DEVNODE_PHANTOM      		0x00000001
1213 #define CM_LOCATE_DEVNODE_CANCELREMOVE 		0x00000002
1214 #define CM_LOCATE_DEVNODE_NOVALIDATION 		0x00000004
1215 #define CM_LOCATE_DEVNODE_BITS         		0x00000007
1216 
1217 #define CM_LOCATE_DEVINST_NORMAL       		CM_LOCATE_DEVNODE_NORMAL
1218 #define CM_LOCATE_DEVINST_PHANTOM      		CM_LOCATE_DEVNODE_PHANTOM
1219 #define CM_LOCATE_DEVINST_CANCELREMOVE 		CM_LOCATE_DEVNODE_CANCELREMOVE
1220 #define CM_LOCATE_DEVINST_NOVALIDATION 		CM_LOCATE_DEVNODE_NOVALIDATION
1221 #define CM_LOCATE_DEVINST_BITS         		CM_LOCATE_DEVNODE_BITS
1222 
1223 CMAPI
1224 CONFIGRET
1225 WINAPI
1226 CM_Locate_DevNodeA(
1227   /*OUT*/ PDEVINST  pdnDevInst,
1228   /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
1229   /*IN*/ ULONG  ulFlags);
1230 
1231 CMAPI
1232 CONFIGRET
1233 WINAPI
1234 CM_Locate_DevNode_ExA(
1235   /*OUT*/ PDEVINST  pdnDevInst,
1236   /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
1237   /*IN*/ ULONG  ulFlags,
1238   /*IN*/ HMACHINE  hMachine);
1239 
1240 CMAPI
1241 CONFIGRET
1242 WINAPI
1243 CM_Locate_DevNode_ExW(
1244   /*OUT*/ PDEVINST  pdnDevInst,
1245   /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
1246   /*IN*/ ULONG  ulFlags,
1247   /*IN*/ HMACHINE  hMachine);
1248 
1249 CMAPI
1250 CONFIGRET
1251 WINAPI
1252 CM_Locate_DevNodeW(
1253   /*OUT*/ PDEVINST  pdnDevInst,
1254   /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
1255   /*IN*/ ULONG  ulFlags);
1256 
1257 #define CM_Locate_DevInstA CM_Locate_DevNodeA
1258 #define CM_Locate_DevInstW CM_Locate_DevNodeW
1259 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
1260 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
1261 
1262 #define CM_Locate_DevNode __AW(CM_Locate_DevNode)
1263 #define CM_Locate_DevInst __AW(CM_Locate_DevNode)
1264 #define CM_Locate_DevNode_Ex __AW(CM_Locate_DevNode_Ex)
1265 #define CM_Locate_DevInst_Ex __AW(CM_Locate_DevNode_Ex)
1266 
1267 /* FIXME: Obsolete CM_Merge_Range_List */
1268 
1269 CMAPI
1270 CONFIGRET
1271 WINAPI
1272 CM_Modify_Res_Des(
1273   /*OUT*/ PRES_DES  prdResDes,
1274   /*IN*/ RES_DES  rdResDes,
1275   /*IN*/ RESOURCEID  ResourceID,
1276   /*IN*/ PCVOID  ResourceData,
1277   /*IN*/ ULONG  ResourceLen,
1278   /*IN*/ ULONG  ulFlags);
1279 
1280 CMAPI
1281 CONFIGRET
1282 WINAPI
1283 CM_Modify_Res_Des_Ex(
1284   /*OUT*/ PRES_DES  prdResDes,
1285   /*IN*/ RES_DES  rdResDes,
1286   /*IN*/ RESOURCEID  ResourceID,
1287   /*IN*/ PCVOID  ResourceData,
1288   /*IN*/ ULONG  ResourceLen,
1289   /*IN*/ ULONG  ulFlags,
1290   /*IN*/ HMACHINE  hMachine);
1291 
1292 /* FIXME: Obsolete CM_Move_DevNode */
1293 /* FIXME: Obsolete CM_Move_DevNode_Ex */
1294 /* FIXME: Obsolete CM_Next_Range */
1295 /* FIXME: Obsolete CM_Open_Class_Key */
1296 /* FIXME: Obsolete CM_Open_Class_Key_Ex */
1297 /* FIXME: Obsolete CM_Open_DevNode_Key */
1298 /* FIXME: Obsolete CM_Open_DevNode_Key_Ex */
1299 
1300 /* CM_Query_And_Remove_SubTree.ulFlags constants */
1301 #define CM_REMOVE_UI_OK             			0x00000000
1302 #define CM_REMOVE_UI_NOT_OK         			0x00000001
1303 #define CM_REMOVE_NO_RESTART        			0x00000002
1304 #define CM_REMOVE_BITS              			0x00000003
1305 
1306 CMAPI
1307 CONFIGRET
1308 WINAPI
1309 CM_Query_And_Remove_SubTreeA(
1310   /*IN*/ DEVINST dnAncestor,
1311   /*OUT*/ PPNP_VETO_TYPE pVetoType,
1312   /*OUT*/ LPSTR pszVetoName,
1313   /*IN*/ ULONG ulNameLength,
1314   /*IN*/ ULONG ulFlags);
1315 
1316 CMAPI
1317 CONFIGRET
1318 WINAPI
1319 CM_Query_And_Remove_SubTreeW(
1320   /*IN*/ DEVINST dnAncestor,
1321   /*OUT*/ PPNP_VETO_TYPE pVetoType,
1322   /*OUT*/ LPWSTR pszVetoName,
1323   /*IN*/ ULONG ulNameLength,
1324   /*IN*/ ULONG ulFlags);
1325 
1326 CMAPI
1327 CONFIGRET
1328 WINAPI
1329 CM_Query_And_Remove_SubTree_ExA(
1330   /*IN*/ DEVINST dnAncestor,
1331   /*OUT*/ PPNP_VETO_TYPE pVetoType,
1332   /*OUT*/ LPSTR pszVetoName,
1333   /*IN*/ ULONG ulNameLength,
1334   /*IN*/ ULONG ulFlags,
1335   /*IN*/ HMACHINE hMachine);
1336 
1337 CMAPI
1338 CONFIGRET
1339 WINAPI
1340 CM_Query_And_Remove_SubTree_ExW(
1341   /*IN*/ DEVINST dnAncestor,
1342   /*OUT*/ PPNP_VETO_TYPE pVetoType,
1343   /*OUT*/ LPWSTR pszVetoName,
1344   /*IN*/ ULONG ulNameLength,
1345   /*IN*/ ULONG ulFlags,
1346   /*IN*/ HMACHINE hMachine);
1347 
1348 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
1349 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
1350 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
1351 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1352 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1353 /* FIXME: Obsolete CM_Query_Remove_SubTree */
1354 /* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
1355 
1356 CMAPI
1357 CONFIGRET
1358 WINAPI
1359 CM_Query_Resource_Conflict_List(
1360   /*OUT*/ PCONFLICT_LIST  pclConflictList,
1361   /*IN*/ DEVINST  dnDevInst,
1362   /*IN*/ RESOURCEID  ResourceID,
1363   /*IN*/ PCVOID  ResourceData,
1364   /*IN*/ ULONG  ResourceLen,
1365   /*IN*/ ULONG  ulFlags,
1366   /*IN*/ HMACHINE  hMachine);
1367 
1368 /* CM_Reenumerate_DevNode.ulFlags constants */
1369 #define CM_REENUMERATE_NORMAL             0x00000000
1370 #define CM_REENUMERATE_SYNCHRONOUS        0x00000001
1371 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
1372 #define CM_REENUMERATE_ASYNCHRONOUS       0x00000004
1373 #define CM_REENUMERATE_BITS               0x00000007
1374 
1375 CMAPI
1376 CONFIGRET
1377 WINAPI
1378 CM_Reenumerate_DevNode(
1379   /*IN*/ DEVINST  dnDevInst,
1380   /*IN*/ ULONG  ulFlags);
1381 
1382 CMAPI
1383 CONFIGRET
1384 WINAPI
1385 CM_Reenumerate_DevNode_Ex(
1386   /*IN*/ DEVINST  dnDevInst,
1387   /*IN*/ ULONG  ulFlags,
1388   /*IN*/ HMACHINE  hMachine);
1389 
1390 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
1391 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
1392 
1393 /* FIXME: Obsolete CM_Register_Device_Driver */
1394 /* FIXME: Obsolete CM_Register_Device_Driver_Ex */
1395 /* FIXME: Obsolete CM_Register_Device_Interface */
1396 /* FIXME: Obsolete CM_Register_Device_Interface_Ex */
1397 /* FIXME: Obsolete CM_Remove_SubTree */
1398 /* FIXME: Obsolete CM_Remove_SubTree_Ex */
1399 
1400 CMAPI
1401 CONFIGRET
1402 WINAPI
1403 CM_Request_Device_EjectA(
1404   /*IN*/ DEVINST  dnDevInst,
1405   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
1406   /*OUT*/ LPSTR  pszVetoName,
1407   /*IN*/ ULONG  ulNameLength,
1408   /*IN*/ ULONG  ulFlags);
1409 
1410 CMAPI
1411 CONFIGRET
1412 WINAPI
1413 CM_Request_Device_Eject_ExW(
1414   /*IN*/ DEVINST  dnDevInst,
1415   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
1416   /*OUT*/ LPWSTR  pszVetoName,
1417   /*IN*/ ULONG  ulNameLength,
1418   /*IN*/ ULONG  ulFlags,
1419   /*IN*/ HMACHINE  hMachine);
1420 
1421 CMAPI
1422 CONFIGRET
1423 WINAPI
1424 CM_Request_Device_Eject_ExA(
1425   /*IN*/ DEVINST  dnDevInst,
1426   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
1427   /*OUT*/ LPSTR  pszVetoName,
1428   /*IN*/ ULONG  ulNameLength,
1429   /*IN*/ ULONG  ulFlags,
1430   /*IN*/ HMACHINE  hMachine);
1431 
1432 CMAPI
1433 CONFIGRET
1434 WINAPI
1435 CM_Request_Device_EjectW(
1436   /*IN*/ DEVINST  dnDevInst,
1437   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
1438   /*OUT*/ LPWSTR  pszVetoName,
1439   /*IN*/ ULONG  ulNameLength,
1440   /*IN*/ ULONG  ulFlags);
1441 
1442 #define CM_Request_Device_Eject __AW(CM_Request_Device_Eject)
1443 #define CM_Request_Device_Eject_Ex __AW(CM_Request_Device_Eject_Ex)
1444 
1445 /* FIXME: Obsolete CM_Request_Eject_PC */
1446 /* FIXME: Obsolete CM_Request_Eject_PC_Ex */
1447 /* FIXME: Obsolete CM_Run_Detection */
1448 /* FIXME: Obsolete CM_Run_Detection_Ex */
1449 /* FIXME: Obsolete CM_Set_Class_Registry_Property */
1450 /* FIXME: Obsolete CM_Set_DevNode_Problem */
1451 /* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
1452 /* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
1453 /* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
1454 /* FIXME: Obsolete CM_Set_HW_Prof */
1455 /* FIXME: Obsolete CM_Set_HW_Prof_Ex */
1456 /* FIXME: Obsolete CM_Set_HW_Prof_Flags */
1457 /* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */
1458 /* FIXME: Obsolete CM_Setup_DevNode */
1459 /* FIXME: Obsolete CM_Setup_DevNode_Ex */
1460 /* FIXME: Obsolete CM_Test_Range_Available */
1461 /* FIXME: Obsolete CM_Uninstall_DevNode */
1462 /* FIXME: Obsolete CM_Uninstall_DevNode_Ex */
1463 /* FIXME: Obsolete CM_Unregister_Device_Interface */
1464 /* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
1465 
1466 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
1467 
1468 CMAPI
1469 DWORD
1470 WINAPI
1471 CMP_WaitNoPendingInstallEvents(
1472   /*IN*/ DWORD dwTimeout);
1473 
1474 #include <poppack.h>
1475 
1476 #ifdef __cplusplus
1477 }
1478 #endif
1479 
1480 #endif /* __CFGMGR32_H */
1481