OSDN Git Service

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