OSDN Git Service

c18510e4a8814ac5cd008b30a6e355a97dae41d2
[mingw/mingw-org-wsl.git] / include / ddk / cfgmgr32.h
1 /**
2  * @file cfgmgr32.h
3  * @copy 2012 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 */