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