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.
38 #if defined(_CFGMGR32_)
41 #define CMAPI DECLSPEC_IMPORT
44 typedef CONST VOID
*PCVOID
;
46 #define MAX_CONFIG_VALUE 9999
47 #define MAX_INSTANCE_VALUE 9999
49 #define MAX_DEVICE_ID_LEN 200
50 #define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
52 #define MAX_CLASS_NAME_LEN 32
53 #define MAX_GUID_STRING_LEN 39
54 #define MAX_PROFILE_LEN 80
56 #define MAX_MEM_REGISTERS 9
57 #define MAX_IO_PORTS 20
59 #define MAX_DMA_CHANNELS 7
61 #define DWORD_MAX 0xffffffffUL
62 #define DWORDLONG_MAX 0xffffffffffffffffui64
64 #define CONFIGMG_VERSION 0x0400
68 typedef unsigned __int64 DWORDLONG
;
69 typedef DWORDLONG
*PDWORDLONG
;
71 #endif /* NT_INCLUDED */
73 typedef _Return_type_success_(return == 0) DWORD RETURN_TYPE
;
74 typedef RETURN_TYPE CONFIGRET
;
76 typedef DWORD DEVNODE
, DEVINST
;
77 typedef DEVNODE
*PDEVNODE
, *PDEVINST
;
79 typedef _Null_terminated_ CHAR
*DEVNODEID_A
, *DEVINSTID_A
;
80 typedef _Null_terminated_ WCHAR
*DEVNODEID_W
, *DEVINSTID_W
;
83 typedef DEVNODEID_W DEVNODEID
;
84 typedef DEVINSTID_W DEVINSTID
;
86 typedef DEVNODEID_A DEVNODEID
;
87 typedef DEVINSTID_A DEVINSTID
;
90 typedef DWORD_PTR LOG_CONF
;
91 typedef LOG_CONF
*PLOG_CONF
;
93 typedef DWORD_PTR RES_DES
;
94 typedef RES_DES
*PRES_DES
;
96 typedef ULONG RESOURCEID
;
97 typedef RESOURCEID
*PRESOURCEID
;
99 typedef ULONG PRIORITY
;
100 typedef PRIORITY
*PPRIORITY
;
102 typedef DWORD_PTR RANGE_LIST
;
103 typedef RANGE_LIST
*PRANGE_LIST
;
105 typedef DWORD_PTR RANGE_ELEMENT
;
106 typedef RANGE_ELEMENT
*PRANGE_ELEMENT
;
108 typedef HANDLE HMACHINE
;
109 typedef HMACHINE
*PHMACHINE
;
111 typedef ULONG_PTR CONFLICT_LIST
;
112 typedef CONFLICT_LIST
*PCONFLICT_LIST
;
114 typedef struct _CONFLICT_DETAILS_A
{
117 DEVINST CD_dnDevInst
;
120 CHAR CD_szDescription
[MAX_PATH
];
121 } CONFLICT_DETAILS_A
, *PCONFLICT_DETAILS_A
;
123 typedef struct _CONFLICT_DETAILS_W
{
126 DEVINST CD_dnDevInst
;
129 WCHAR CD_szDescription
[MAX_PATH
];
130 } CONFLICT_DETAILS_W
, *PCONFLICT_DETAILS_W
;
133 typedef CONFLICT_DETAILS_W CONFLICT_DETAILS
;
134 typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS
;
136 typedef CONFLICT_DETAILS_A CONFLICT_DETAILS
;
137 typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS
;
140 /* CONFLICT_DETAILS.CD.ulMask constants */
141 #define CM_CDMASK_DEVINST 0x00000001
142 #define CM_CDMASK_RESDES 0x00000002
143 #define CM_CDMASK_FLAGS 0x00000004
144 #define CM_CDMASK_DESCRIPTION 0x00000008
145 #define CM_CDMASK_VALID 0x0000000F
147 /* CONFLICT_DETAILS.CD.ulFlags constants */
148 #define CM_CDFLAGS_DRIVER 0x00000001
149 #define CM_CDFLAGS_ROOT_OWNED 0x00000002
150 #define CM_CDFLAGS_RESERVED 0x00000004
152 typedef ULONG REGDISPOSITION
;
154 #include <pshpack1.h>
156 /* MEM_DES.MD_Flags constants */
157 #define mMD_MemoryType 0x1
158 #define fMD_MemoryType mMD_MemoryType
162 #define mMD_32_24 0x2
163 #define fMD_32_24 mMD_32_24
167 #define mMD_Prefetchable 0x4
168 #define fMD_Prefetchable mMD_Prefetchable
169 #define fMD_Pref mMD_Prefetchable
170 #define fMD_PrefetchDisallowed 0x0
171 #define fMD_PrefetchAllowed 0x4
173 #define mMD_Readable 0x8
174 #define fMD_Readable mMD_Readable
175 #define fMD_ReadAllowed 0x0
176 #define fMD_ReadDisallowed 0x8
178 #define mMD_CombinedWrite 0x10
179 #define fMD_CombinedWrite mMD_CombinedWrite
180 #define fMD_CombinedWriteDisallowed 0x0
181 #define fMD_CombinedWriteAllowed 0x10
183 #define mMD_Cacheable 0x20
184 #define fMD_NonCacheable 0x0
185 #define fMD_Cacheable 0x20
186 #define fMD_WINDOW_DECODE 0x40
187 #define fMD_MEMORY_BAR 0x80
189 typedef struct Mem_Range_s
{
196 } MEM_RANGE
, *PMEM_RANGE
;
198 typedef struct Mem_Des_s
{
201 DWORDLONG MD_Alloc_Base
;
202 DWORDLONG MD_Alloc_End
;
205 } MEM_DES
, *PMEM_DES
;
207 typedef struct Mem_Resource_s
{
209 MEM_RANGE MEM_Data
[ANYSIZE_ARRAY
];
210 } MEM_RESOURCE
, *PMEM_RESOURCE
;
212 #define MType_Range sizeof(MEM_RANGE)
214 typedef struct Mem_Large_Range_s
{
216 ULONGLONG MLR_nBytes
;
221 } MEM_LARGE_RANGE
, *PMEM_LARGE_RANGE
;
223 typedef struct Mem_Large_Des_s
{
226 DWORDLONG MLD_Alloc_Base
;
227 DWORDLONG MLD_Alloc_End
;
230 } MEM_LARGE_DES
, *PMEM_LARGE_DES
;
232 typedef struct Mem_Large_Resource_s
{
233 MEM_LARGE_DES MEM_LARGE_Header
;
234 MEM_LARGE_RANGE MEM_LARGE_Data
[ANYSIZE_ARRAY
];
235 } MEM_LARGE_RESOURCE
, *PMEM_LARGE_RESOURCE
;
237 #define MLType_Range sizeof(struct Mem_Large_Range_s)
239 /* IO_DES.Type constants and masks */
240 #define fIOD_PortType 0x1
241 #define fIOD_Memory 0x0
243 #define fIOD_DECODE 0x00fc
244 #define fIOD_10_BIT_DECODE 0x0004
245 #define fIOD_12_BIT_DECODE 0x0008
246 #define fIOD_16_BIT_DECODE 0x0010
247 #define fIOD_POSITIVE_DECODE 0x0020
248 #define fIOD_PASSIVE_DECODE 0x0040
249 #define fIOD_WINDOW_DECODE 0x0080
250 #define fIOD_PORT_BAR 0x0100
252 /* IO_RANGE.IOR_Alias constants */
253 #define IO_ALIAS_10_BIT_DECODE 0x00000004
254 #define IO_ALIAS_12_BIT_DECODE 0x00000010
255 #define IO_ALIAS_16_BIT_DECODE 0x00000000
256 #define IO_ALIAS_POSITIVE_DECODE 0x000000FF
258 typedef struct IO_Range_s
{
263 DWORD IOR_RangeFlags
;
265 } IO_RANGE
, *PIO_RANGE
;
267 typedef struct IO_Des_s
{
270 DWORDLONG IOD_Alloc_Base
;
271 DWORDLONG IOD_Alloc_End
;
275 typedef struct IO_Resource_s
{
277 IO_RANGE IO_Data
[ANYSIZE_ARRAY
];
278 } IO_RESOURCE
, *PIO_RESOURCE
;
280 #define IOA_Local 0xff
282 #define IOType_Range sizeof(IO_RANGE)
284 /* DMA_DES.DD_Flags constants and masks */
285 #define mDD_Width 0x3
288 #define fDD_DWORD 0x2
289 #define fDD_BYTE_AND_WORD 0x3
291 #define mDD_BusMaster 0x4
292 #define fDD_NoBusMaster 0x0
293 #define fDD_BusMaster 0x4
295 #define mDD_Type 0x18
296 #define fDD_TypeStandard 0x00
297 #define fDD_TypeA 0x08
298 #define fDD_TypeB 0x10
299 #define fDD_TypeF 0x18
301 typedef struct DMA_Des_s
{
306 } DMA_DES
, *PDMA_DES
;
308 typedef struct DMA_Range_s
{
312 } DMA_RANGE
, *PDMA_RANGE
;
314 #define DType_Range sizeof(DMA_RANGE)
316 typedef struct DMA_Resource_s
{
318 DMA_RANGE DMA_Data
[ANYSIZE_ARRAY
];
319 } DMA_RESOURCE
, *PDMA_RESOURCE
;
321 /* IRQ_DES.IRQD_flags constants */
322 #define mIRQD_Share 0x1
323 #define fIRQD_Exclusive 0x0
324 #define fIRQD_Share 0x1
326 #define fIRQD_Share_Bit 0
327 #define fIRQD_Level_Bit 1
329 #define mIRQD_Edge_Level 0x2
330 #define fIRQD_Level 0x0
331 #define fIRQD_Edge 0x2
333 typedef struct IRQ_Range_s
{
336 #if defined(NT_PROCESSOR_GROUPS)
342 } IRQ_RANGE
, *PIRQ_RANGE
;
344 typedef struct IRQ_Des_32_s
{
347 #if defined(NT_PROCESSOR_GROUPS)
353 ULONG IRQD_Alloc_Num
;
354 ULONG32 IRQD_Affinity
;
355 } IRQ_DES_32
, *PIRQ_DES_32
;
357 typedef struct IRQ_Des_64_s
{
360 #if defined(NT_PROCESSOR_GROUPS)
366 ULONG IRQD_Alloc_Num
;
367 ULONG64 IRQD_Affinity
;
368 } IRQ_DES_64
, *PIRQ_DES_64
;
371 typedef IRQ_DES_64 IRQ_DES
;
372 typedef PIRQ_DES_64 PIRQ_DES
;
374 typedef IRQ_DES_32 IRQ_DES
;
375 typedef PIRQ_DES_32 PIRQ_DES
;
378 typedef struct IRQ_Resource_32_s
{
379 IRQ_DES_32 IRQ_Header
;
380 IRQ_RANGE IRQ_Data
[ANYSIZE_ARRAY
];
381 } IRQ_RESOURCE_32
, *PIRQ_RESOURCE_32
;
383 typedef struct IRQ_Resource_64_s
{
384 IRQ_DES_64 IRQ_Header
;
385 IRQ_RANGE IRQ_Data
[ANYSIZE_ARRAY
];
386 } IRQ_RESOURCE_64
, *PIRQ_RESOURCE_64
;
389 typedef IRQ_RESOURCE_64 IRQ_RESOURCE
;
390 typedef PIRQ_RESOURCE_64 PIRQ_RESOURCE
;
392 typedef IRQ_RESOURCE_32 IRQ_RESOURCE
;
393 typedef PIRQ_RESOURCE_32 PIRQ_RESOURCE
;
396 #define IRQType_Range sizeof(IRQ_RANGE)
398 #if (WINVER >= _WIN32_WINNT_WINXP)
399 #define CM_RESDES_WIDTH_DEFAULT 0x00000000
400 #define CM_RESDES_WIDTH_32 0x00000001
401 #define CM_RESDES_WIDTH_64 0x00000002
402 #define CM_RESDES_WIDTH_BITS 0x00000003
405 typedef struct DevPrivate_Range_s
{
409 } DEVPRIVATE_RANGE
, *PDEVPRIVATE_RANGE
;
411 typedef struct DevPrivate_Des_s
{
418 } DEVPRIVATE_DES
, *PDEVPRIVATE_DES
;
420 #define PType_Range sizeof(DEVPRIVATE_RANGE)
422 typedef struct DevPrivate_Resource_s
{
423 DEVPRIVATE_DES PRV_Header
;
424 DEVPRIVATE_RANGE PRV_Data
[ANYSIZE_ARRAY
];
425 } DEVPRIVATE_RESOURCE
, *PDEVPRIVATE_RESOURCE
;
427 typedef struct CS_Des_s
{
428 DWORD CSD_SignatureLength
;
429 DWORD CSD_LegacyDataOffset
;
430 DWORD CSD_LegacyDataSize
;
433 BYTE CSD_Signature
[ANYSIZE_ARRAY
];
436 typedef struct CS_Resource_s
{
438 } CS_RESOURCE
, *PCS_RESOURCE
;
440 #define mPCD_IO_8_16 0x1
441 #define fPCD_IO_8 0x0
442 #define fPCD_IO_16 0x1
443 #define mPCD_MEM_8_16 0x2
444 #define fPCD_MEM_8 0x0
445 #define fPCD_MEM_16 0x2
446 #define mPCD_MEM_A_C 0xC
447 #define fPCD_MEM1_A 0x4
448 #define fPCD_MEM2_A 0x8
449 #define fPCD_IO_ZW_8 0x10
450 #define fPCD_IO_SRC_16 0x20
451 #define fPCD_IO_WS_16 0x40
452 #define mPCD_MEM_WS 0x300
453 #define fPCD_MEM_WS_ONE 0x100
454 #define fPCD_MEM_WS_TWO 0x200
455 #define fPCD_MEM_WS_THREE 0x300
457 #if (WINVER >= _WIN32_WINNT_WINXP)
459 #define fPCD_MEM_A 0x4
461 #define fPCD_ATTRIBUTES_PER_WINDOW 0x8000
463 #define fPCD_IO1_16 0x00010000
464 #define fPCD_IO1_ZW_8 0x00020000
465 #define fPCD_IO1_SRC_16 0x00040000
466 #define fPCD_IO1_WS_16 0x00080000
468 #define fPCD_IO2_16 0x00100000
469 #define fPCD_IO2_ZW_8 0x00200000
470 #define fPCD_IO2_SRC_16 0x00400000
471 #define fPCD_IO2_WS_16 0x00800000
473 #define mPCD_MEM1_WS 0x03000000
474 #define fPCD_MEM1_WS_ONE 0x01000000
475 #define fPCD_MEM1_WS_TWO 0x02000000
476 #define fPCD_MEM1_WS_THREE 0x03000000
477 #define fPCD_MEM1_16 0x04000000
479 #define mPCD_MEM2_WS 0x30000000
480 #define fPCD_MEM2_WS_ONE 0x10000000
481 #define fPCD_MEM2_WS_TWO 0x20000000
482 #define fPCD_MEM2_WS_THREE 0x30000000
483 #define fPCD_MEM2_16 0x40000000
485 #define PCD_MAX_MEMORY 2
488 #endif /* (WINVER >= _WIN32_WINNT_WINXP) */
490 typedef struct PcCard_Des_s
{
494 BYTE PCD_ConfigIndex
;
495 BYTE PCD_Reserved
[3];
496 DWORD PCD_MemoryCardBase1
;
497 DWORD PCD_MemoryCardBase2
;
498 #if (WINVER >= _WIN32_WINNT_WINXP)
499 DWORD PCD_MemoryCardBase
[PCD_MAX_MEMORY
];
500 WORD PCD_MemoryFlags
[PCD_MAX_MEMORY
];
501 BYTE PCD_IoFlags
[PCD_MAX_IO
];
503 } PCCARD_DES
, *PPCCARD_DES
;
505 typedef struct PcCard_Resource_s
{
506 PCCARD_DES PcCard_Header
;
507 } PCCARD_RESOURCE
, *PPCCARD_RESOURCE
;
509 /* MFCARD_DES.PMF_Flags constants */
510 #define fPMF_AUDIO_ENABLE 0x8
511 #define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE
513 typedef struct MfCard_Des_s
{
517 BYTE PMF_ConfigOptions
;
518 BYTE PMF_IoResourceIndex
;
519 BYTE PMF_Reserved
[2];
520 DWORD PMF_ConfigRegisterBase
;
521 } MFCARD_DES
, *PMFCARD_DES
;
523 typedef struct MfCard_Resource_s
{
524 MFCARD_DES MfCard_Header
;
525 } MFCARD_RESOURCE
, *PMFCARD_RESOURCE
;
527 typedef struct BusNumber_Des_s
{
531 ULONG BUSD_Alloc_Base
;
532 ULONG BUSD_Alloc_End
;
533 } BUSNUMBER_DES
, *PBUSNUMBER_DES
;
535 typedef struct BusNumber_Range_s
{
538 ULONG BUSR_nBusNumbers
;
540 } BUSNUMBER_RANGE
, *PBUSNUMBER_RANGE
;
542 #define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
544 typedef struct BusNumber_Resource_s
{
545 BUSNUMBER_DES BusNumber_Header
;
546 BUSNUMBER_RANGE BusNumber_Data
[ANYSIZE_ARRAY
];
547 } BUSNUMBER_RESOURCE
, *PBUSNUMBER_RESOURCE
;
549 #define CM_HWPI_NOT_DOCKABLE 0x00000000
550 #define CM_HWPI_UNDOCKED 0x00000001
551 #define CM_HWPI_DOCKED 0x00000002
553 typedef struct HWProfileInfo_sA
{
554 ULONG HWPI_ulHWProfile
;
555 CHAR HWPI_szFriendlyName
[MAX_PROFILE_LEN
];
557 } HWPROFILEINFO_A
, *PHWPROFILEINFO_A
;
559 typedef struct HWProfileInfo_sW
{
560 ULONG HWPI_ulHWProfile
;
561 WCHAR HWPI_szFriendlyName
[MAX_PROFILE_LEN
];
563 } HWPROFILEINFO_W
, *PHWPROFILEINFO_W
;
566 typedef HWPROFILEINFO_W HWPROFILEINFO
;
567 typedef PHWPROFILEINFO_W PHWPROFILEINFO
;
569 typedef HWPROFILEINFO_A HWPROFILEINFO
;
570 typedef PHWPROFILEINFO_A PHWPROFILEINFO
;
575 #define ResType_All 0x00000000
576 #define ResType_None 0x00000000
577 #define ResType_Mem 0x00000001
578 #define ResType_IO 0x00000002
579 #define ResType_DMA 0x00000003
580 #define ResType_IRQ 0x00000004
581 #define ResType_DoNotUse 0x00000005
582 #define ResType_BusNumber 0x00000006
583 #define ResType_MemLarge 0x00000007
584 #define ResType_MAX 0x00000007
585 #define ResType_Ignored_Bit 0x00008000
586 #define ResType_ClassSpecific 0x0000FFFF
587 #define ResType_Reserved 0x00008000
588 #define ResType_DevicePrivate 0x00008001
589 #define ResType_PcCardConfig 0x00008002
590 #define ResType_MfCardConfig 0x00008003
592 #define CM_ADD_RANGE_ADDIFCONFLICT 0x00000000
593 #define CM_ADD_RANGE_DONOTADDIFCONFLICT 0x00000001
594 #define CM_ADD_RANGE_BITS 0x00000001
596 #define BASIC_LOG_CONF 0x00000000
597 #define FILTERED_LOG_CONF 0x00000001
598 #define ALLOC_LOG_CONF 0x00000002
599 #define BOOT_LOG_CONF 0x00000003
600 #define FORCED_LOG_CONF 0x00000004
601 #define OVERRIDE_LOG_CONF 0x00000005
602 #define NUM_LOG_CONF 0x00000006
603 #define LOG_CONF_BITS 0x00000007
605 #define PRIORITY_EQUAL_FIRST 0x00000008
606 #define PRIORITY_EQUAL_LAST 0x00000000
607 #define PRIORITY_BIT 0x00000008
609 #define RegDisposition_OpenAlways 0x00000000
610 #define RegDisposition_OpenExisting 0x00000001
611 #define RegDisposition_Bits 0x00000001
613 /* CM_Add_ID.ulFlags constants */
614 #define CM_ADD_ID_HARDWARE 0x00000000
615 #define CM_ADD_ID_COMPATIBLE 0x00000001
616 #define CM_ADD_ID_BITS 0x00000001
618 /* Flags for CM_Create_DevNode[_Ex].ulFlags constants */
619 #define CM_CREATE_DEVNODE_NORMAL 0x00000000
620 #define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001
621 #define CM_CREATE_DEVNODE_PHANTOM 0x00000002
622 #define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004
623 #define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008
624 #define CM_CREATE_DEVNODE_BITS 0x0000000F
626 #define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
627 #define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
628 #define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
629 #define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
630 #define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
631 #define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
633 /* Flags for CM_Delete_Class_Key.ulFlags constants */
634 #define CM_DELETE_CLASS_ONLY 0x00000000
635 #define CM_DELETE_CLASS_SUBKEYS 0x00000001
636 #if (WINVER >= _WIN32_WINNT_VISTA)
637 #define CM_DELETE_CLASS_INTERFACE 0x00000002
639 #define CM_DELETE_CLASS_BITS 0x00000003
641 /* CM_Run_Detection[_Ex].ulFlags constants */
642 #define CM_DETECT_NEW_PROFILE 0x00000001
643 #define CM_DETECT_CRASHED 0x00000002
644 #define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004
645 #define CM_DETECT_RUN 0x80000000
646 #define CM_DETECT_BITS 0x80000007
648 #define CM_DISABLE_POLITE 0x00000000
649 #define CM_DISABLE_ABSOLUTE 0x00000001
650 #define CM_DISABLE_HARDWARE 0x00000002
651 #define CM_DISABLE_UI_NOT_OK 0x00000004
652 #define CM_DISABLE_BITS 0x00000007
654 #define CM_GETIDLIST_FILTER_NONE 0x00000000
655 #define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001
656 #define CM_GETIDLIST_FILTER_SERVICE 0x00000002
657 #define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004
658 #define CM_GETIDLIST_FILTER_REMOVALRELATIONS 0x00000008
659 #define CM_GETIDLIST_FILTER_POWERRELATIONS 0x00000010
660 #define CM_GETIDLIST_FILTER_BUSRELATIONS 0x00000020
661 #define CM_GETIDLIST_DONOTGENERATE 0x10000040
662 #if (WINVER <= _WIN32_WINNT_VISTA)
663 #define CM_GETIDLIST_FILTER_BITS 0x1000007F
665 #if (WINVER >= _WIN32_WINNT_WIN7)
666 #define CM_GETIDLIST_FILTER_TRANSPORTRELATIONS 0x00000080
667 #define CM_GETIDLIST_FILTER_PRESENT 0x00000100
668 #define CM_GETIDLIST_FILTER_CLASS 0x00000200
669 #define CM_GETIDLIST_FILTER_BITS 0x100003FF
672 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000
673 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001
674 #define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001
676 #define CM_DRP_DEVICEDESC 0x00000001
677 #define CM_DRP_HARDWAREID 0x00000002
678 #define CM_DRP_COMPATIBLEIDS 0x00000003
679 #define CM_DRP_UNUSED0 0x00000004
680 #define CM_DRP_SERVICE 0x00000005
681 #define CM_DRP_UNUSED1 0x00000006
682 #define CM_DRP_UNUSED2 0x00000007
683 #define CM_DRP_CLASS 0x00000008
684 #define CM_DRP_CLASSGUID 0x00000009
685 #define CM_DRP_DRIVER 0x0000000A
686 #define CM_DRP_CONFIGFLAGS 0x0000000B
687 #define CM_DRP_MFG 0x0000000C
688 #define CM_DRP_FRIENDLYNAME 0x0000000D
689 #define CM_DRP_LOCATION_INFORMATION 0x0000000E
690 #define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000F
691 #define CM_DRP_CAPABILITIES 0x00000010
692 #define CM_DRP_UI_NUMBER 0x00000011
693 #define CM_DRP_UPPERFILTERS 0x00000012
694 #if (WINVER >= _WIN32_WINNT_VISTA)
695 #define CM_CRP_UPPERFILTERS CM_DRP_UPPERFILTERS
697 #define CM_DRP_LOWERFILTERS 0x00000013
698 #if (WINVER >= _WIN32_WINNT_VISTA)
699 #define CM_CRP_LOWERFILTERS CM_DRP_LOWERFILTERS
701 #define CM_DRP_BUSTYPEGUID 0x00000014
702 #define CM_DRP_LEGACYBUSTYPE 0x00000015
703 #define CM_DRP_BUSNUMBER 0x00000016
704 #define CM_DRP_ENUMERATOR_NAME 0x00000017
705 #define CM_DRP_SECURITY 0x00000018
706 #define CM_CRP_SECURITY CM_DRP_SECURITY
707 #define CM_DRP_SECURITY_SDS 0x00000019
708 #define CM_CRP_SECURITY_SDS CM_DRP_SECURITY_SDS
709 #define CM_DRP_DEVTYPE 0x0000001A
710 #define CM_CRP_DEVTYPE CM_DRP_DEVTYPE
711 #define CM_DRP_EXCLUSIVE 0x0000001B
712 #define CM_CRP_EXCLUSIVE CM_DRP_EXCLUSIVE
713 #define CM_DRP_CHARACTERISTICS 0x0000001C
714 #define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS
715 #define CM_DRP_ADDRESS 0x0000001D
716 #define CM_DRP_UI_NUMBER_DESC_FORMAT 0x0000001E
717 #if (WINVER >= _WIN32_WINNT_WINXP)
718 #define CM_DRP_DEVICE_POWER_DATA 0x0000001F
719 #define CM_DRP_REMOVAL_POLICY 0x00000020
720 #define CM_DRP_REMOVAL_POLICY_HW_DEFAULT 0x00000021
721 #define CM_DRP_REMOVAL_POLICY_OVERRIDE 0x00000022
722 #define CM_DRP_INSTALL_STATE 0x00000023
724 #if (WINVER >= _WIN32_WINNT_WS03)
725 #define CM_DRP_LOCATION_PATHS 0x00000024
727 #if (WINVER >= _WIN32_WINNT_WIN7)
728 #define CM_DRP_BASE_CONTAINERID 0x00000025
730 #define CM_DRP_MIN 0x00000001
731 #define CM_CRP_MIN CM_DRP_MIN
732 #define CM_DRP_MAX 0x00000025
733 #define CM_CRP_MAX CM_DRP_MAX
735 #define CM_DEVCAP_LOCKSUPPORTED 0x00000001
736 #define CM_DEVCAP_EJECTSUPPORTED 0x00000002
737 #define CM_DEVCAP_REMOVABLE 0x00000004
738 #define CM_DEVCAP_DOCKDEVICE 0x00000008
739 #define CM_DEVCAP_UNIQUEID 0x00000010
740 #define CM_DEVCAP_SILENTINSTALL 0x00000020
741 #define CM_DEVCAP_RAWDEVICEOK 0x00000040
742 #define CM_DEVCAP_SURPRISEREMOVALOK 0x00000080
743 #define CM_DEVCAP_HARDWAREDISABLED 0x00000100
744 #define CM_DEVCAP_NONDYNAMIC 0x00000200
746 #if (WINVER >= _WIN32_WINNT_WINXP)
748 #define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1
749 #define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2
750 #define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3
752 #define CM_INSTALL_STATE_INSTALLED 0
753 #define CM_INSTALL_STATE_NEEDS_REINSTALL 1
754 #define CM_INSTALL_STATE_FAILED_INSTALL 2
755 #define CM_INSTALL_STATE_FINISH_INSTALL 3
757 #endif /* (WINVER >= _WIN32_WINNT_WINXP) */
759 /* CM_Locate_DevNode.ulFlags constants */
760 #define CM_LOCATE_DEVNODE_NORMAL 0x00000000
761 #define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
762 #define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
763 #define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
764 #define CM_LOCATE_DEVNODE_BITS 0x00000007
766 #define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
767 #define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
768 #define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
769 #define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
770 #define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
772 #define CM_OPEN_CLASS_KEY_INSTALLER 0x00000000
773 #define CM_OPEN_CLASS_KEY_INTERFACE 0x00000001
774 #define CM_OPEN_CLASS_KEY_BITS 0x00000001
776 /* CM_Query_And_Remove_SubTree.ulFlags constants */
777 #define CM_REMOVE_UI_OK 0x00000000
778 #define CM_REMOVE_UI_NOT_OK 0x00000001
779 #define CM_REMOVE_NO_RESTART 0x00000002
780 #define CM_REMOVE_BITS 0x00000003
782 #define CM_QUERY_REMOVE_UI_OK (CM_REMOVE_UI_OK)
783 #define CM_QUERY_REMOVE_UI_NOT_OK (CM_REMOVE_UI_NOT_OK)
784 #define CM_QUERY_REMOVE_BITS (CM_QUERY_REMOVE_UI_OK|CM_QUERY_REMOVE_UI_NOT_OK)
786 /* CM_Reenumerate_DevNode.ulFlags constants */
787 #define CM_REENUMERATE_NORMAL 0x00000000
788 #define CM_REENUMERATE_SYNCHRONOUS 0x00000001
789 #if (WINVER >= _WIN32_WINNT_WINXP)
790 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
791 #define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
793 #define CM_REENUMERATE_BITS 0x00000007
795 #define CM_REGISTER_DEVICE_DRIVER_STATIC 0x00000000
796 #define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE 0x00000001
797 #define CM_REGISTER_DEVICE_DRIVER_REMOVABLE 0x00000002
798 #define CM_REGISTER_DEVICE_DRIVER_BITS 0x00000003
800 #define CM_REGISTRY_HARDWARE 0x00000000
801 #define CM_REGISTRY_SOFTWARE 0x00000001
802 #define CM_REGISTRY_USER 0x00000100
803 #define CM_REGISTRY_CONFIG 0x00000200
804 #define CM_REGISTRY_BITS 0x00000301
806 #define CM_SET_DEVNODE_PROBLEM_NORMAL 0x00000000
807 #define CM_SET_DEVNODE_PROBLEM_OVERRIDE 0x00000001
808 #define CM_SET_DEVNODE_PROBLEM_BITS 0x00000001
810 #define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL
811 #define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE
812 #define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS
814 /* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */
815 #define CM_SET_HW_PROF_FLAGS_UI_NOT_OK 0x00000001
816 #define CM_SET_HW_PROF_FLAGS_BITS 0x00000001
818 /* CM_Setup_DevInst[_Ex].ulFlags constants */
819 #define CM_SETUP_DEVNODE_READY 0x00000000
820 #define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
821 #define CM_SETUP_DOWNLOAD 0x00000001
822 #define CM_SETUP_WRITE_LOG_CONFS 0x00000002
823 #define CM_SETUP_PROP_CHANGE 0x00000003
824 #if (WINVER >= _WIN32_WINNT_WINXP)
825 #define CM_SETUP_DEVNODE_RESET 0x00000004
826 #define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
828 #define CM_SETUP_BITS 0x00000007
830 #define CM_QUERY_ARBITRATOR_RAW 0x00000000
831 #define CM_QUERY_ARBITRATOR_TRANSLATED 0x00000001
832 #define CM_QUERY_ARBITRATOR_BITS 0x00000001
834 #if (WINVER >= _WIN32_WINNT_WINXP)
835 #define CM_CUSTOMDEVPROP_MERGE_MULTISZ 0x00000001
836 #define CM_CUSTOMDEVPROP_BITS 0x00000001
839 #define CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE 0x1
840 #define CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME 0x2
842 #define CR_SUCCESS 0x00000000
843 #define CR_DEFAULT 0x00000001
844 #define CR_OUT_OF_MEMORY 0x00000002
845 #define CR_INVALID_POINTER 0x00000003
846 #define CR_INVALID_FLAG 0x00000004
847 #define CR_INVALID_DEVNODE 0x00000005
848 #define CR_INVALID_DEVINST CR_INVALID_DEVNODE
849 #define CR_INVALID_RES_DES 0x00000006
850 #define CR_INVALID_LOG_CONF 0x00000007
851 #define CR_INVALID_ARBITRATOR 0x00000008
852 #define CR_INVALID_NODELIST 0x00000009
853 #define CR_DEVNODE_HAS_REQS 0x0000000A
854 #define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
855 #define CR_INVALID_RESOURCEID 0x0000000B
856 #define CR_DLVXD_NOT_FOUND 0x0000000C
857 #define CR_NO_SUCH_DEVNODE 0x0000000D
858 #define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
859 #define CR_NO_MORE_LOG_CONF 0x0000000E
860 #define CR_NO_MORE_RES_DES 0x0000000F
861 #define CR_ALREADY_SUCH_DEVNODE 0x00000010
862 #define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
863 #define CR_INVALID_RANGE_LIST 0x00000011
864 #define CR_INVALID_RANGE 0x00000012
865 #define CR_FAILURE 0x00000013
866 #define CR_NO_SUCH_LOGICAL_DEV 0x00000014
867 #define CR_CREATE_BLOCKED 0x00000015
868 #define CR_NOT_SYSTEM_VM 0x00000016
869 #define CR_REMOVE_VETOED 0x00000017
870 #define CR_APM_VETOED 0x00000018
871 #define CR_INVALID_LOAD_TYPE 0x00000019
872 #define CR_BUFFER_SMALL 0x0000001A
873 #define CR_NO_ARBITRATOR 0x0000001B
874 #define CR_NO_REGISTRY_HANDLE 0x0000001C
875 #define CR_REGISTRY_ERROR 0x0000001D
876 #define CR_INVALID_DEVICE_ID 0x0000001E
877 #define CR_INVALID_DATA 0x0000001F
878 #define CR_INVALID_API 0x00000020
879 #define CR_DEVLOADER_NOT_READY 0x00000021
880 #define CR_NEED_RESTART 0x00000022
881 #define CR_NO_MORE_HW_PROFILES 0x00000023
882 #define CR_DEVICE_NOT_THERE 0x00000024
883 #define CR_NO_SUCH_VALUE 0x00000025
884 #define CR_WRONG_TYPE 0x00000026
885 #define CR_INVALID_PRIORITY 0x00000027
886 #define CR_NOT_DISABLEABLE 0x00000028
887 #define CR_FREE_RESOURCES 0x00000029
888 #define CR_QUERY_VETOED 0x0000002A
889 #define CR_CANT_SHARE_IRQ 0x0000002B
890 #define CR_NO_DEPENDENT 0x0000002C
891 #define CR_SAME_RESOURCES 0x0000002D
892 #define CR_NO_SUCH_REGISTRY_KEY 0x0000002E
893 #define CR_INVALID_MACHINENAME 0x0000002F
894 #define CR_REMOTE_COMM_FAILURE 0x00000030
895 #define CR_MACHINE_UNAVAILABLE 0x00000031
896 #define CR_NO_CM_SERVICES 0x00000032
897 #define CR_ACCESS_DENIED 0x00000033
898 #define CR_CALL_NOT_IMPLEMENTED 0x00000034
899 #define CR_INVALID_PROPERTY 0x00000035
900 #define CR_DEVICE_INTERFACE_ACTIVE 0x00000036
901 #define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037
902 #define CR_INVALID_REFERENCE_STRING 0x00000038
903 #define CR_INVALID_CONFLICT_LIST 0x00000039
904 #define CR_INVALID_INDEX 0x0000003A
905 #define CR_INVALID_STRUCTURE_SIZE 0x0000003B
906 #define NUM_CR_RESULTS 0x0000003C
908 #define CM_GLOBAL_STATE_CAN_DO_UI 0x00000001
909 #define CM_GLOBAL_STATE_ON_BIG_STACK 0x00000002
910 #define CM_GLOBAL_STATE_SERVICES_AVAILABLE 0x00000004
911 #define CM_GLOBAL_STATE_SHUTTING_DOWN 0x00000008
912 #define CM_GLOBAL_STATE_DETECTION_PENDING 0x00000010
913 #if (WINVER >= _WIN32_WINNT_WIN7)
914 #define CM_GLOBAL_STATE_REBOOT_REQUIRED 0x00000020
917 /* FIXME : These definitions don't exist in the official header
919 #define CMP_MAGIC 0x01234567
924 CMP_GetServerSideDeviceInstallFlags(
925 _Out_ PULONG pulSSDIFlags,
927 _In_ HMACHINE hMachine)
938 CMP_RegisterNotification(
939 _In_ HANDLE hRecipient,
940 _In_ LPVOID lpvNotificationFilter,
942 _Out_ PULONG pluhDevNotify);
949 _In_ DWORD dwProcessId);
954 CMP_UnregisterNotification(
955 _In_ ULONG luhDevNotify);
960 CMP_WaitServicesAvailable(
961 _In_ IN HMACHINE hMachine);
967 CM_Add_Empty_Log_Conf(
968 _Out_ PLOG_CONF plcLogConf
,
969 _In_ DEVINST dnDevInst
,
970 _In_ PRIORITY Priority
,
976 CM_Add_Empty_Log_Conf_Ex(
977 _Out_ PLOG_CONF plcLogConf
,
978 _In_ DEVINST dnDevInst
,
979 _In_ PRIORITY Priority
,
981 _In_opt_ HMACHINE hMachine
);
987 _In_ DEVINST dnDevInst
,
995 _In_ DEVINST dnDevInst
,
998 _In_opt_ HMACHINE hMachine
);
1004 _In_ DEVINST dnDevInst
,
1007 _In_opt_ HMACHINE hMachine
);
1013 _In_ DEVINST dnDevInst
,
1015 _In_ ULONG ulFlags
);
1018 #define CM_Add_ID CM_Add_IDW
1019 #define CM_Add_ID_Ex CM_Add_ID_ExW
1021 #define CM_Add_ID CM_Add_IDA
1022 #define CM_Add_ID_Ex CM_Add_ID_ExA
1023 #endif /* UNICODE */
1029 _In_ DWORDLONG ullStartValue
,
1030 _In_ DWORDLONG ullEndValue
,
1031 _In_ RANGE_LIST rlh
,
1032 _In_ ULONG ulFlags
);
1038 _Out_opt_ PRES_DES prdResDes
,
1039 _In_ LOG_CONF lcLogConf
,
1040 _In_ RESOURCEID ResourceID
,
1041 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
1042 _In_ ULONG ResourceLen
,
1043 _In_ ULONG ulFlags
);
1049 _Out_opt_ PRES_DES prdResDes
,
1050 _In_ LOG_CONF lcLogConf
,
1051 _In_ RESOURCEID ResourceID
,
1052 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
1053 _In_ ULONG ResourceLen
,
1055 _In_opt_ HMACHINE hMachine
);
1060 CM_Connect_MachineA(
1061 _In_opt_ PCSTR UNCServerName
,
1062 _Out_ PHMACHINE phMachine
);
1067 CM_Connect_MachineW(
1068 _In_opt_ PCWSTR UNCServerName
,
1069 _Out_ PHMACHINE phMachine
);
1072 #define CM_Connect_Machine CM_Connect_MachineW
1074 #define CM_Connect_Machine CM_Connect_MachineA
1075 #endif /* UNICODE */
1081 _Out_ PDEVINST pdnDevInst
,
1082 _In_ DEVINSTID_A pDeviceID
,
1083 _In_ DEVINST dnParent
,
1084 _In_ ULONG ulFlags
);
1090 _Out_ PDEVINST pdnDevInst
,
1091 _In_ DEVINSTID_W pDeviceID
,
1092 _In_ DEVINST dnParent
,
1093 _In_ ULONG ulFlags
);
1098 CM_Create_DevNode_ExA(
1099 _Out_ PDEVINST pdnDevInst
,
1100 _In_ DEVINSTID_A pDeviceID
,
1101 _In_ DEVINST dnParent
,
1103 _In_opt_ HANDLE hMachine
);
1108 CM_Create_DevNode_ExW(
1109 _Out_ PDEVINST pdnDevInst
,
1110 _In_ DEVINSTID_W pDeviceID
,
1111 _In_ DEVINST dnParent
,
1113 _In_opt_ HANDLE hMachine
);
1115 #define CM_Create_DevInstW CM_Create_DevNodeW
1116 #define CM_Create_DevInstA CM_Create_DevNodeA
1117 #define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
1118 #define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
1120 #define CM_Create_DevNode CM_Create_DevNodeW
1121 #define CM_Create_DevInst CM_Create_DevNodeW
1122 #define CM_Create_DevNode_Ex CM_Create_DevNode_ExW
1123 #define CM_Create_DevInst_Ex CM_Create_DevInst_ExW
1125 #define CM_Create_DevNode CM_Create_DevNodeA
1126 #define CM_Create_DevInst CM_Create_DevNodeA
1127 #define CM_Create_DevNode_Ex CM_Create_DevNode_ExA
1128 #define CM_Create_DevInst_Ex CM_Create_DevNode_ExA
1129 #endif /* UNICODE */
1134 CM_Create_Range_List(
1135 _Out_ PRANGE_LIST prlh
,
1136 _In_ ULONG ulFlags
);
1141 CM_Delete_Class_Key(
1142 _In_ LPGUID ClassGuid
,
1143 _In_ ULONG ulFlags
);
1148 CM_Delete_Class_Key_Ex(
1149 _In_ LPGUID ClassGuid
,
1151 _In_opt_ HANDLE hMachine
);
1156 CM_Delete_DevNode_Key(
1157 _In_ DEVNODE dnDevNode
,
1158 _In_ ULONG ulHardwareProfile
,
1159 _In_ ULONG ulFlags
);
1164 CM_Delete_DevNode_Key_Ex(
1165 _In_ DEVNODE dnDevNode
,
1166 _In_ ULONG ulHardwareProfile
,
1168 _In_opt_ HANDLE hMachine
);
1170 #define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
1171 #define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
1177 _In_ DWORDLONG ullStartValue
,
1178 _In_ DWORDLONG ullEndValue
,
1179 _In_ RANGE_LIST rlh
,
1180 _In_ ULONG ulFlags
);
1185 CM_Detect_Resource_Conflict(
1186 _In_ DEVINST dnDevInst
,
1187 _In_ RESOURCEID ResourceID
,
1188 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
1189 _In_ ULONG ResourceLen
,
1190 _Out_ PBOOL pbConflictDetected
,
1191 _In_ ULONG ulFlags
);
1196 CM_Detect_Resource_Conflict_Ex(
1197 _In_ DEVINST dnDevInst
,
1198 _In_ RESOURCEID ResourceID
,
1199 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
1200 _In_ ULONG ResourceLen
,
1201 _Out_ PBOOL pbConflictDetected
,
1203 _In_opt_ HMACHINE hMachine
);
1209 _In_ DEVINST dnDevInst
,
1210 _In_ ULONG ulFlags
);
1215 CM_Disable_DevNode_Ex(
1216 _In_ DEVINST dnDevInst
,
1218 _In_opt_ HMACHINE hMachine
);
1220 #define CM_Disable_DevInst CM_Disable_DevNode
1221 #define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
1226 CM_Disconnect_Machine(
1227 _In_opt_ HMACHINE hMachine
);
1233 _In_ RANGE_LIST rlhOld
,
1234 _In_ RANGE_LIST rlhNew
,
1235 _In_ ULONG ulFlags
);
1241 _In_ DEVINST dnDevInst
,
1242 _In_ ULONG ulFlags
);
1247 CM_Enable_DevNode_Ex(
1248 _In_ DEVINST dnDevInst
,
1250 _In_opt_ HMACHINE hMachine
);
1252 #define CM_Enable_DevInst CM_Enable_DevNode
1253 #define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
1258 CM_Enumerate_Classes(
1259 _In_ ULONG ulClassIndex
,
1260 _Out_ LPGUID ClassGuid
,
1261 _In_ ULONG ulFlags
);
1266 CM_Enumerate_Classes_Ex(
1267 _In_ ULONG ulClassIndex
,
1268 _Out_ LPGUID ClassGuid
,
1270 _In_opt_ HMACHINE hMachine
);
1275 CM_Enumerate_EnumeratorsA(
1276 _In_ ULONG ulEnumIndex
,
1277 _Out_writes_(*pulLength
) PCHAR Buffer
,
1278 _Inout_ PULONG pulLength
,
1279 _In_ ULONG ulFlags
);
1284 CM_Enumerate_Enumerators_ExA(
1285 _In_ ULONG ulEnumIndex
,
1286 _Out_writes_(*pulLength
) PCHAR Buffer
,
1287 _Inout_ PULONG pulLength
,
1289 _In_opt_ HMACHINE hMachine
);
1294 CM_Enumerate_Enumerators_ExW(
1295 _In_ ULONG ulEnumIndex
,
1296 _Out_writes_(*pulLength
) PWCHAR Buffer
,
1297 _Inout_ PULONG pulLength
,
1299 _In_opt_ HMACHINE hMachine
);
1304 CM_Enumerate_EnumeratorsW(
1305 _In_ ULONG ulEnumIndex
,
1306 _Out_writes_(*pulLength
) PWCHAR Buffer
,
1307 _Inout_ PULONG pulLength
,
1308 _In_ ULONG ulFlags
);
1311 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
1312 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
1314 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
1315 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA
1316 #endif /* UNICODE */
1322 _Out_ PDWORDLONG pullStart
,
1323 _In_ DWORDLONG ullStart
,
1324 _In_ ULONG ulLength
,
1325 _In_ DWORDLONG ullAlignment
,
1326 _In_ DWORDLONG ullEnd
,
1327 _In_ RANGE_LIST rlh
,
1328 _In_ ULONG ulFlags
);
1334 _In_ RANGE_LIST rlh
,
1335 _Out_ PDWORDLONG pullStart
,
1336 _Out_ PDWORDLONG pullEnd
,
1337 _Out_ PRANGE_ELEMENT preElement
,
1338 _In_ ULONG ulFlags
);
1344 _In_ LOG_CONF lcLogConfToBeFreed
,
1345 _In_ ULONG ulFlags
);
1350 CM_Free_Log_Conf_Ex(
1351 _In_ LOG_CONF lcLogConfToBeFreed
,
1353 _In_opt_ HMACHINE hMachine
);
1358 CM_Free_Log_Conf_Handle(
1359 _In_ LOG_CONF lcLogConf
);
1365 _In_ RANGE_LIST rlh
,
1366 _In_ ULONG ulFlags
);
1372 _Out_opt_ PRES_DES prdResDes
,
1373 _In_ RES_DES rdResDes
,
1374 _In_ ULONG ulFlags
);
1380 _Out_opt_ PRES_DES prdResDes
,
1381 _In_ RES_DES rdResDes
,
1383 _In_opt_ HMACHINE hMachine
);
1388 CM_Free_Res_Des_Handle(
1389 _In_ RES_DES rdResDes
);
1394 CM_Free_Resource_Conflict_Handle(
1395 _In_ CONFLICT_LIST clConflictList
);
1401 _Out_ PDEVINST pdnDevInst
,
1402 _In_ DEVINST dnDevInst
,
1403 _In_ ULONG ulFlags
);
1409 _Out_ PDEVINST pdnDevInst
,
1410 _In_ DEVINST dnDevInst
,
1412 _In_opt_ HMACHINE hMachine
);
1418 _In_ LPGUID ClassGuid
,
1419 _Out_writes_opt_(*pulLength
) PCHAR Buffer
,
1420 _Inout_ PULONG pulLength
,
1421 _In_ ULONG ulFlags
);
1427 _In_ LPGUID ClassGuid
,
1428 _Out_writes_opt_(*pulLength
) PWCHAR Buffer
,
1429 _Inout_ PULONG pulLength
,
1430 _In_ ULONG ulFlags
);
1435 CM_Get_Class_Name_ExA(
1436 _In_ LPGUID ClassGuid
,
1437 _Out_writes_opt_(*pulLength
) PCHAR Buffer
,
1438 _Inout_ PULONG pulLength
,
1440 _In_opt_ HMACHINE hMachine
);
1445 CM_Get_Class_Name_ExW(
1446 _In_ LPGUID ClassGuid
,
1447 _Out_writes_opt_(*pulLength
) PWCHAR Buffer
,
1448 _Inout_ PULONG pulLength
,
1450 _In_opt_ HMACHINE hMachine
);
1453 #define CM_Get_Class_Name CM_Get_Class_NameW
1454 #define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW
1456 #define CM_Get_Class_Name CM_Get_Class_NameA
1457 #define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA
1458 #endif /* UNICODE */
1463 CM_Get_Class_Key_NameA(
1464 _In_ LPGUID ClassGuid
,
1465 _Out_writes_opt_(*pulLength
) LPSTR pszKeyName
,
1466 _Inout_ PULONG pulLength
,
1467 _In_ ULONG ulFlags
);
1472 CM_Get_Class_Key_NameW(
1473 _In_ LPGUID ClassGuid
,
1474 _Out_writes_opt_(*pulLength
) LPWSTR pszKeyName
,
1475 _Inout_ PULONG pulLength
,
1476 _In_ ULONG ulFlags
);
1481 CM_Get_Class_Key_Name_ExA(
1482 _In_ LPGUID ClassGuid
,
1483 _Out_writes_opt_(*pulLength
) LPSTR pszKeyName
,
1484 _Inout_ PULONG pulLength
,
1486 _In_opt_ HMACHINE hMachine
);
1491 CM_Get_Class_Key_Name_ExW(
1492 _In_ LPGUID ClassGuid
,
1493 _Out_writes_opt_(*pulLength
) LPWSTR pszKeyName
,
1494 _Inout_ PULONG pulLength
,
1496 _In_opt_ HMACHINE hMachine
);
1499 #define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW
1500 #define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW
1502 #define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA
1503 #define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA
1504 #endif /* UNICODE */
1510 _Out_ PULONG pulDepth
,
1511 _In_ DEVINST dnDevInst
,
1512 _In_ ULONG ulFlags
);
1518 _Out_ PULONG pulDepth
,
1519 _In_ DEVINST dnDevInst
,
1521 _In_opt_ HMACHINE hMachine
);
1527 _In_ DEVINST dnDevInst
,
1528 _Out_writes_(BufferLen
) PCHAR Buffer
,
1529 _In_ ULONG BufferLen
,
1530 _In_ ULONG ulFlags
);
1535 CM_Get_Device_ID_ExA(
1536 _In_ DEVINST dnDevInst
,
1537 _Out_writes_(BufferLen
) PCHAR Buffer
,
1538 _In_ ULONG BufferLen
,
1540 _In_opt_ HMACHINE hMachine
);
1545 CM_Get_Device_ID_ExW(
1546 _In_ DEVINST dnDevInst
,
1547 _Out_writes_(BufferLen
) PWCHAR Buffer
,
1548 _In_ ULONG BufferLen
,
1550 _In_opt_ HMACHINE hMachine
);
1556 _In_ DEVINST dnDevInst
,
1557 _Out_writes_(BufferLen
) PWCHAR Buffer
,
1558 _In_ ULONG BufferLen
,
1559 _In_ ULONG ulFlags
);
1562 #define CM_Get_Device_ID CM_Get_Device_IDW
1563 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
1565 #define CM_Get_Device_ID CM_Get_Device_IDA
1566 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA
1567 #endif /* UNICODE */
1572 CM_Get_Device_ID_ListA(
1573 _In_opt_ PCSTR pszFilter
,
1574 _Out_writes_(BufferLen
) PCHAR Buffer
,
1575 _In_ ULONG BufferLen
,
1576 _In_ ULONG ulFlags
);
1581 CM_Get_Device_ID_List_ExA(
1582 _In_opt_ PCSTR pszFilter
,
1583 _Out_writes_(BufferLen
) PCHAR Buffer
,
1584 _In_ ULONG BufferLen
,
1586 _In_opt_ HMACHINE hMachine
);
1591 CM_Get_Device_ID_List_ExW(
1592 _In_opt_ PCWSTR pszFilter
,
1593 _Out_writes_(BufferLen
) PWCHAR Buffer
,
1594 _In_ ULONG BufferLen
,
1596 _In_opt_ HMACHINE hMachine
);
1601 CM_Get_Device_ID_ListW(
1602 _In_opt_ PCWSTR pszFilter
,
1603 _Out_writes_(BufferLen
) PWCHAR Buffer
,
1604 _In_ ULONG BufferLen
,
1605 _In_ ULONG ulFlags
);
1608 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
1609 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
1611 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
1612 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
1613 #endif /* UNICODE */
1618 CM_Get_Device_ID_List_SizeA(
1619 _Out_ PULONG pulLen
,
1620 _In_opt_ PCSTR pszFilter
,
1621 _In_ ULONG ulFlags
);
1626 CM_Get_Device_ID_List_Size_ExA(
1627 _Out_ PULONG pulLen
,
1628 _In_opt_ PCSTR pszFilter
,
1630 _In_opt_ HMACHINE hMachine
);
1635 CM_Get_Device_ID_List_Size_ExW(
1636 _Out_ PULONG pulLen
,
1637 _In_opt_ PCWSTR pszFilter
,
1639 _In_opt_ HMACHINE hMachine
);
1644 CM_Get_Device_ID_List_SizeW(
1645 _Out_ PULONG pulLen
,
1646 _In_opt_ PCWSTR pszFilter
,
1647 _In_ ULONG ulFlags
);
1650 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
1651 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
1653 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
1654 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
1655 #endif /* UNICODE */
1660 CM_Get_Device_ID_Size(
1661 _Out_ PULONG pulLen
,
1662 _In_ DEVINST dnDevInst
,
1663 _In_ ULONG ulFlags
);
1668 CM_Get_Device_ID_Size_Ex(
1669 _Out_ PULONG pulLen
,
1670 _In_ DEVINST dnDevInst
,
1672 _In_opt_ HMACHINE hMachine
);
1677 CM_Get_DevNode_Registry_PropertyA(
1678 _In_ DEVINST dnDevInst
,
1679 _In_ ULONG ulProperty
,
1680 _Out_opt_ PULONG pulRegDataType
,
1681 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1682 _Inout_ PULONG pulLength
,
1683 _In_ ULONG ulFlags
);
1688 CM_Get_DevNode_Registry_PropertyW(
1689 _In_ DEVINST dnDevInst
,
1690 _In_ ULONG ulProperty
,
1691 _Out_opt_ PULONG pulRegDataType
,
1692 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1693 _Inout_ PULONG pulLength
,
1694 _In_ ULONG ulFlags
);
1699 CM_Get_DevNode_Registry_Property_ExA(
1700 _In_ DEVINST dnDevInst
,
1701 _In_ ULONG ulProperty
,
1702 _Out_opt_ PULONG pulRegDataType
,
1703 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1704 _Inout_ PULONG pulLength
,
1706 _In_opt_ HMACHINE hMachine
);
1711 CM_Get_DevNode_Registry_Property_ExW(
1712 _In_ DEVINST dnDevInst
,
1713 _In_ ULONG ulProperty
,
1714 _Out_opt_ PULONG pulRegDataType
,
1715 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1716 _Inout_ PULONG pulLength
,
1718 _In_opt_ HMACHINE hMachine
);
1720 #define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
1721 #define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
1722 #define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
1723 #define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
1726 #define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW
1727 #define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1728 #define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
1729 #define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1731 #define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA
1732 #define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1733 #define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
1734 #define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1735 #endif /* UNICODE */
1737 #if (WINVER >= _WIN32_WINNT_WINXP)
1742 CM_Get_DevNode_Custom_PropertyA(
1743 _In_ DEVINST dnDevInst
,
1744 _In_ PCSTR pszCustomPropertyName
,
1745 _Out_opt_ PULONG pulRegDataType
,
1746 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1747 _Inout_ PULONG pulLength
,
1748 _In_ ULONG ulFlags
);
1753 CM_Get_DevNode_Custom_PropertyW(
1754 _In_ DEVINST dnDevInst
,
1755 _In_ PCWSTR pszCustomPropertyName
,
1756 _Out_opt_ PULONG pulRegDataType
,
1757 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1758 _Inout_ PULONG pulLength
,
1759 _In_ ULONG ulFlags
);
1764 CM_Get_DevNode_Custom_Property_ExA(
1765 _In_ DEVINST dnDevInst
,
1766 _In_ PCSTR pszCustomPropertyName
,
1767 _Out_opt_ PULONG pulRegDataType
,
1768 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1769 _Inout_ PULONG pulLength
,
1771 _In_opt_ HMACHINE hMachine
);
1776 CM_Get_DevNode_Custom_Property_ExW(
1777 _In_ DEVINST dnDevInst
,
1778 _In_ PCWSTR pszCustomPropertyName
,
1779 _Out_opt_ PULONG pulRegDataType
,
1780 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
1781 _Inout_ PULONG pulLength
,
1783 _In_opt_ HMACHINE hMachine
);
1785 #define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW
1786 #define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA
1787 #define CM_Get_DevInst_Custom_Property_ExW CM_Get_DevNode_Custom_Property_ExW
1788 #define CM_Get_DevInst_Custom_Property_ExA CM_Get_DevNode_Custom_Property_ExA
1790 #define CM_Get_DevInst_Custom_Property CM_Get_DevNode_Custom_PropertyW
1791 #define CM_Get_DevInst_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExW
1792 #define CM_Get_DevNode_Custom_Property CM_Get_DevNode_Custom_PropertyW
1793 #define CM_Get_DevNode_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExW
1795 #define CM_Get_DevInst_Custom_Property CM_Get_DevNode_Custom_PropertyA
1796 #define CM_Get_DevInst_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExA
1797 #define CM_Get_DevNode_Custom_Property CM_Get_DevNode_Custom_PropertyA
1798 #define CM_Get_DevNode_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExA
1801 #endif /* (WINVER >= _WIN32_WINNT_WINXP) */
1806 CM_Get_DevNode_Status(
1807 _Out_ PULONG pulStatus
,
1808 _Out_ PULONG pulProblemNumber
,
1809 _In_ DEVINST dnDevInst
,
1810 _In_ ULONG ulFlags
);
1815 CM_Get_DevNode_Status_Ex(
1816 _Out_ PULONG pulStatus
,
1817 _Out_ PULONG pulProblemNumber
,
1818 _In_ DEVINST dnDevInst
,
1820 _In_opt_ HMACHINE hMachine
);
1822 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
1823 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
1828 CM_Get_First_Log_Conf(
1829 _Out_opt_ PLOG_CONF plcLogConf
,
1830 _In_ DEVINST dnDevInst
,
1831 _In_ ULONG ulFlags
);
1836 CM_Get_First_Log_Conf_Ex(
1837 _Out_opt_ PLOG_CONF plcLogConf
,
1838 _In_ DEVINST dnDevInst
,
1840 _In_opt_ HMACHINE hMachine
);
1845 CM_Get_Global_State(
1846 _Out_ PULONG pulState
,
1847 _In_ ULONG ulFlags
);
1852 CM_Get_Global_State_Ex(
1853 _Out_ PULONG pulState
,
1855 _In_opt_ HMACHINE hMachine
);
1860 CM_Get_Hardware_Profile_InfoA(
1862 _Out_ PHWPROFILEINFO_A pHWProfileInfo
,
1863 _In_ ULONG ulFlags
);
1868 CM_Get_Hardware_Profile_Info_ExA(
1870 _Out_ PHWPROFILEINFO_A pHWProfileInfo
,
1872 _In_opt_ HMACHINE hMachine
);
1877 CM_Get_Hardware_Profile_InfoW(
1879 _Out_ PHWPROFILEINFO_W pHWProfileInfo
,
1880 _In_ ULONG ulFlags
);
1885 CM_Get_Hardware_Profile_Info_ExW(
1887 _Out_ PHWPROFILEINFO_W pHWProfileInfo
,
1889 _In_opt_ HMACHINE hMachine
);
1892 #define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoW
1893 #define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExW
1895 #define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoA
1896 #define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExA
1902 CM_Get_HW_Prof_FlagsA(
1903 _In_ DEVINSTID_A szDevInstName
,
1904 _In_ ULONG ulHardwareProfile
,
1905 _Out_ PULONG pulValue
,
1906 _In_ ULONG ulFlags
);
1911 CM_Get_HW_Prof_FlagsW(
1912 _In_ DEVINSTID_W szDevInstName
,
1913 _In_ ULONG ulHardwareProfile
,
1914 _Out_ PULONG pulValue
,
1915 _In_ ULONG ulFlags
);
1920 CM_Get_HW_Prof_Flags_ExA(
1921 _In_ DEVINSTID_A szDevInstName
,
1922 _In_ ULONG ulHardwareProfile
,
1923 _Out_ PULONG pulValue
,
1925 _In_opt_ HMACHINE hMachine
);
1930 CM_Get_HW_Prof_Flags_ExW(
1931 _In_ DEVINSTID_W szDevInstName
,
1932 _In_ ULONG ulHardwareProfile
,
1933 _Out_ PULONG pulValue
,
1935 _In_opt_ HMACHINE hMachine
);
1938 #define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW
1939 #define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW
1941 #define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA
1942 #define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA
1948 CM_Get_Device_Interface_AliasA(
1949 _In_ LPCSTR pszDeviceInterface
,
1950 _In_ LPGUID AliasInterfaceGuid
,
1951 _Out_writes_(*pulLength
) LPSTR pszAliasDeviceInterface
,
1952 _Inout_ PULONG pulLength
,
1953 _In_ ULONG ulFlags
);
1958 CM_Get_Device_Interface_AliasW(
1959 _In_ LPCWSTR pszDeviceInterface
,
1960 _In_ LPGUID AliasInterfaceGuid
,
1961 _Out_writes_(*pulLength
) LPWSTR pszAliasDeviceInterface
,
1962 _Inout_ PULONG pulLength
,
1963 _In_ ULONG ulFlags
);
1968 CM_Get_Device_Interface_Alias_ExA(
1969 _In_ LPCSTR pszDeviceInterface
,
1970 _In_ LPGUID AliasInterfaceGuid
,
1971 _Out_writes_(*pulLength
) LPSTR pszAliasDeviceInterface
,
1972 _Inout_ PULONG pulLength
,
1974 _In_opt_ HMACHINE hMachine
);
1979 CM_Get_Device_Interface_Alias_ExW(
1980 _In_ LPCWSTR pszDeviceInterface
,
1981 _In_ LPGUID AliasInterfaceGuid
,
1982 _Out_writes_(*pulLength
) LPWSTR pszAliasDeviceInterface
,
1983 _Inout_ PULONG pulLength
,
1985 _In_opt_ HMACHINE hMachine
);
1988 #define CM_Get_Device_Interface_Alias CM_Get_Device_Interface_AliasW
1989 #define CM_Get_Device_Interface_Alias_Ex CM_Get_Device_Interface_Alias_ExW
1991 #define CM_Get_Device_Interface_Alias CM_Get_Device_Interface_AliasA
1992 #define CM_Get_Device_Interface_Alias_Ex CM_Get_Device_Interface_Alias_ExA
1998 CM_Get_Device_Interface_ListA(
1999 _In_ LPGUID InterfaceClassGuid
,
2000 _In_opt_ DEVINSTID_A pDeviceID
,
2001 _Out_writes_(BufferLen
) PCHAR Buffer
,
2002 _In_ ULONG BufferLen
,
2003 _In_ ULONG ulFlags
);
2008 CM_Get_Device_Interface_ListW(
2009 _In_ LPGUID InterfaceClassGuid
,
2010 _In_opt_ DEVINSTID_W pDeviceID
,
2011 _Out_writes_(BufferLen
) PWCHAR Buffer
,
2012 _In_ ULONG BufferLen
,
2013 _In_ ULONG ulFlags
);
2018 CM_Get_Device_Interface_List_ExA(
2019 _In_ LPGUID InterfaceClassGuid
,
2020 _In_opt_ DEVINSTID_A pDeviceID
,
2021 _Out_writes_(BufferLen
) PCHAR Buffer
,
2022 _In_ ULONG BufferLen
,
2024 _In_opt_ HMACHINE hMachine
);
2029 CM_Get_Device_Interface_List_ExW(
2030 _In_ LPGUID InterfaceClassGuid
,
2031 _In_opt_ DEVINSTID_W pDeviceID
,
2032 _Out_writes_(BufferLen
) PWCHAR Buffer
,
2033 _In_ ULONG BufferLen
,
2035 _In_opt_ HMACHINE hMachine
);
2038 #define CM_Get_Device_Interface_List CM_Get_Device_Interface_ListW
2039 #define CM_Get_Device_Interface_List_Ex CM_Get_Device_Interface_List_ExW
2041 #define CM_Get_Device_Interface_List CM_Get_Device_Interface_ListA
2042 #define CM_Get_Device_Interface_List_Ex CM_Get_Device_Interface_List_ExA
2048 CM_Get_Device_Interface_List_SizeA(
2049 _Out_ PULONG pulLen
,
2050 _In_ LPGUID InterfaceClassGuid
,
2051 _In_opt_ DEVINSTID_A pDeviceID
,
2052 _In_ ULONG ulFlags
);
2057 CM_Get_Device_Interface_List_SizeW(
2058 _Out_ PULONG pulLen
,
2059 _In_ LPGUID InterfaceClassGuid
,
2060 _In_opt_ DEVINSTID_W pDeviceID
,
2061 _In_ ULONG ulFlags
);
2066 CM_Get_Device_Interface_List_Size_ExA(
2067 _Out_ PULONG pulLen
,
2068 _In_ LPGUID InterfaceClassGuid
,
2069 _In_opt_ DEVINSTID_A pDeviceID
,
2071 _In_opt_ HMACHINE hMachine
);
2076 CM_Get_Device_Interface_List_Size_ExW(
2077 _Out_ PULONG pulLen
,
2078 _In_ LPGUID InterfaceClassGuid
,
2079 _In_opt_ DEVINSTID_W pDeviceID
,
2081 _In_opt_ HMACHINE hMachine
);
2084 #define CM_Get_Device_Interface_List_Size CM_Get_Device_Interface_List_SizeW
2085 #define CM_Get_Device_Interface_List_Size_Ex CM_Get_Device_Interface_List_Size_ExW
2087 #define CM_Get_Device_Interface_List_Size CM_Get_Device_Interface_List_SizeA
2088 #define CM_Get_Device_Interface_List_Size_Ex CM_Get_Device_Interface_List_Size_ExA
2094 CM_Get_Log_Conf_Priority(
2095 _In_ LOG_CONF lcLogConf
,
2096 _Out_ PPRIORITY pPriority
,
2097 _In_ ULONG ulFlags
);
2102 CM_Get_Log_Conf_Priority_Ex(
2103 _In_ LOG_CONF lcLogConf
,
2104 _Out_ PPRIORITY pPriority
,
2106 _In_opt_ HMACHINE hMachine
);
2111 CM_Get_Next_Log_Conf(
2112 _Out_opt_ PLOG_CONF plcLogConf
,
2113 _In_ LOG_CONF lcLogConf
,
2114 _In_ ULONG ulFlags
);
2119 CM_Get_Next_Log_Conf_Ex(
2120 _Out_opt_ PLOG_CONF plcLogConf
,
2121 _In_ LOG_CONF lcLogConf
,
2123 _In_opt_ HMACHINE hMachine
);
2128 CM_Get_Next_Res_Des(
2129 _Out_ PRES_DES prdResDes
,
2130 _In_ RES_DES rdResDes
,
2131 _In_ RESOURCEID ForResource
,
2132 _Out_opt_ PRESOURCEID pResourceID
,
2133 _In_ ULONG ulFlags
);
2138 CM_Get_Next_Res_Des_Ex(
2139 _Out_ PRES_DES prdResDes
,
2140 _In_ RES_DES rdResDes
,
2141 _In_ RESOURCEID ForResource
,
2142 _Out_opt_ PRESOURCEID pResourceID
,
2144 _In_opt_ HMACHINE hMachine
);
2150 _Out_ PDEVINST pdnDevInst
,
2151 _In_ DEVINST dnDevInst
,
2152 _In_ ULONG ulFlags
);
2158 _Out_ PDEVINST pdnDevInst
,
2159 _In_ DEVINST dnDevInst
,
2161 _In_opt_ HMACHINE hMachine
);
2166 CM_Get_Res_Des_Data(
2167 _In_ RES_DES rdResDes
,
2168 _Out_writes_bytes_(BufferLen
) PVOID Buffer
,
2169 _In_ ULONG BufferLen
,
2170 _In_ ULONG ulFlags
);
2175 CM_Get_Res_Des_Data_Ex(
2176 _In_ RES_DES rdResDes
,
2177 _Out_writes_bytes_(BufferLen
) PVOID Buffer
,
2178 _In_ ULONG BufferLen
,
2180 _In_opt_ HMACHINE hMachine
);
2185 CM_Get_Res_Des_Data_Size(
2186 _Out_ PULONG pulSize
,
2187 _In_ RES_DES rdResDes
,
2188 _In_ ULONG ulFlags
);
2193 CM_Get_Res_Des_Data_Size_Ex(
2194 _Out_ PULONG pulSize
,
2195 _In_ RES_DES rdResDes
,
2197 _In_opt_ HMACHINE hMachine
);
2202 CM_Get_Resource_Conflict_Count(
2203 _In_ CONFLICT_LIST clConflictList
,
2204 _Out_ PULONG pulCount
);
2209 CM_Get_Resource_Conflict_DetailsA(
2210 _In_ CONFLICT_LIST clConflictList
,
2212 _Inout_ PCONFLICT_DETAILS_A pConflictDetails
);
2217 CM_Get_Resource_Conflict_DetailsW(
2218 _In_ CONFLICT_LIST clConflictList
,
2220 _Inout_ PCONFLICT_DETAILS_W pConflictDetails
);
2223 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
2225 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
2226 #endif /* UNICODE */
2231 CM_Get_Class_Registry_PropertyW(
2232 _In_ LPGUID ClassGuid
,
2233 _In_ ULONG ulProperty
,
2234 _Out_opt_ PULONG pulRegDataType
,
2235 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
2236 _Inout_ PULONG pulLength
,
2238 _In_opt_ HMACHINE hMachine
);
2243 CM_Set_Class_Registry_PropertyW(
2244 _In_ LPGUID ClassGuid
,
2245 _In_ ULONG ulProperty
,
2246 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
2247 _In_ ULONG ulLength
,
2249 _In_opt_ HMACHINE hMachine
);
2254 CM_Get_Class_Registry_PropertyA(
2255 _In_ LPGUID ClassGuid
,
2256 _In_ ULONG ulProperty
,
2257 _Out_opt_ PULONG pulRegDataType
,
2258 _Out_writes_bytes_opt_(*pulLength
) PVOID Buffer
,
2259 _Inout_ PULONG pulLength
,
2261 _In_opt_ HMACHINE hMachine
);
2266 CM_Set_Class_Registry_PropertyA(
2267 _In_ LPGUID ClassGuid
,
2268 _In_ ULONG ulProperty
,
2269 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
2270 _In_ ULONG ulLength
,
2272 _In_opt_ HMACHINE hMachine
);
2275 #define CM_Get_Class_Registry_Property CM_Get_Class_Registry_PropertyW
2276 #define CM_Set_Class_Registry_Property CM_Set_Class_Registry_PropertyW
2278 #define CM_Get_Class_Registry_Property CM_Get_Class_Registry_PropertyA
2279 #define CM_Set_Class_Registry_Property CM_Set_Class_Registry_PropertyA
2286 _Out_ PDEVINST pdnDevInst
,
2287 _In_ DEVINST DevInst
,
2288 _In_ ULONG ulFlags
);
2294 _Out_ PDEVINST pdnDevInst
,
2295 _In_ DEVINST DevInst
,
2297 _In_opt_ HMACHINE hMachine
);
2302 CM_Get_Version(VOID
);
2308 _In_opt_ HMACHINE hMachine
);
2310 #if (WINVER >= _WIN32_WINNT_WINXP)
2315 CM_Is_Version_Available(
2316 _In_ WORD wVersion
);
2321 CM_Is_Version_Available_Ex(
2323 _In_opt_ HMACHINE hMachine
);
2325 #endif /* (WINVER >= _WIN32_WINNT_WINXP) */
2330 CM_Intersect_Range_List(
2331 _In_ RANGE_LIST rlhOld1
,
2332 _In_ RANGE_LIST rlhOld2
,
2333 _In_ RANGE_LIST rlhNew
,
2334 _In_ ULONG ulFlags
);
2339 CM_Invert_Range_List(
2340 _In_ RANGE_LIST rlhOld
,
2341 _In_ RANGE_LIST rlhNew
,
2342 _In_ DWORDLONG ullMaxValue
,
2343 _In_ ULONG ulFlags
);
2348 CM_Is_Dock_Station_Present(
2349 _Out_ PBOOL pbPresent
);
2354 CM_Is_Dock_Station_Present_Ex(
2355 _Out_ PBOOL pbPresent
,
2356 _In_opt_ HMACHINE hMachine
);
2362 _Out_ PDEVINST pdnDevInst
,
2363 _In_opt_ DEVINSTID_A pDeviceID
,
2364 _In_ ULONG ulFlags
);
2369 CM_Locate_DevNode_ExA(
2370 _Out_ PDEVINST pdnDevInst
,
2371 _In_opt_ DEVINSTID_A pDeviceID
,
2373 _In_opt_ HMACHINE hMachine
);
2378 CM_Locate_DevNode_ExW(
2379 _Out_ PDEVINST pdnDevInst
,
2380 _In_opt_ DEVINSTID_W pDeviceID
,
2382 _In_opt_ HMACHINE hMachine
);
2388 _Out_ PDEVINST pdnDevInst
,
2389 _In_opt_ DEVINSTID_W pDeviceID
,
2390 _In_ ULONG ulFlags
);
2392 #define CM_Locate_DevInstA CM_Locate_DevNodeA
2393 #define CM_Locate_DevInstW CM_Locate_DevNodeW
2394 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
2395 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
2398 #define CM_Locate_DevNode CM_Locate_DevNodeW
2399 #define CM_Locate_DevInst CM_Locate_DevNodeW
2400 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
2401 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
2403 #define CM_Locate_DevNode CM_Locate_DevNodeA
2404 #define CM_Locate_DevInst CM_Locate_DevNodeA
2405 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
2406 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
2407 #endif /* UNICODE */
2412 CM_Merge_Range_List(
2413 _In_ RANGE_LIST rlhOld1
,
2414 _In_ RANGE_LIST rlhOld2
,
2415 _In_ RANGE_LIST rlhNew
,
2416 _In_ ULONG ulFlags
);
2422 _Out_ PRES_DES prdResDes
,
2423 _In_ RES_DES rdResDes
,
2424 _In_ RESOURCEID ResourceID
,
2425 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
2426 _In_ ULONG ResourceLen
,
2427 _In_ ULONG ulFlags
);
2432 CM_Modify_Res_Des_Ex(
2433 _Out_ PRES_DES prdResDes
,
2434 _In_ RES_DES rdResDes
,
2435 _In_ RESOURCEID ResourceID
,
2436 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
2437 _In_ ULONG ResourceLen
,
2439 _In_opt_ HMACHINE hMachine
);
2445 _In_ DEVINST dnFromDevInst
,
2446 _In_ DEVINST dnToDevInst
,
2447 _In_ ULONG ulFlags
);
2453 _In_ DEVINST dnFromDevInst
,
2454 _In_ DEVINST dnToDevInst
,
2456 _In_opt_ HMACHINE hMachine
);
2458 #define CM_Move_DevInst CM_Move_DevNode
2459 #define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
2465 _Inout_ PRANGE_ELEMENT preElement
,
2466 _Out_ PDWORDLONG pullStart
,
2467 _Out_ PDWORDLONG pullEnd
,
2468 _In_ ULONG ulFlags
);
2474 _In_opt_ LPGUID ClassGuid
,
2475 _In_opt_ LPCSTR pszClassName
,
2476 _In_ REGSAM samDesired
,
2477 _In_ REGDISPOSITION Disposition
,
2478 _Out_ PHKEY phkClass
,
2479 _In_ ULONG ulFlags
);
2485 _In_opt_ LPGUID ClassGuid
,
2486 _In_opt_ LPCWSTR pszClassName
,
2487 _In_ REGSAM samDesired
,
2488 _In_ REGDISPOSITION Disposition
,
2489 _Out_ PHKEY phkClass
,
2490 _In_ ULONG ulFlags
);
2495 CM_Open_Class_Key_ExA(
2496 _In_opt_ LPGUID pszClassGuid
,
2497 _In_opt_ LPCSTR pszClassName
,
2498 _In_ REGSAM samDesired
,
2499 _In_ REGDISPOSITION Disposition
,
2500 _Out_ PHKEY phkClass
,
2502 _In_opt_ HMACHINE hMachine
);
2507 CM_Open_Class_Key_ExW(
2508 _In_opt_ LPGUID pszClassGuid
,
2509 _In_opt_ LPCWSTR pszClassName
,
2510 _In_ REGSAM samDesired
,
2511 _In_ REGDISPOSITION Disposition
,
2512 _Out_ PHKEY phkClass
,
2514 _In_opt_ HMACHINE hMachine
);
2517 #define CM_Open_Class_Key CM_Open_Class_KeyW
2518 #define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW
2520 #define CM_Open_Class_Key CM_Open_Class_KeyA
2521 #define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA
2522 #endif /* UNICODE */
2527 CM_Open_DevNode_Key(
2528 _In_ DEVINST dnDevNode
,
2529 _In_ REGSAM samDesired
,
2530 _In_ ULONG ulHardwareProfile
,
2531 _In_ REGDISPOSITION Disposition
,
2532 _Out_ PHKEY phkDevice
,
2533 _In_ ULONG ulFlags
);
2538 CM_Open_DevNode_Key_Ex(
2539 _In_ DEVINST dnDevNode
,
2540 _In_ REGSAM samDesired
,
2541 _In_ ULONG ulHardwareProfile
,
2542 _In_ REGDISPOSITION Disposition
,
2543 _Out_ PHKEY phkDevice
,
2545 _In_opt_ HMACHINE hMachine
);
2547 #define CM_Open_DevInst_Key CM_Open_DevNode_Key
2548 #define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
2550 #if (WINVER >= _WIN32_WINNT_VISTA)
2555 CM_Open_Device_Interface_KeyA(
2556 _In_ LPCSTR pszDeviceInterface
,
2557 _In_ REGSAM samDesired
,
2558 _In_ REGDISPOSITION Disposition
,
2559 _Out_ PHKEY phkDeviceInterface
,
2560 _In_ ULONG ulFlags
);
2565 CM_Open_Device_Interface_KeyW(
2566 _In_ LPCWSTR pszDeviceInterface
,
2567 _In_ REGSAM samDesired
,
2568 _In_ REGDISPOSITION Disposition
,
2569 _Out_ PHKEY phkDeviceInterface
,
2570 _In_ ULONG ulFlags
);
2575 CM_Open_Device_Interface_Key_ExA(
2576 _In_ LPCSTR pszDeviceInterface
,
2577 _In_ REGSAM samDesired
,
2578 _In_ REGDISPOSITION Disposition
,
2579 _Out_ PHKEY phkDeviceInterface
,
2581 _In_opt_ HMACHINE hMachine
);
2586 CM_Open_Device_Interface_Key_ExW(
2587 _In_ LPCWSTR pszDeviceInterface
,
2588 _In_ REGSAM samDesired
,
2589 _In_ REGDISPOSITION Disposition
,
2590 _Out_ PHKEY phkDeviceInterface
,
2592 _In_opt_ HMACHINE hMachine
);
2595 #define CM_Open_Device_Interface_Key CM_Open_Device_Interface_KeyW
2596 #define CM_Open_Device_Interface_Key_Ex CM_Open_Device_Interface_Key_ExW
2598 #define CM_Open_Device_Interface_Key CM_Open_Device_Interface_KeyA
2599 #define CM_Open_Device_Interface_Key_Ex CM_Open_Device_Interface_Key_ExA
2605 CM_Delete_Device_Interface_KeyA(
2606 _In_ LPCSTR pszDeviceInterface
,
2607 _In_ ULONG ulFlags
);
2612 CM_Delete_Device_Interface_KeyW(
2613 _In_ LPCWSTR pszDeviceInterface
,
2614 _In_ ULONG ulFlags
);
2619 CM_Delete_Device_Interface_Key_ExA(
2620 _In_ LPCSTR pszDeviceInterface
,
2622 _In_opt_ HMACHINE hMachine
);
2627 CM_Delete_Device_Interface_Key_ExW(
2628 _In_ LPCWSTR pszDeviceInterface
,
2630 _In_opt_ HMACHINE hMachine
);
2633 #define CM_Delete_Device_Interface_Key CM_Delete_Device_Interface_KeyW
2634 #define CM_Delete_Device_Interface_Key_Ex CM_Delete_Device_Interface_Key_ExW
2636 #define CM_Delete_Device_Interface_Key CM_Delete_Device_Interface_KeyA
2637 #define CM_Delete_Device_Interface_Key_Ex CM_Delete_Device_Interface_Key_ExA
2640 #endif /* (WINVER >= _WIN32_WINNT_VISTA) */
2645 CM_Query_Arbitrator_Free_Data(
2646 _Out_writes_bytes_(DataLen
) PVOID pData
,
2648 _In_ DEVINST dnDevInst
,
2649 _In_ RESOURCEID ResourceID
,
2650 _In_ ULONG ulFlags
);
2655 CM_Query_Arbitrator_Free_Data_Ex(
2656 _Out_writes_bytes_(DataLen
) PVOID pData
,
2658 _In_ DEVINST dnDevInst
,
2659 _In_ RESOURCEID ResourceID
,
2661 _In_opt_ HMACHINE hMachine
);
2666 CM_Query_Arbitrator_Free_Size(
2667 _Out_ PULONG pulSize
,
2668 _In_ DEVINST dnDevInst
,
2669 _In_ RESOURCEID ResourceID
,
2670 _In_ ULONG ulFlags
);
2675 CM_Query_Arbitrator_Free_Size_Ex(
2676 _Out_ PULONG pulSize
,
2677 _In_ DEVINST dnDevInst
,
2678 _In_ RESOURCEID ResourceID
,
2680 _In_opt_ HMACHINE hMachine
);
2685 CM_Query_Remove_SubTree(
2686 _In_ DEVINST dnAncestor
,
2687 _In_ ULONG ulFlags
);
2692 CM_Query_Remove_SubTree_Ex(
2693 _In_ DEVINST dnAncestor
,
2695 _In_opt_ HMACHINE hMachine
);
2700 CM_Query_And_Remove_SubTreeA(
2701 _In_ DEVINST dnAncestor
,
2702 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2703 _Out_writes_opt_(ulNameLength
) LPSTR pszVetoName
,
2704 _In_ ULONG ulNameLength
,
2705 _In_ ULONG ulFlags
);
2710 CM_Query_And_Remove_SubTreeW(
2711 _In_ DEVINST dnAncestor
,
2712 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2713 _Out_writes_opt_(ulNameLength
) LPWSTR pszVetoName
,
2714 _In_ ULONG ulNameLength
,
2715 _In_ ULONG ulFlags
);
2720 CM_Query_And_Remove_SubTree_ExA(
2721 _In_ DEVINST dnAncestor
,
2722 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2723 _Out_writes_opt_(ulNameLength
) LPSTR pszVetoName
,
2724 _In_ ULONG ulNameLength
,
2726 _In_opt_ HMACHINE hMachine
);
2731 CM_Query_And_Remove_SubTree_ExW(
2732 _In_ DEVINST dnAncestor
,
2733 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2734 _Out_writes_opt_(ulNameLength
) LPWSTR pszVetoName
,
2735 _In_ ULONG ulNameLength
,
2737 _In_opt_ HMACHINE hMachine
);
2740 #define CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTreeW
2741 #define CM_Query_And_Remove_SubTree_Ex CM_Query_And_Remove_SubTree_ExW
2743 #define CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTreeA
2744 #define CM_Query_And_Remove_SubTree_Ex CM_Query_And_Remove_SubTree_ExA
2750 CM_Query_Resource_Conflict_List(
2751 _Out_ PCONFLICT_LIST pclConflictList
,
2752 _In_ DEVINST dnDevInst
,
2753 _In_ RESOURCEID ResourceID
,
2754 _In_reads_bytes_(ResourceLen
) PCVOID ResourceData
,
2755 _In_ ULONG ResourceLen
,
2757 _In_opt_ HMACHINE hMachine
);
2762 CM_Reenumerate_DevNode(
2763 _In_ DEVINST dnDevInst
,
2764 _In_ ULONG ulFlags
);
2769 CM_Reenumerate_DevNode_Ex(
2770 _In_ DEVINST dnDevInst
,
2772 _In_opt_ HMACHINE hMachine
);
2774 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
2775 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
2780 CM_Register_Device_InterfaceA(
2781 _In_ DEVINST dnDevInst
,
2782 _In_ LPGUID InterfaceClassGuid
,
2783 _In_opt_ LPCSTR pszReference
,
2784 _Out_writes_(*pulLength
) LPSTR pszDeviceInterface
,
2785 _Inout_ PULONG pulLength
,
2786 _In_ ULONG ulFlags
);
2791 CM_Register_Device_InterfaceW(
2792 _In_ DEVINST dnDevInst
,
2793 _In_ LPGUID InterfaceClassGuid
,
2794 _In_opt_ LPCWSTR pszReference
,
2795 _Out_writes_(*pulLength
) LPWSTR pszDeviceInterface
,
2796 _Inout_ PULONG pulLength
,
2797 _In_ ULONG ulFlags
);
2802 CM_Register_Device_Interface_ExA(
2803 _In_ DEVINST dnDevInst
,
2804 _In_ LPGUID InterfaceClassGuid
,
2805 _In_opt_ LPCSTR pszReference
,
2806 _Out_writes_(*pulLength
) LPSTR pszDeviceInterface
,
2807 _Inout_ PULONG pulLength
,
2809 _In_opt_ HMACHINE hMachine
);
2814 CM_Register_Device_Interface_ExW(
2815 _In_ DEVINST dnDevInst
,
2816 _In_ LPGUID InterfaceClassGuid
,
2817 _In_opt_ LPCWSTR pszReference
,
2818 _Out_writes_(*pulLength
) LPWSTR pszDeviceInterface
,
2819 _Inout_ PULONG pulLength
,
2821 _In_opt_ HMACHINE hMachine
);
2824 #define CM_Register_Device_Interface CM_Register_Device_InterfaceW
2825 #define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExW
2827 #define CM_Register_Device_Interface CM_Register_Device_InterfaceA
2828 #define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExA
2834 CM_Request_Device_EjectA(
2835 _In_ DEVINST dnDevInst
,
2836 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2837 _Out_writes_opt_(ulNameLength
) LPSTR pszVetoName
,
2838 _In_ ULONG ulNameLength
,
2839 _In_ ULONG ulFlags
);
2844 CM_Request_Device_Eject_ExW(
2845 _In_ DEVINST dnDevInst
,
2846 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2847 _Out_writes_opt_(ulNameLength
) LPWSTR pszVetoName
,
2848 _In_ ULONG ulNameLength
,
2850 _In_opt_ HMACHINE hMachine
);
2855 CM_Request_Device_Eject_ExA(
2856 _In_ DEVINST dnDevInst
,
2857 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2858 _Out_writes_opt_(ulNameLength
) LPSTR pszVetoName
,
2859 _In_ ULONG ulNameLength
,
2861 _In_opt_ HMACHINE hMachine
);
2866 CM_Request_Device_EjectW(
2867 _In_ DEVINST dnDevInst
,
2868 _Out_opt_ PPNP_VETO_TYPE pVetoType
,
2869 _Out_writes_opt_(ulNameLength
) LPWSTR pszVetoName
,
2870 _In_ ULONG ulNameLength
,
2871 _In_ ULONG ulFlags
);
2874 #define CM_Request_Device_Eject CM_Request_Device_EjectW
2875 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
2877 #define CM_Request_Device_Eject CM_Request_Device_EjectA
2878 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
2884 CM_Request_Eject_PC(VOID
);
2889 CM_Request_Eject_PC_Ex(
2890 _In_opt_ HMACHINE hMachine
);
2896 _In_ ULONG ulFlags
);
2901 CM_Run_Detection_Ex(
2903 _In_opt_ HMACHINE hMachine
);
2905 #if (WINVER >= _WIN32_WINNT_VISTA)
2908 CM_Apply_PowerScheme(VOID
);
2911 CM_Write_UserPowerKey(
2912 _In_opt_ CONST GUID
*SchemeGuid
,
2913 _In_opt_ CONST GUID
*SubGroupOfPowerSettingsGuid
,
2914 _In_opt_ CONST GUID
*PowerSettingGuid
,
2915 _In_ ULONG AccessFlags
,
2917 _In_reads_bytes_(BufferSize
) UCHAR
*Buffer
,
2918 _In_ DWORD BufferSize
,
2919 _Out_ PDWORD Error
);
2922 CM_Set_ActiveScheme(
2923 _In_ CONST GUID
*SchemeGuid
,
2924 _Out_ PDWORD Error
);
2927 CM_Restore_DefaultPowerScheme(
2928 _In_ CONST GUID
*SchemeGuid
,
2929 _Out_ PDWORD Error
);
2932 CM_RestoreAll_DefaultPowerSchemes(
2933 _Out_ PDWORD Error
);
2936 CM_Duplicate_PowerScheme(
2937 _In_ CONST GUID
*SourceSchemeGuid
,
2938 _Inout_ GUID
**DestinationSchemeGuid
,
2939 _Out_ PDWORD Error
);
2942 CM_Delete_PowerScheme(
2943 _In_ CONST GUID
*SchemeGuid
,
2944 _Out_ PDWORD Error
);
2947 CM_Import_PowerScheme(
2948 _In_ LPCWSTR ImportFileNamePath
,
2949 _Inout_ GUID
**DestinationSchemeGuid
,
2950 _Out_ PDWORD Error
);
2952 #endif /* (WINVER >= _WIN32_WINNT_VISTA) */
2957 CM_Set_DevNode_Problem(
2958 _In_ DEVINST dnDevInst
,
2959 _In_ ULONG ulProblem
,
2960 _In_ ULONG ulFlags
);
2965 CM_Set_DevNode_Problem_Ex(
2966 _In_ DEVINST dnDevInst
,
2967 _In_ ULONG ulProblem
,
2969 _In_opt_ HMACHINE hMachine
);
2971 #define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
2972 #define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
2977 CM_Unregister_Device_InterfaceA(
2978 _In_ LPCSTR pszDeviceInterface
,
2979 _In_ ULONG ulFlags
);
2984 CM_Unregister_Device_InterfaceW(
2985 _In_ LPCWSTR pszDeviceInterface
,
2986 _In_ ULONG ulFlags
);
2991 CM_Unregister_Device_Interface_ExA(
2992 _In_ LPCSTR pszDeviceInterface
,
2994 _In_opt_ HMACHINE hMachine
);
2999 CM_Unregister_Device_Interface_ExW(
3000 _In_ LPCWSTR pszDeviceInterface
,
3002 _In_opt_ HMACHINE hMachine
);
3005 #define CM_Unregister_Device_Interface CM_Unregister_Device_InterfaceW
3006 #define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExW
3008 #define CM_Unregister_Device_Interface CM_Unregister_Device_InterfaceA
3009 #define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExA
3015 CM_Register_Device_Driver(
3016 _In_ DEVINST dnDevInst
,
3017 _In_ ULONG ulFlags
);
3022 CM_Register_Device_Driver_Ex(
3023 _In_ DEVINST dnDevInst
,
3025 _In_opt_ HMACHINE hMachine
);
3031 _In_ DEVINST dnAncestor
,
3032 _In_ ULONG ulFlags
);
3037 CM_Remove_SubTree_Ex(
3038 _In_ DEVINST dnAncestor
,
3040 _In_opt_ HMACHINE hMachine
);
3045 CM_Set_DevNode_Registry_PropertyA(
3046 _In_ DEVINST dnDevInst
,
3047 _In_ ULONG ulProperty
,
3048 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
3049 _In_ ULONG ulLength
,
3050 _In_ ULONG ulFlags
);
3055 CM_Set_DevNode_Registry_PropertyW(
3056 _In_ DEVINST dnDevInst
,
3057 _In_ ULONG ulProperty
,
3058 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
3059 _In_ ULONG ulLength
,
3060 _In_ ULONG ulFlags
);
3065 CM_Set_DevNode_Registry_Property_ExA(
3066 _In_ DEVINST dnDevInst
,
3067 _In_ ULONG ulProperty
,
3068 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
3069 _In_ ULONG ulLength
,
3071 _In_opt_ HMACHINE hMachine
);
3076 CM_Set_DevNode_Registry_Property_ExW(
3077 _In_ DEVINST dnDevInst
,
3078 _In_ ULONG ulProperty
,
3079 _In_reads_bytes_opt_(ulLength
) PCVOID Buffer
,
3080 _In_ ULONG ulLength
,
3082 _In_opt_ HMACHINE hMachine
);
3084 #define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
3085 #define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
3086 #define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
3087 #define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
3090 #define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
3091 #define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
3092 #define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW
3093 #define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
3095 #define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA
3096 #define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
3097 #define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA
3098 #define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
3099 #endif /* UNICODE */
3105 _In_ ULONG ulHardwareProfile
,
3106 _In_ ULONG ulFlags
);
3112 _In_ ULONG ulHardwareProfile
,
3114 _In_opt_ HMACHINE hMachine
);
3119 CM_Set_HW_Prof_FlagsA(
3120 _In_ DEVINSTID_A szDevInstName
,
3121 _In_ ULONG ulConfig
,
3123 _In_ ULONG ulFlags
);
3128 CM_Set_HW_Prof_FlagsW(
3129 _In_ DEVINSTID_W szDevInstName
,
3130 _In_ ULONG ulConfig
,
3132 _In_ ULONG ulFlags
);
3137 CM_Set_HW_Prof_Flags_ExA(
3138 _In_ DEVINSTID_A szDevInstName
,
3139 _In_ ULONG ulConfig
,
3142 _In_opt_ HMACHINE hMachine
);
3147 CM_Set_HW_Prof_Flags_ExW(
3148 _In_ DEVINSTID_W szDevInstName
,
3149 _In_ ULONG ulConfig
,
3152 _In_opt_ HMACHINE hMachine
);
3155 #define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW
3156 #define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW
3158 #define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA
3159 #define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA
3160 #endif /* UNICODE */
3166 _In_ DEVINST dnDevInst
,
3167 _In_ ULONG ulFlags
);
3172 CM_Setup_DevNode_Ex(
3173 _In_ DEVINST dnDevInst
,
3175 _In_opt_ HMACHINE hMachine
);
3177 #define CM_Setup_DevInst CM_Setup_DevNode
3178 #define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex
3183 CM_Test_Range_Available(
3184 _In_ DWORDLONG ullStartValue
,
3185 _In_ DWORDLONG ullEndValue
,
3186 _In_ RANGE_LIST rlh
,
3187 _In_ ULONG ulFlags
);
3192 CM_Uninstall_DevNode(
3193 _In_ DEVINST dnPhantom
,
3194 _In_ ULONG ulFlags
);
3199 CM_Uninstall_DevNode_Ex(
3200 _In_ DEVINST dnPhantom
,
3202 _In_opt_ HMACHINE hMachine
);
3204 #define CM_Uninstall_DevInst CM_Uninstall_DevNode
3205 #define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
3208 #if (WINVER >= _WIN32_WINNT_WIN2K)
3210 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
3215 CMP_WaitNoPendingInstallEvents(
3216 _In_ DWORD dwTimeout
);
3218 #endif /* (WINVER >= _WIN32_WINNT_WIN2K) */
3224 #endif /* _CFGMGR32_H_ */