4 * PnP configuration manager
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
32 #if defined(_CFGMGR32_)
35 #define CMAPI DECLSPEC_IMPORT
40 #define CR_SUCCESS 0x00000000
41 #define CR_DEFAULT 0x00000001
42 #define CR_OUT_OF_MEMORY 0x00000002
43 #define CR_INVALID_POINTER 0x00000003
44 #define CR_INVALID_FLAG 0x00000004
45 #define CR_INVALID_DEVNODE 0x00000005
46 #define CR_INVALID_DEVINST CR_INVALID_DEVNODE
47 #define CR_INVALID_RES_DES 0x00000006
48 #define CR_INVALID_LOG_CONF 0x00000007
49 #define CR_INVALID_ARBITRATOR 0x00000008
50 #define CR_INVALID_NODELIST 0x00000009
51 #define CR_DEVNODE_HAS_REQS 0x0000000A
52 #define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
53 #define CR_INVALID_RESOURCEID 0x0000000B
54 #define CR_DLVXD_NOT_FOUND 0x0000000C
55 #define CR_NO_SUCH_DEVNODE 0x0000000D
56 #define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
57 #define CR_NO_MORE_LOG_CONF 0x0000000E
58 #define CR_NO_MORE_RES_DES 0x0000000F
59 #define CR_ALREADY_SUCH_DEVNODE 0x00000010
60 #define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
61 #define CR_INVALID_RANGE_LIST 0x00000011
62 #define CR_INVALID_RANGE 0x00000012
63 #define CR_FAILURE 0x00000013
64 #define CR_NO_SUCH_LOGICAL_DEV 0x00000014
65 #define CR_CREATE_BLOCKED 0x00000015
66 #define CR_NOT_SYSTEM_VM 0x00000016
67 #define CR_REMOVE_VETOED 0x00000017
68 #define CR_APM_VETOED 0x00000018
69 #define CR_INVALID_LOAD_TYPE 0x00000019
70 #define CR_BUFFER_SMALL 0x0000001A
71 #define CR_NO_ARBITRATOR 0x0000001B
72 #define CR_NO_REGISTRY_HANDLE 0x0000001C
73 #define CR_REGISTRY_ERROR 0x0000001D
74 #define CR_INVALID_DEVICE_ID 0x0000001E
75 #define CR_INVALID_DATA 0x0000001F
76 #define CR_INVALID_API 0x00000020
77 #define CR_DEVLOADER_NOT_READY 0x00000021
78 #define CR_NEED_RESTART 0x00000022
79 #define CR_NO_MORE_HW_PROFILES 0x00000023
80 #define CR_DEVICE_NOT_THERE 0x00000024
81 #define CR_NO_SUCH_VALUE 0x00000025
82 #define CR_WRONG_TYPE 0x00000026
83 #define CR_INVALID_PRIORITY 0x00000027
84 #define CR_NOT_DISABLEABLE 0x00000028
85 #define CR_FREE_RESOURCES 0x00000029
86 #define CR_QUERY_VETOED 0x0000002A
87 #define CR_CANT_SHARE_IRQ 0x0000002B
88 #define CR_NO_DEPENDENT 0x0000002C
89 #define CR_SAME_RESOURCES 0x0000002D
90 #define CR_NO_SUCH_REGISTRY_KEY 0x0000002E
91 #define CR_INVALID_MACHINENAME 0x0000002F
92 #define CR_REMOTE_COMM_FAILURE 0x00000030
93 #define CR_MACHINE_UNAVAILABLE 0x00000031
94 #define CR_NO_CM_SERVICES 0x00000032
95 #define CR_ACCESS_DENIED 0x00000033
96 #define CR_CALL_NOT_IMPLEMENTED 0x00000034
97 #define CR_INVALID_PROPERTY 0x00000035
98 #define CR_DEVICE_INTERFACE_ACTIVE 0x00000036
99 #define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037
100 #define CR_INVALID_REFERENCE_STRING 0x00000038
101 #define CR_INVALID_CONFLICT_LIST 0x00000039
102 #define CR_INVALID_INDEX 0x0000003A
103 #define CR_INVALID_STRUCTURE_SIZE 0x0000003B
105 #define RegDisposition_OpenAlways 0x00000000
106 #define RegDisposition_OpenExisting 0x00000001
107 #define RegDisposition_Bits 0x00000001
110 typedef DWORD RETURN_TYPE
;
111 typedef RETURN_TYPE CONFIGRET
;
113 typedef HANDLE HMACHINE
;
114 typedef HMACHINE
*PHMACHINE
;
116 typedef DWORD_PTR RES_DES
;
117 typedef RES_DES
*PRES_DES
;
119 typedef DWORD_PTR RANGE_ELEMENT
;
120 typedef RANGE_ELEMENT
*PRANGE_ELEMENT
;
122 typedef ULONG_PTR CONFLICT_LIST
;
123 typedef CONFLICT_LIST
*PCONFLICT_LIST
;
125 typedef DWORD_PTR LOG_CONF
;
126 typedef LOG_CONF
*PLOG_CONF
;
128 typedef ULONG PRIORITY
;
129 typedef PRIORITY
*PPRIORITY
;
131 typedef DWORD_PTR RANGE_LIST
;
132 typedef RANGE_LIST
*PRANGE_LIST
;
134 typedef DWORD DEVNODE
, DEVINST
;
135 typedef DEVNODE
*PDEVNODE
, *PDEVINST
;
137 typedef CHAR
*DEVNODEID_A
, *DEVINSTID_A
;
138 typedef WCHAR
*DEVNODEID_W
, *DEVINSTID_W
;
141 typedef DEVNODEID_W DEVNODEID
;
142 typedef DEVINSTID_W DEVINSTID
;
144 typedef DEVNODEID_A DEVNODEID
;
145 typedef DEVINSTID_A DEVINSTID
;
148 typedef ULONG REGDISPOSITION
;
150 typedef ULONG RESOURCEID
;
151 typedef RESOURCEID
*PRESOURCEID
;
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
159 #define MAX_CONFIG_VALUE 9999
160 #define MAX_INSTANCE_VALUE 9999
162 #define MAX_DEVICE_ID_LEN 200
163 #define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
165 #define MAX_CLASS_NAME_LEN 32
166 #define MAX_GUID_STRING_LEN 39
167 #define MAX_PROFILE_LEN 80
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
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
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
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
224 #define CM_DRP_MIN 0x00000001
225 #define CM_DRP_MAX 0x00000017
227 #define CM_REGISTRY_HARDWARE 0x00000000
228 #define CM_REGISTRY_SOFTWARE 0x00000001
229 #define CM_REGISTRY_USER 0x00000100
230 #define CM_REGISTRY_CONFIG 0x00000200
231 #define CM_REGISTRY_BITS 0x00000301
233 #define CM_DEVCAP_LOCKSUPPORTED 0x00000001
234 #define CM_DEVCAP_EJECTSUPPORTED 0x00000002
235 #define CM_DEVCAP_REMOVABLE 0x00000004
236 #define CM_DEVCAP_DOCKDEVICE 0x00000008
237 #define CM_DEVCAP_UNIQUEID 0x00000010
238 #define CM_DEVCAP_SILENTINSTALL 0x00000020
239 #define CM_DEVCAP_RAWDEVICEOK 0x00000040
240 #define CM_DEVCAP_SURPRISEREMOVALOK 0x00000080
241 #define CM_DEVCAP_HARDWAREDISABLED 0x00000100
242 #define CM_DEVCAP_NONDYNAMIC 0x00000200
244 typedef struct BusNumber_Des_s
{
248 ULONG BUSD_Alloc_Base
;
249 ULONG BUSD_Alloc_End
;
250 } BUSNUMBER_DES
, *PBUSNUMBER_DES
;
252 typedef struct BusNumber_Range_s
{
255 ULONG BUSR_nBusNumbers
;
257 } BUSNUMBER_RANGE
, *PBUSNUMBER_RANGE
;
259 #define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
261 typedef struct BusNumber_Resource_s
{
262 BUSNUMBER_DES BusNumber_Header
;
263 BUSNUMBER_RANGE BusNumber_Data
[ANYSIZE_ARRAY
];
264 } BUSNUMBER_RESOURCE
, *PBUSNUMBER_RESOURCE
;
266 typedef struct CS_Des_s
{
267 DWORD CSD_SignatureLength
;
268 DWORD CSD_LegacyDataOffset
;
269 DWORD CSD_LegacyDataSize
;
272 BYTE CSD_Signature
[ANYSIZE_ARRAY
];
275 typedef struct CS_Resource_s
{
277 } CS_RESOURCE
, *PCS_RESOURCE
;
279 typedef struct DevPrivate_Des_s
{
286 } DEVPRIVATE_DES
, *PDEVPRIVATE_DES
;
288 typedef struct DevPrivate_Range_s
{
292 } DEVPRIVATE_RANGE
, *PDEVPRIVATE_RANGE
;
294 #define PType_Range sizeof(DEVPRIVATE_RANGE)
296 typedef struct DevPrivate_Resource_s
{
297 DEVPRIVATE_DES PRV_Header
;
298 DEVPRIVATE_RANGE PRV_Data
[ANYSIZE_ARRAY
];
299 } DEVPRIVATE_RESOURCE
, *PDEVPRIVATE_RESOURCE
;
301 /* DMA_DES.DD_Flags constants and masks */
302 #define mDD_Width 0x3
305 #define fDD_DWORD 0x2
306 #define fDD_BYTE_AND_WORD 0x3
308 #define mDD_BusMaster 0x4
309 #define fDD_NoBusMaster 0x0
310 #define fDD_BusMaster 0x4
312 #define mDD_Type 0x18
313 #define fDD_TypeStandard 0x00
314 #define fDD_TypeA 0x08
315 #define fDD_TypeB 0x10
316 #define fDD_TypeF 0x18
318 typedef struct DMA_Des_s
{
323 } DMA_DES
, *PDMA_DES
;
325 typedef struct DMA_Range_s
{
329 } DMA_RANGE
, *PDMA_RANGE
;
331 #define DType_Range sizeof(DMA_RANGE)
333 typedef struct DMA_Resource_s
{
335 DMA_RANGE DMA_Data
[ANYSIZE_ARRAY
];
336 } DMA_RESOURCE
, *PDMA_RESOURCE
;
338 /* IO_DES.Type constants and masks */
339 #define fIOD_PortType 0x1
340 #define fIOD_Memory 0x0
342 #define fIOD_DECODE 0x00fc
343 #define fIOD_10_BIT_DECODE 0x0004
344 #define fIOD_12_BIT_DECODE 0x0008
345 #define fIOD_16_BIT_DECODE 0x0010
346 #define fIOD_POSITIVE_DECODE 0x0020
347 #define fIOD_PASSIVE_DECODE 0x0040
348 #define fIOD_WINDOW_DECODE 0x0080
350 typedef struct IO_Des_s
{
353 DWORDLONG IOD_Alloc_Base
;
354 DWORDLONG IOD_Alloc_End
;
358 /* IO_RANGE.IOR_Alias constants */
359 #define IO_ALIAS_10_BIT_DECODE 0x00000004
360 #define IO_ALIAS_12_BIT_DECODE 0x00000010
361 #define IO_ALIAS_16_BIT_DECODE 0x00000000
362 #define IO_ALIAS_POSITIVE_DECODE 0x000000FF
364 typedef struct IO_Range_s
{
369 DWORD IOR_RangeFlags
;
371 } IO_RANGE
, *PIO_RANGE
;
373 #define IOType_Range sizeof(IO_RANGE)
375 typedef struct IO_Resource_s
{
377 IO_RANGE IO_Data
[ANYSIZE_ARRAY
];
378 } IO_RESOURCE
, *PIO_RESOURCE
;
380 /* IRQ_DES.IRQD_flags constants */
381 #define mIRQD_Share 0x1
382 #define fIRQD_Exclusive 0x0
383 #define fIRQD_Share 0x1
385 #define fIRQD_Share_Bit 0
386 #define fIRQD_Level_Bit 1
388 #define mIRQD_Edge_Level 0x2
389 #define fIRQD_Level 0x0
390 #define fIRQD_Edge 0x2
392 typedef struct IRQ_Des_32_s
{
396 ULONG IRQD_Alloc_Num
;
397 ULONG32 IRQD_Affinity
;
398 } IRQ_DES_32
, *PIRQ_DES_32
;
400 typedef struct IRQ_Des_64_s
{
404 ULONG IRQD_Alloc_Num
;
405 ULONG64 IRQD_Affinity
;
406 } IRQ_DES_64
, *PIRQ_DES_64
;
409 typedef IRQ_DES_64 IRQ_DES
;
410 typedef PIRQ_DES_64 PIRQ_DES
;
412 typedef IRQ_DES_32 IRQ_DES
;
413 typedef PIRQ_DES_32 PIRQ_DES
;
416 typedef struct IRQ_Range_s
{
420 } IRQ_RANGE
, *PIRQ_RANGE
;
422 #define IRQType_Range sizeof(IRQ_RANGE)
424 typedef struct IRQ_Resource_s
{
426 IRQ_RANGE IRQ_Data
[ANYSIZE_ARRAY
];
427 } IRQ_RESOURCE
, *PIRQ_RESOURCE
;
429 /* MEM_DES.MD_Flags constants */
430 #define mMD_MemoryType 0x1
431 #define fMD_MemoryType mMD_MemoryType
435 #define mMD_32_24 0x2
436 #define fMD_32_24 mMD_32_24
440 #define mMD_Prefetchable 0x4
441 #define fMD_Prefetchable mMD_Prefetchable
442 #define fMD_Pref mMD_Prefetchable
443 #define fMD_PrefetchDisallowed 0x0
444 #define fMD_PrefetchAllowed 0x4
446 #define mMD_Readable 0x8
447 #define fMD_Readable mMD_Readable
448 #define fMD_ReadAllowed 0x0
449 #define fMD_ReadDisallowed 0x8
451 #define mMD_CombinedWrite 0x10
452 #define fMD_CombinedWrite mMD_CombinedWrite
453 #define fMD_CombinedWriteDisallowed 0x0
454 #define fMD_CombinedWriteAllowed 0x10
456 #define mMD_Cacheable 0x20
457 #define fMD_NonCacheable 0x0
458 #define fMD_Cacheable 0x20
460 typedef struct Mem_Des_s
{
463 DWORDLONG MD_Alloc_Base
;
464 DWORDLONG MD_Alloc_End
;
467 } MEM_DES
, *PMEM_DES
;
469 typedef struct Mem_Range_s
{
476 } MEM_RANGE
, *PMEM_RANGE
;
478 #define MType_Range sizeof(MEM_RANGE)
480 typedef struct Mem_Resource_s
{
482 MEM_RANGE MEM_Data
[ANYSIZE_ARRAY
];
483 } MEM_RESOURCE
, *PMEM_RESOURCE
;
485 /* MFCARD_DES.PMF_Flags constants */
486 #define fPMF_AUDIO_ENABLE 0x8
487 #define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE
489 typedef struct MfCard_Des_s
{
493 BYTE PMF_ConfigOptions
;
494 BYTE PMF_IoResourceIndex
;
495 BYTE PMF_Reserved
[2];
496 DWORD PMF_ConfigRegisterBase
;
497 } MFCARD_DES
, *PMFCARD_DES
;
499 typedef struct MfCard_Resource_s
{
500 MFCARD_DES MfCard_Header
;
501 } MFCARD_RESOURCE
, *PMFCARD_RESOURCE
;
503 /* PCCARD_DES.PCD_Flags constants */
505 typedef struct PcCard_Des_s
{
509 BYTE PCD_ConfigIndex
;
510 BYTE PCD_Reserved
[3];
511 DWORD PCD_MemoryCardBase1
;
512 DWORD PCD_MemoryCardBase2
;
513 } PCCARD_DES
, *PPCCARD_DES
;
515 #define mPCD_IO_8_16 0x1
516 #define fPCD_IO_8 0x0
517 #define fPCD_IO_16 0x1
518 #define mPCD_MEM_8_16 0x2
519 #define fPCD_MEM_8 0x0
520 #define fPCD_MEM_16 0x2
521 #define mPCD_MEM_A_C 0xC
522 #define fPCD_MEM1_A 0x4
523 #define fPCD_MEM2_A 0x8
524 #define fPCD_IO_ZW_8 0x10
525 #define fPCD_IO_SRC_16 0x20
526 #define fPCD_IO_WS_16 0x40
527 #define mPCD_MEM_WS 0x300
528 #define fPCD_MEM_WS_ONE 0x100
529 #define fPCD_MEM_WS_TWO 0x200
530 #define fPCD_MEM_WS_THREE 0x300
532 #define fPCD_MEM_A 0x4
534 #define fPCD_ATTRIBUTES_PER_WINDOW 0x8000
536 #define fPCD_IO1_16 0x00010000
537 #define fPCD_IO1_ZW_8 0x00020000
538 #define fPCD_IO1_SRC_16 0x00040000
539 #define fPCD_IO1_WS_16 0x00080000
541 #define fPCD_IO2_16 0x00100000
542 #define fPCD_IO2_ZW_8 0x00200000
543 #define fPCD_IO2_SRC_16 0x00400000
544 #define fPCD_IO2_WS_16 0x00800000
546 #define mPCD_MEM1_WS 0x03000000
547 #define fPCD_MEM1_WS_ONE 0x01000000
548 #define fPCD_MEM1_WS_TWO 0x02000000
549 #define fPCD_MEM1_WS_THREE 0x03000000
550 #define fPCD_MEM1_16 0x04000000
552 #define mPCD_MEM2_WS 0x30000000
553 #define fPCD_MEM2_WS_ONE 0x10000000
554 #define fPCD_MEM2_WS_TWO 0x20000000
555 #define fPCD_MEM2_WS_THREE 0x30000000
556 #define fPCD_MEM2_16 0x40000000
558 #define PCD_MAX_MEMORY 2
561 typedef struct PcCard_Resource_s
{
562 PCCARD_DES PcCard_Header
;
563 } PCCARD_RESOURCE
, *PPCCARD_RESOURCE
;
566 /* CONFLICT_DETAILS.CD.ulMask constants */
567 #define CM_CDMASK_DEVINST 0x00000001
568 #define CM_CDMASK_RESDES 0x00000002
569 #define CM_CDMASK_FLAGS 0x00000004
570 #define CM_CDMASK_DESCRIPTION 0x00000008
571 #define CM_CDMASK_VALID 0x0000000F
573 /* CONFLICT_DETAILS.CD.ulFlags constants */
574 #define CM_CDFLAGS_DRIVER 0x00000001
575 #define CM_CDFLAGS_ROOT_OWNED 0x00000002
576 #define CM_CDFLAGS_RESERVED 0x00000004
578 typedef struct _CONFLICT_DETAILS_A
{
581 DEVINST CD_dnDevInst
;
584 CHAR CD_szDescription
[MAX_PATH
];
585 } CONFLICT_DETAILS_A
, *PCONFLICT_DETAILS_A
;
587 typedef struct _CONFLICT_DETAILS_W
{
590 DEVINST CD_dnDevInst
;
593 WCHAR CD_szDescription
[MAX_PATH
];
594 } CONFLICT_DETAILS_W
, *PCONFLICT_DETAILS_W
;
597 typedef CONFLICT_DETAILS_W CONFLICT_DETAILS
;
598 typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS
;
600 typedef CONFLICT_DETAILS_A CONFLICT_DETAILS
;
601 typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS
;
605 #define CMP_MAGIC 0x01234567
617 CMP_RegisterNotification(
618 IN HANDLE hRecipient
,
619 IN LPVOID lpvNotificationFilter
,
621 OUT PULONG pluhDevNotify
);
628 IN DWORD dwProcessId
);
633 CMP_UnregisterNotification(IN ULONG luhDevNotify
);
635 /* FIXME: Missing CMP_WaitNoPendingInstallEvents */
636 /* FIXME: Missing CMP_WaitServicesAvailable */
638 /* CM_Add_Empty_Log_Conf.ulFlags constants */
639 #define BASIC_LOG_CONF 0x00000000
640 #define FILTERED_LOG_CONF 0x00000001
641 #define ALLOC_LOG_CONF 0x00000002
642 #define BOOT_LOG_CONF 0x00000003
643 #define FORCED_LOG_CONF 0x00000004
644 #define OVERRIDE_LOG_CONF 0x00000005
645 #define NUM_LOG_CONF 0x00000006
646 #define LOG_CONF_BITS 0x00000007
648 #define PRIORITY_EQUAL_FIRST 0x00000008
649 #define PRIORITY_EQUAL_LAST 0x00000000
650 #define PRIORITY_BIT 0x00000008
655 CM_Add_Empty_Log_Conf(
656 OUT PLOG_CONF plcLogConf
,
657 IN DEVINST dnDevInst
,
658 IN PRIORITY Priority
,
664 CM_Add_Empty_Log_Conf_Ex(
665 OUT PLOG_CONF plcLogConf
,
666 IN DEVINST dnDevInst
,
667 IN PRIORITY Priority
,
669 IN HMACHINE hMachine
);
671 /* CM_Add_ID.ulFlags constants */
672 #define CM_ADD_ID_HARDWARE 0x00000000
673 #define CM_ADD_ID_COMPATIBLE 0x00000001
674 #define CM_ADD_ID_BITS 0x00000001
680 IN DEVINST dnDevInst
,
688 IN DEVINST dnDevInst
,
691 IN HMACHINE hMachine
);
697 IN DEVINST dnDevInst
,
700 IN HMACHINE hMachine
);
706 IN DEVINST dnDevInst
,
711 #define CM_Add_ID CM_Add_IDW
712 #define CM_Add_ID_Ex CM_Add_ID_ExW
714 #define CM_Add_ID CM_Add_IDA
715 #define CM_Add_ID_Ex CM_Add_ID_ExA
718 /* FIXME: Obsolete CM_Add_Range */
724 OUT PRES_DES prdResDes
,
725 IN LOG_CONF lcLogConf
,
726 IN RESOURCEID ResourceID
,
727 IN PCVOID ResourceData
,
728 IN ULONG ResourceLen
,
735 OUT PRES_DES prdResDes
,
736 IN LOG_CONF lcLogConf
,
737 IN RESOURCEID ResourceID
,
738 IN PCVOID ResourceData
,
739 IN ULONG ResourceLen
,
741 IN HMACHINE hMachine
);
747 IN PCSTR UNCServerName
,
748 OUT PHMACHINE phMachine
);
754 IN PCWSTR UNCServerName
,
755 OUT PHMACHINE phMachine
);
758 #define CM_Connect_Machine CM_Connect_MachineW
760 #define CM_Connect_Machine CM_Connect_MachineA
763 /* Flags for CM_Create_DevNode[_Ex].ulFlags constants */
764 #define CM_CREATE_DEVNODE_NORMAL 0x00000000
765 #define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001
766 #define CM_CREATE_DEVNODE_PHANTOM 0x00000002
767 #define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004
768 #define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008
769 #define CM_CREATE_DEVNODE_BITS 0x0000000F
771 #define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
772 #define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
773 #define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
774 #define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
775 #define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
776 #define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
782 OUT PDEVINST pdnDevInst
,
783 IN DEVINSTID_A pDeviceID
,
791 OUT PDEVINST pdnDevInst
,
792 IN DEVINSTID_W pDeviceID
,
799 CM_Create_DevNode_ExA(
800 OUT PDEVINST pdnDevInst
,
801 IN DEVINSTID_A pDeviceID
,
809 CM_Create_DevNode_ExW(
810 OUT PDEVINST pdnDevInst
,
811 IN DEVINSTID_W pDeviceID
,
816 #define CM_Create_DevInstW CM_Create_DevNodeW
817 #define CM_Create_DevInstA CM_Create_DevNodeA
818 #define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
819 #define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
821 #define CM_Create_DevNode CM_Create_DevNodeW
822 #define CM_Create_DevInst CM_Create_DevNodeW
823 #define CM_Create_DevNode_Ex CM_Create_DevNode_ExW
824 #define CM_Create_DevInst_Ex CM_Create_DevInst_ExW
826 #define CM_Create_DevNode CM_Create_DevNodeA
827 #define CM_Create_DevInst CM_Create_DevNodeA
828 #define CM_Create_DevNode_Ex CM_Create_DevNode_ExA
829 #define CM_Create_DevInst_Ex CM_Create_DevNode_ExA
832 /* FIXME: Obsolete CM_Create_Range_List */
834 /* Flags for CM_Delete_Class_Key.ulFlags constants */
835 #define CM_DELETE_CLASS_ONLY 0x00000000
836 #define CM_DELETE_CLASS_SUBKEYS 0x00000001
837 #define CM_DELETE_CLASS_BITS 0x00000001
849 CM_Delete_Class_Key_Ex(
857 CM_Delete_DevNode_Key(
858 IN DEVNODE dnDevNode
,
859 IN ULONG ulHardwareProfile
,
865 CM_Delete_DevNode_Key_Ex(
866 IN DEVNODE dnDevNode
,
867 IN ULONG ulHardwareProfile
,
871 #define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
872 #define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
874 /* FIXME: Obsolete CM_Delete_Range */
875 /* FIXME: Obsolete CM_Detected_Resource_Conflict */
876 /* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
882 IN DEVINST dnDevInst
,
888 CM_Disable_DevNode_Ex(
889 IN DEVINST dnDevInst
,
891 IN HMACHINE hMachine
);
893 #define CM_Disable_DevInst CM_Disable_DevNode
894 #define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
899 CM_Disconnect_Machine(
900 IN HMACHINE hMachine
);
906 IN DEVINST dnDevInst
,
912 CM_Enable_DevNode_Ex(
913 IN DEVINST dnDevInst
,
915 IN HMACHINE hMachine
);
917 #define CM_Enable_DevInst CM_Enable_DevNode
918 #define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
923 CM_Enumerate_Classes(
924 IN ULONG ulClassIndex
,
925 OUT LPGUID ClassGuid
,
931 CM_Enumerate_Classes_Ex(
932 IN ULONG ulClassIndex
,
933 OUT LPGUID ClassGuid
,
935 IN HMACHINE hMachine
);
940 CM_Enumerate_EnumeratorsA(
941 IN ULONG ulEnumIndex
,
943 IN OUT PULONG pulLength
,
949 CM_Enumerate_Enumerators_ExA(
950 IN ULONG ulEnumIndex
,
952 IN OUT PULONG pulLength
,
954 IN HMACHINE hMachine
);
959 CM_Enumerate_Enumerators_ExW(
960 IN ULONG ulEnumIndex
,
962 IN OUT PULONG pulLength
,
964 IN HMACHINE hMachine
);
969 CM_Enumerate_EnumeratorsW(
970 IN ULONG ulEnumIndex
,
972 IN OUT PULONG pulLength
,
976 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
977 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
979 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
980 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA
983 /* FIXME: Obsolete CM_Find_Range */
984 /* FIXME: Obsolete CM_First_Range */
990 IN LOG_CONF lcLogConfToBeFreed
,
997 IN LOG_CONF lcLogConfToBeFreed
,
999 IN HMACHINE hMachine
);
1004 CM_Free_Log_Conf_Handle(
1005 IN LOG_CONF lcLogConf
);
1007 /* FIXME: Obsolete CM_Free_Range_List */
1013 OUT PRES_DES prdResDes
,
1014 IN RES_DES rdResDes
,
1021 OUT PRES_DES prdResDes
,
1022 IN RES_DES rdResDes
,
1024 IN HMACHINE hMachine
);
1029 CM_Free_Res_Des_Handle(
1030 IN RES_DES rdResDes
);
1035 CM_Free_Resource_Conflict_Handle(
1036 IN CONFLICT_LIST clConflictList
);
1042 OUT PDEVINST pdnDevInst
,
1043 IN DEVINST dnDevInst
,
1050 OUT PDEVINST pdnDevInst
,
1051 IN DEVINST dnDevInst
,
1053 IN HMACHINE hMachine
);
1059 IN LPGUID ClassGuid
,
1061 IN OUT PULONG pulLength
,
1068 IN LPGUID ClassGuid
,
1070 IN OUT PULONG pulLength
,
1076 CM_Get_Class_Name_ExA(
1077 IN LPGUID ClassGuid
,
1079 IN OUT PULONG pulLength
,
1081 IN HMACHINE hMachine
);
1086 CM_Get_Class_Name_ExW(
1087 IN LPGUID ClassGuid
,
1089 IN OUT PULONG pulLength
,
1091 IN HMACHINE hMachine
);
1094 #define CM_Get_Class_Name CM_Get_Class_NameW
1095 #define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW
1097 #define CM_Get_Class_Name CM_Get_Class_NameA
1098 #define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA
1099 #endif /* UNICODE */
1104 CM_Get_Class_Key_NameA(
1105 IN LPGUID ClassGuid
,
1106 OUT LPSTR pszKeyName
,
1107 IN OUT PULONG pulLength
,
1113 CM_Get_Class_Key_NameW(
1114 IN LPGUID ClassGuid
,
1115 OUT LPWSTR pszKeyName
,
1116 IN OUT PULONG pulLength
,
1122 CM_Get_Class_Key_Name_ExA(
1123 IN LPGUID ClassGuid
,
1124 OUT LPSTR pszKeyName
,
1125 IN OUT PULONG pulLength
,
1127 IN HMACHINE hMachine
);
1132 CM_Get_Class_Key_Name_ExW(
1133 IN LPGUID ClassGuid
,
1134 OUT LPWSTR pszKeyName
,
1135 IN OUT PULONG pulLength
,
1137 IN HMACHINE hMachine
);
1140 #define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW
1141 #define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW
1143 #define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA
1144 #define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA
1145 #endif /* UNICODE */
1147 /* FIXME: Obsolete CM_Get_Class_Registry_Property */
1153 OUT PULONG pulDepth
,
1154 IN DEVINST dnDevInst
,
1161 OUT PULONG pulDepth
,
1162 IN DEVINST dnDevInst
,
1164 IN HMACHINE hMachine
);
1170 IN DEVINST dnDevInst
,
1178 CM_Get_Device_ID_ExA(
1179 IN DEVINST dnDevInst
,
1183 IN HMACHINE hMachine
);
1188 CM_Get_Device_ID_ExW(
1189 IN DEVINST dnDevInst
,
1193 IN HMACHINE hMachine
);
1199 IN DEVINST dnDevInst
,
1205 #define CM_Get_Device_ID CM_Get_Device_IDW
1206 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
1208 #define CM_Get_Device_ID CM_Get_Device_IDA
1209 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA
1210 #endif /* UNICODE */
1215 CM_Get_Device_ID_ListA(
1216 IN PCSTR pszFilter
, OPTIONAL
1224 CM_Get_Device_ID_List_ExA(
1225 IN PCSTR pszFilter
, OPTIONAL
1229 IN HMACHINE hMachine
);
1234 CM_Get_Device_ID_List_ExW(
1235 IN PCWSTR pszFilter
, OPTIONAL
1239 IN HMACHINE hMachine
);
1244 CM_Get_Device_ID_ListW(
1245 IN PCWSTR pszFilter
, OPTIONAL
1251 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
1252 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
1254 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
1255 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
1256 #endif /* UNICODE */
1261 CM_Get_Device_ID_List_SizeA(
1263 IN PCSTR pszFilter
, OPTIONAL
1269 CM_Get_Device_ID_List_Size_ExA(
1271 IN PCSTR pszFilter
, OPTIONAL
1273 IN HMACHINE hMachine
);
1278 CM_Get_Device_ID_List_Size_ExW(
1280 IN PCWSTR pszFilter
, OPTIONAL
1282 IN HMACHINE hMachine
);
1287 CM_Get_Device_ID_List_SizeW(
1289 IN PCWSTR pszFilter
, OPTIONAL
1293 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
1294 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
1296 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
1297 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
1298 #endif /* UNICODE */
1303 CM_Get_Device_ID_Size(
1305 IN DEVINST dnDevInst
,
1311 CM_Get_Device_ID_Size_Ex(
1313 IN DEVINST dnDevInst
,
1315 IN HMACHINE hMachine
);
1317 /* FIXME: Obsolete CM_Get_Device_Interface_Alias */
1318 /* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
1319 /* FIXME: Obsolete CM_Get_Device_Interface_List */
1320 /* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
1321 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
1322 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
1323 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
1324 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
1329 CM_Get_DevNode_Registry_PropertyA(
1330 IN DEVINST dnDevInst
,
1331 IN ULONG ulProperty
,
1332 OUT PULONG pulRegDataType
, OPTIONAL
1333 OUT PVOID Buffer
, OPTIONAL
1334 IN OUT PULONG pulLength
,
1340 CM_Get_DevNode_Registry_PropertyW(
1341 IN DEVINST dnDevInst
,
1342 IN ULONG ulProperty
,
1343 OUT PULONG pulRegDataType
, OPTIONAL
1344 OUT PVOID Buffer
, OPTIONAL
1345 IN OUT PULONG pulLength
,
1351 CM_Get_DevNode_Registry_Property_ExA(
1352 IN DEVINST dnDevInst
,
1353 IN ULONG ulProperty
,
1354 OUT PULONG pulRegDataType
, OPTIONAL
1355 OUT PVOID Buffer
, OPTIONAL
1356 IN OUT PULONG pulLength
,
1358 IN HMACHINE hMachine
);
1363 CM_Get_DevNode_Registry_Property_ExW(
1364 IN DEVINST dnDevInst
,
1365 IN ULONG ulProperty
,
1366 OUT PULONG pulRegDataType
, OPTIONAL
1367 OUT PVOID Buffer
, OPTIONAL
1368 IN OUT PULONG pulLength
,
1370 IN HMACHINE hMachine
);
1372 #define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
1373 #define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
1374 #define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
1375 #define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
1378 #define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW
1379 #define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1380 #define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
1381 #define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1383 #define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA
1384 #define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1385 #define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
1386 #define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1387 #endif /* UNICODE */
1392 CM_Get_DevNode_Status(
1393 OUT PULONG pulStatus
,
1394 OUT PULONG pulProblemNumber
,
1395 IN DEVINST dnDevInst
,
1401 CM_Get_DevNode_Status_Ex(
1402 OUT PULONG pulStatus
,
1403 OUT PULONG pulProblemNumber
,
1404 IN DEVINST dnDevInst
,
1406 IN HMACHINE hMachine
);
1408 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
1409 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
1411 /* CM_Get_First_Log_Conf.ulFlags constants */
1412 #define BASIC_LOG_CONF 0x00000000 /* Specifies the req list. */
1413 #define FILTERED_LOG_CONF 0x00000001 /* Specifies the filtered req list. */
1414 #define ALLOC_LOG_CONF 0x00000002 /* Specifies the Alloc Element. */
1415 #define BOOT_LOG_CONF 0x00000003 /* Specifies the RM Alloc Element. */
1416 #define FORCED_LOG_CONF 0x00000004 /* Specifies the Forced Log Conf */
1417 #define OVERRIDE_LOG_CONF 0x00000005 /* Specifies the Override req list. */
1418 #define NUM_LOG_CONF 0x00000006 /* Number of Log Conf type */
1419 #define LOG_CONF_BITS 0x00000007 /* The bits of the log conf type. */
1424 CM_Get_First_Log_Conf(
1425 OUT PLOG_CONF plcLogConf
, OPTIONAL
1426 IN DEVINST dnDevInst
,
1432 CM_Get_First_Log_Conf_Ex(
1433 OUT PLOG_CONF plcLogConf
, OPTIONAL
1434 IN DEVINST dnDevInst
,
1436 IN HMACHINE hMachine
);
1441 CM_Get_Global_State(
1442 OUT PULONG pulState
,
1448 CM_Get_Global_State_Ex(
1449 OUT PULONG pulState
,
1451 IN HMACHINE hMachine
);
1453 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
1454 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
1459 CM_Get_HW_Prof_FlagsA(
1460 IN DEVINSTID_A szDevInstName
,
1461 IN ULONG ulHardwareProfile
,
1462 OUT PULONG pulValue
,
1468 CM_Get_HW_Prof_FlagsW(
1469 IN DEVINSTID_W szDevInstName
,
1470 IN ULONG ulHardwareProfile
,
1471 OUT PULONG pulValue
,
1477 CM_Get_HW_Prof_Flags_ExA(
1478 IN DEVINSTID_A szDevInstName
,
1479 IN ULONG ulHardwareProfile
,
1480 OUT PULONG pulValue
,
1482 IN HMACHINE hMachine
);
1487 CM_Get_HW_Prof_Flags_ExW(
1488 IN DEVINSTID_W szDevInstName
,
1489 IN ULONG ulHardwareProfile
,
1490 OUT PULONG pulValue
,
1492 IN HMACHINE hMachine
);
1495 #define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW
1496 #define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW
1498 #define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA
1499 #define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA
1500 #endif /* UNICODE */
1505 CM_Get_Log_Conf_Priority(
1506 IN LOG_CONF lcLogConf
,
1507 OUT PPRIORITY pPriority
,
1513 CM_Get_Log_Conf_Priority_Ex(
1514 IN LOG_CONF lcLogConf
,
1515 OUT PPRIORITY pPriority
,
1517 IN HMACHINE hMachine
);
1522 CM_Get_Next_Log_Conf(
1523 OUT PLOG_CONF plcLogConf
, OPTIONAL
1524 IN LOG_CONF lcLogConf
,
1530 CM_Get_Next_Log_Conf_Ex(
1531 OUT PLOG_CONF plcLogConf
, OPTIONAL
1532 IN LOG_CONF lcLogConf
,
1534 IN HMACHINE hMachine
);
1539 CM_Get_Next_Res_Des(
1540 OUT PRES_DES prdResDes
,
1541 IN RES_DES rdResDes
,
1542 IN RESOURCEID ForResource
,
1543 OUT PRESOURCEID pResourceID
,
1549 CM_Get_Next_Res_Des_Ex(
1550 OUT PRES_DES prdResDes
,
1551 IN RES_DES rdResDes
,
1552 IN RESOURCEID ForResource
,
1553 OUT PRESOURCEID pResourceID
,
1555 IN HMACHINE hMachine
);
1561 OUT PDEVINST pdnDevInst
,
1562 IN DEVINST dnDevInst
,
1569 OUT PDEVINST pdnDevInst
,
1570 IN DEVINST dnDevInst
,
1572 IN HMACHINE hMachine
);
1577 CM_Get_Res_Des_Data(
1578 IN RES_DES rdResDes
,
1586 CM_Get_Res_Des_Data_Ex(
1587 IN RES_DES rdResDes
,
1591 IN HMACHINE hMachine
);
1596 CM_Get_Res_Des_Data_Size(
1598 IN RES_DES rdResDes
,
1604 CM_Get_Res_Des_Data_Size_Ex(
1606 IN RES_DES rdResDes
,
1608 IN HMACHINE hMachine
);
1613 CM_Get_Resource_Conflict_Count(
1614 IN CONFLICT_LIST clConflictList
,
1615 OUT PULONG pulCount
);
1620 CM_Get_Resource_Conflict_DetailsA(
1621 IN CONFLICT_LIST clConflictList
,
1623 IN OUT PCONFLICT_DETAILS_A pConflictDetails
);
1628 CM_Get_Resource_Conflict_DetailsW(
1629 IN CONFLICT_LIST clConflictList
,
1631 IN OUT PCONFLICT_DETAILS_W pConflictDetails
);
1634 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
1636 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
1637 #endif /* UNICODE */
1643 OUT PDEVINST pdnDevInst
,
1651 OUT PDEVINST pdnDevInst
,
1654 IN HMACHINE hMachine
);
1666 IN HMACHINE hMachine
);
1668 /* FIXME: Obsolete CM_Intersect_Range_List */
1669 /* FIXME: Obsolete CM_Invert_Range_List */
1674 CM_Is_Dock_Station_Present(
1675 OUT PBOOL pbPresent
);
1680 CM_Is_Dock_Station_Present_Ex(
1681 OUT PBOOL pbPresent
,
1682 IN HMACHINE hMachine
);
1684 /* CM_Locate_DevNode.ulFlags constants */
1685 #define CM_LOCATE_DEVNODE_NORMAL 0x00000000
1686 #define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
1687 #define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
1688 #define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
1689 #define CM_LOCATE_DEVNODE_BITS 0x00000007
1691 #define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
1692 #define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
1693 #define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
1694 #define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
1695 #define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
1701 OUT PDEVINST pdnDevInst
,
1702 IN DEVINSTID_A pDeviceID
, OPTIONAL
1708 CM_Locate_DevNode_ExA(
1709 OUT PDEVINST pdnDevInst
,
1710 IN DEVINSTID_A pDeviceID
, OPTIONAL
1712 IN HMACHINE hMachine
);
1717 CM_Locate_DevNode_ExW(
1718 OUT PDEVINST pdnDevInst
,
1719 IN DEVINSTID_W pDeviceID
, OPTIONAL
1721 IN HMACHINE hMachine
);
1727 OUT PDEVINST pdnDevInst
,
1728 IN DEVINSTID_W pDeviceID
, OPTIONAL
1731 #define CM_Locate_DevInstA CM_Locate_DevNodeA
1732 #define CM_Locate_DevInstW CM_Locate_DevNodeW
1733 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
1734 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
1737 #define CM_Locate_DevNode CM_Locate_DevNodeW
1738 #define CM_Locate_DevInst CM_Locate_DevNodeW
1739 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
1740 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
1742 #define CM_Locate_DevNode CM_Locate_DevNodeA
1743 #define CM_Locate_DevInst CM_Locate_DevNodeA
1744 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
1745 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
1746 #endif /* UNICODE */
1748 /* FIXME: Obsolete CM_Merge_Range_List */
1754 OUT PRES_DES prdResDes
,
1755 IN RES_DES rdResDes
,
1756 IN RESOURCEID ResourceID
,
1757 IN PCVOID ResourceData
,
1758 IN ULONG ResourceLen
,
1764 CM_Modify_Res_Des_Ex(
1765 OUT PRES_DES prdResDes
,
1766 IN RES_DES rdResDes
,
1767 IN RESOURCEID ResourceID
,
1768 IN PCVOID ResourceData
,
1769 IN ULONG ResourceLen
,
1771 IN HMACHINE hMachine
);
1773 /* FIXME: Obsolete CM_Move_DevNode */
1774 /* FIXME: Obsolete CM_Move_DevNode_Ex */
1775 /* FIXME: Obsolete CM_Next_Range */
1781 IN LPGUID ClassGuid
, OPTIONAL
1782 IN LPCSTR pszClassName
, OPTIONAL
1783 IN REGSAM samDesired
,
1784 IN REGDISPOSITION Disposition
,
1792 IN LPGUID ClassGuid
, OPTIONAL
1793 IN LPCWSTR pszClassName
, OPTIONAL
1794 IN REGSAM samDesired
,
1795 IN REGDISPOSITION Disposition
,
1802 CM_Open_Class_Key_ExA(
1803 IN LPGUID pszClassGuid
, OPTIONAL
1804 IN LPCSTR pszClassName
, OPTIONAL
1805 IN REGSAM samDesired
,
1806 IN REGDISPOSITION Disposition
,
1809 IN HMACHINE hMachine
);
1814 CM_Open_Class_Key_ExW(
1815 IN LPGUID pszClassGuid
, OPTIONAL
1816 IN LPCWSTR pszClassName
, OPTIONAL
1817 IN REGSAM samDesired
,
1818 IN REGDISPOSITION Disposition
,
1821 IN HMACHINE hMachine
);
1824 #define CM_Open_Class_Key CM_Open_Class_KeyW
1825 #define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW
1827 #define CM_Open_Class_Key CM_Open_Class_KeyA
1828 #define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA
1829 #endif /* UNICODE */
1834 CM_Open_DevNode_Key(
1835 IN DEVINST dnDevNode
,
1836 IN REGSAM samDesired
,
1837 IN ULONG ulHardwareProfile
,
1838 IN REGDISPOSITION Disposition
,
1839 OUT PHKEY phkDevice
,
1845 CM_Open_DevNode_Key_Ex(
1846 IN DEVINST dnDevNode
,
1847 IN REGSAM samDesired
,
1848 IN ULONG ulHardwareProfile
,
1849 IN REGDISPOSITION Disposition
,
1850 OUT PHKEY phkDevice
,
1852 IN HMACHINE hMachine
);
1854 #define CM_Open_DevInst_Key CM_Open_DevNode_Key
1855 #define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
1857 /* CM_Query_And_Remove_SubTree.ulFlags constants */
1858 #define CM_REMOVE_UI_OK 0x00000000
1859 #define CM_REMOVE_UI_NOT_OK 0x00000001
1860 #define CM_REMOVE_NO_RESTART 0x00000002
1861 #define CM_REMOVE_BITS 0x00000003
1866 CM_Query_And_Remove_SubTreeA(
1867 IN DEVINST dnAncestor
,
1868 OUT PPNP_VETO_TYPE pVetoType
,
1869 OUT LPSTR pszVetoName
,
1870 IN ULONG ulNameLength
,
1876 CM_Query_And_Remove_SubTreeW(
1877 IN DEVINST dnAncestor
,
1878 OUT PPNP_VETO_TYPE pVetoType
,
1879 OUT LPWSTR pszVetoName
,
1880 IN ULONG ulNameLength
,
1886 CM_Query_And_Remove_SubTree_ExA(
1887 IN DEVINST dnAncestor
,
1888 OUT PPNP_VETO_TYPE pVetoType
,
1889 OUT LPSTR pszVetoName
,
1890 IN ULONG ulNameLength
,
1892 IN HMACHINE hMachine
);
1897 CM_Query_And_Remove_SubTree_ExW(
1898 IN DEVINST dnAncestor
,
1899 OUT PPNP_VETO_TYPE pVetoType
,
1900 OUT LPWSTR pszVetoName
,
1901 IN ULONG ulNameLength
,
1903 IN HMACHINE hMachine
);
1905 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
1906 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
1907 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
1908 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1909 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1910 /* FIXME: Obsolete CM_Query_Remove_SubTree */
1911 /* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
1916 CM_Query_Resource_Conflict_List(
1917 OUT PCONFLICT_LIST pclConflictList
,
1918 IN DEVINST dnDevInst
,
1919 IN RESOURCEID ResourceID
,
1920 IN PCVOID ResourceData
,
1921 IN ULONG ResourceLen
,
1923 IN HMACHINE hMachine
);
1925 /* CM_Reenumerate_DevNode.ulFlags constants */
1926 #define CM_REENUMERATE_NORMAL 0x00000000
1927 #define CM_REENUMERATE_SYNCHRONOUS 0x00000001
1928 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
1929 #define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
1930 #define CM_REENUMERATE_BITS 0x00000007
1935 CM_Reenumerate_DevNode(
1936 IN DEVINST dnDevInst
,
1942 CM_Reenumerate_DevNode_Ex(
1943 IN DEVINST dnDevInst
,
1945 IN HMACHINE hMachine
);
1947 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
1948 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
1950 /* FIXME: Obsolete CM_Register_Device_Driver */
1951 /* FIXME: Obsolete CM_Register_Device_Driver_Ex */
1952 /* FIXME: Obsolete CM_Register_Device_Interface */
1953 /* FIXME: Obsolete CM_Register_Device_Interface_Ex */
1954 /* FIXME: Obsolete CM_Remove_SubTree */
1955 /* FIXME: Obsolete CM_Remove_SubTree_Ex */
1960 CM_Request_Device_EjectA(
1961 IN DEVINST dnDevInst
,
1962 OUT PPNP_VETO_TYPE pVetoType
,
1963 OUT LPSTR pszVetoName
,
1964 IN ULONG ulNameLength
,
1970 CM_Request_Device_Eject_ExW(
1971 IN DEVINST dnDevInst
,
1972 OUT PPNP_VETO_TYPE pVetoType
,
1973 OUT LPWSTR pszVetoName
,
1974 IN ULONG ulNameLength
,
1976 IN HMACHINE hMachine
);
1981 CM_Request_Device_Eject_ExA(
1982 IN DEVINST dnDevInst
,
1983 OUT PPNP_VETO_TYPE pVetoType
,
1984 OUT LPSTR pszVetoName
,
1985 IN ULONG ulNameLength
,
1987 IN HMACHINE hMachine
);
1992 CM_Request_Device_EjectW(
1993 IN DEVINST dnDevInst
,
1994 OUT PPNP_VETO_TYPE pVetoType
,
1995 OUT LPWSTR pszVetoName
,
1996 IN ULONG ulNameLength
,
2000 #define CM_Request_Device_Eject CM_Request_Device_EjectW
2001 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
2003 #define CM_Request_Device_Eject CM_Request_Device_EjectA
2004 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
2005 #endif /* UNICODE */
2010 CM_Request_Eject_PC(
2016 CM_Request_Eject_PC_Ex(
2017 IN HMACHINE hMachine
);
2019 /* CM_Run_Detection[_Ex].ulFlags constants */
2020 #define CM_DETECT_NEW_PROFILE 0x00000001
2021 #define CM_DETECT_CRASHED 0x00000002
2022 #define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004
2023 #define CM_DETECT_RUN 0x80000000
2024 #define CM_DETECT_BITS 0x80000007
2035 CM_Run_Detection_Ex(
2037 IN HMACHINE hMachine
);
2039 /* FIXME: Obsolete CM_Set_Class_Registry_Property */
2044 CM_Set_DevNode_Problem(
2045 IN DEVINST dnDevInst
,
2052 CM_Set_DevNode_Problem_Ex(
2053 IN DEVINST dnDevInst
,
2056 IN HMACHINE hMachine
);
2058 #define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
2059 #define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
2064 CM_Set_DevNode_Registry_PropertyA(
2065 IN DEVINST dnDevInst
,
2066 IN ULONG ulProperty
,
2067 IN PCVOID Buffer
, OPTIONAL
2074 CM_Set_DevNode_Registry_PropertyW(
2075 IN DEVINST dnDevInst
,
2076 IN ULONG ulProperty
,
2077 IN PCVOID Buffer
, OPTIONAL
2084 CM_Set_DevNode_Registry_Property_ExA(
2085 IN DEVINST dnDevInst
,
2086 IN ULONG ulProperty
,
2087 IN PCVOID Buffer
, OPTIONAL
2090 IN HMACHINE hMachine
);
2095 CM_Set_DevNode_Registry_Property_ExW(
2096 IN DEVINST dnDevInst
,
2097 IN ULONG ulProperty
,
2098 IN PCVOID Buffer
, OPTIONAL
2101 IN HMACHINE hMachine
);
2103 #define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
2104 #define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
2105 #define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
2106 #define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
2109 #define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
2110 #define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
2111 #define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW
2112 #define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
2114 #define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA
2115 #define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
2116 #define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA
2117 #define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
2118 #endif /* UNICODE */
2124 IN ULONG ulHardwareProfile
,
2131 IN ULONG ulHardwareProfile
,
2133 IN HMACHINE hMachine
);
2135 /* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */
2136 #define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)
2137 #define CM_SET_HW_PROF_FLAGS_BITS (0x00000001)
2142 CM_Set_HW_Prof_FlagsA(
2143 IN DEVINSTID_A szDevInstName
,
2151 CM_Set_HW_Prof_FlagsW(
2152 IN DEVINSTID_W szDevInstName
,
2160 CM_Set_HW_Prof_Flags_ExA(
2161 IN DEVINSTID_A szDevInstName
,
2165 IN HMACHINE hMachine
);
2170 CM_Set_HW_Prof_Flags_ExW(
2171 IN DEVINSTID_W szDevInstName
,
2175 IN HMACHINE hMachine
);
2178 #define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW
2179 #define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW
2181 #define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA
2182 #define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA
2183 #endif /* UNICODE */
2185 /* CM_Setup_DevInst[_Ex].ulFlags constants */
2186 #define CM_SETUP_DEVNODE_READY (0x00000000)
2187 #define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
2188 #define CM_SETUP_DOWNLOAD (0x00000001)
2189 #define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
2190 #define CM_SETUP_PROP_CHANGE (0x00000003)
2191 #define CM_SETUP_DEVNODE_RESET (0x00000004)
2192 #define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
2193 #define CM_SETUP_BITS (0x00000007)
2199 IN DEVINST dnDevInst
,
2205 CM_Setup_DevNode_Ex(
2206 IN DEVINST dnDevInst
,
2208 IN HMACHINE hMachine
);
2210 /* FIXME: Obsolete CM_Test_Range_Available */
2215 CM_Uninstall_DevNode(
2216 IN DEVINST dnPhantom
,
2222 CM_Uninstall_DevNode_Ex(
2223 IN DEVINST dnPhantom
,
2225 IN HMACHINE hMachine
);
2227 /* FIXME: Obsolete CM_Unregister_Device_Interface */
2228 /* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
2230 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
2235 CMP_WaitNoPendingInstallEvents(
2236 IN DWORD dwTimeout
);
2238 #include <poppack.h>
2244 #endif /* _CFGMGR32_H_ */