winapi_ui_automation/um/
cfgmgr32.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! user APIs for the Configuration Manager
7use shared::basetsd::{DWORD_PTR, ULONG32, ULONG64, ULONG_PTR};
8use shared::cfg::PPNP_VETO_TYPE;
9use shared::devpropdef::{DEVPROPKEY, DEVPROPTYPE};
10use shared::guiddef::{GUID, LPGUID};
11use shared::minwindef::{BOOL, BYTE, DWORD, MAX_PATH, PBOOL, PBYTE, PHKEY, PULONG, ULONG, WORD};
12use um::winnt::{
13    ANYSIZE_ARRAY, CHAR, DWORDLONG, HANDLE, LARGE_INTEGER, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR,
14    PCHAR, PCSTR, PCWSTR, PDWORDLONG, PSTR, PVOID, PWCHAR, PWSTR, ULONGLONG, VOID, WCHAR
15};
16use um::winreg::REGSAM;
17pub type PCVOID = *const VOID;
18pub const MAX_DEVICE_ID_LEN: usize = 200;
19pub const MAX_DEVNODE_ID_LEN: usize = MAX_DEVICE_ID_LEN;
20pub const MAX_GUID_STRING_LEN: usize = 39;
21pub const MAX_CLASS_NAME_LEN: usize = 32;
22pub const MAX_PROFILE_LEN: usize = 80;
23pub const MAX_CONFIG_VALUE: DWORD = 9999;
24pub const MAX_INSTANCE_VALUE: DWORD = 9999;
25pub const MAX_MEM_REGISTERS: DWORD = 9;
26pub const MAX_IO_PORTS: DWORD = 20;
27pub const MAX_IRQS: DWORD = 7;
28pub const MAX_DMA_CHANNELS: DWORD = 7;
29pub const DWORD_MAX: DWORD = 0xffffffff;
30pub const DWORDLONG_MAX: DWORDLONG = 0xffffffffffffffff;
31pub const CONFIGMG_VERSION: DWORD = 0x0400;
32pub type RETURN_TYPE = DWORD;
33pub type CONFIGRET = RETURN_TYPE;
34pub type DEVNODE = DWORD;
35pub type DEVINST = DWORD;
36pub type PDEVNODE = *mut DEVNODE;
37pub type PDEVINST = *mut DEVNODE;
38pub type DEVNODEID_A = *mut CHAR;
39pub type DEVINSTID_A = *mut CHAR;
40pub type DEVNODEID_W = *mut WCHAR;
41pub type DEVINSTID_W = *mut WCHAR;
42pub type LOG_CONF = DWORD_PTR;
43pub type PLOG_CONF = *mut LOG_CONF;
44pub type RES_DES = DWORD_PTR;
45pub type PRES_DES = *mut RES_DES;
46pub type RESOURCEID = ULONG;
47pub type PRESOURCEID = *mut RESOURCEID;
48pub type PRIORITY = ULONG;
49pub type PPRIORITY = *mut PRIORITY;
50pub type RANGE_LIST = DWORD_PTR;
51pub type PRANGE_LIST = *mut RANGE_LIST;
52pub type RANGE_ELEMENT = DWORD_PTR;
53pub type PRANGE_ELEMENT = *mut RANGE_ELEMENT;
54pub type HMACHINE = HANDLE;
55pub type PHMACHINE = *mut HMACHINE;
56pub type CONFLICT_LIST = ULONG_PTR;
57pub type PCONFLICT_LIST = *mut CONFLICT_LIST;
58STRUCT!{struct CONFLICT_DETAILS_A {
59    CD_ulSize: ULONG,
60    CD_ulMask: ULONG,
61    CD_dnDevInst: DEVINST,
62    CD_rdResDes: RES_DES,
63    CD_ulFlags: ULONG,
64    CD_szDescription: [CHAR; MAX_PATH],
65}}
66pub type PCONFLICT_DETAILS_A = *mut CONFLICT_DETAILS_A;
67STRUCT!{struct CONFLICT_DETAILS_W {
68    CD_ulSize: ULONG,
69    CD_ulMask: ULONG,
70    CD_dnDevInst: DEVINST,
71    CD_rdResDes: RES_DES,
72    CD_ulFlags: ULONG,
73    CD_szDescription: [WCHAR; MAX_PATH],
74}}
75pub type PCONFLICT_DETAILS_W = *mut CONFLICT_DETAILS_W;
76pub const CM_CDMASK_DEVINST: ULONG = 0x00000001;
77pub const CM_CDMASK_RESDES: ULONG = 0x00000002;
78pub const CM_CDMASK_FLAGS: ULONG = 0x00000004;
79pub const CM_CDMASK_DESCRIPTION: ULONG = 0x00000008;
80pub const CM_CDMASK_VALID: ULONG = 0x0000000F;
81pub const CM_CDFLAGS_DRIVER: ULONG = 0x00000001;
82pub const CM_CDFLAGS_ROOT_OWNED: ULONG = 0x00000002;
83pub const CM_CDFLAGS_RESERVED: ULONG = 0x00000004;
84pub type REGDISPOSITION = ULONG;
85pub const mMD_MemoryType: DWORD = 0x1;
86pub const fMD_MemoryType: DWORD = mMD_MemoryType;
87pub const fMD_ROM: DWORD = 0x0;
88pub const fMD_RAM: DWORD = 0x1;
89pub const mMD_32_24: DWORD = 0x2;
90pub const fMD_32_24: DWORD = mMD_32_24;
91pub const fMD_24: DWORD = 0x0;
92pub const fMD_32: DWORD = 0x2;
93pub const mMD_Prefetchable: DWORD = 0x4;
94pub const fMD_Prefetchable: DWORD = mMD_Prefetchable;
95pub const fMD_Pref: DWORD = mMD_Prefetchable;
96pub const fMD_PrefetchDisallowed: DWORD = 0x0;
97pub const fMD_PrefetchAllowed: DWORD = 0x4;
98pub const mMD_Readable: DWORD = 0x8;
99pub const fMD_Readable: DWORD = mMD_Readable;
100pub const fMD_ReadAllowed: DWORD = 0x0;
101pub const fMD_ReadDisallowed: DWORD = 0x8;
102pub const mMD_CombinedWrite: DWORD = 0x10;
103pub const fMD_CombinedWrite: DWORD = mMD_CombinedWrite;
104pub const fMD_CombinedWriteDisallowed: DWORD = 0x0;
105pub const fMD_CombinedWriteAllowed: DWORD = 0x10;
106pub const mMD_Cacheable: DWORD = 0x20;
107pub const fMD_NonCacheable: DWORD = 0x0;
108pub const fMD_Cacheable: DWORD = 0x20;
109pub const fMD_WINDOW_DECODE: DWORD = 0x40;
110pub const fMD_MEMORY_BAR: DWORD = 0x80;
111STRUCT!{#[repr(packed)] struct MEM_RANGE {
112    MR_Align: DWORDLONG,
113    MR_nBytes: ULONG,
114    MR_Min: DWORDLONG,
115    MR_Max: DWORDLONG,
116    MR_Flags: DWORD,
117    MR_Reserved: DWORD,
118}}
119pub type PMEM_RANGE = *mut MEM_RANGE;
120STRUCT!{#[repr(packed)] struct MEM_DES {
121    MD_Count: DWORD,
122    MD_Type: DWORD,
123    MD_Alloc_Base: DWORDLONG,
124    MD_Alloc_End: DWORDLONG,
125    MD_Flags: DWORD,
126    MD_Reserved: DWORD,
127}}
128pub type PMEM_DES = *mut MEM_DES;
129STRUCT!{#[repr(packed)] struct MEM_RESOURCE {
130    MEM_Header: MEM_DES,
131    MEM_Data: [MEM_RANGE; ANYSIZE_ARRAY],
132}}
133pub type PMEM_RESOURCE = *mut MEM_RESOURCE;
134STRUCT!{#[repr(packed)] struct MEM_LARGE_RANGE {
135    MLR_Align: DWORDLONG,
136    MLR_nBytes: ULONGLONG,
137    MLR_Min: DWORDLONG,
138    MLR_Max: DWORDLONG,
139    MLR_Flags: DWORD,
140    MLR_Reserved: DWORD,
141}}
142pub type PMEM_LARGE_RANGE = *mut MEM_LARGE_RANGE;
143STRUCT!{#[repr(packed)] struct MEM_LARGE_DES {
144    MLD_Count: DWORD,
145    MLD_Type: DWORD,
146    MLD_Alloc_Base: DWORDLONG,
147    MLD_Alloc_End: DWORDLONG,
148    MLD_Flags: DWORD,
149    MLD_Reserved: DWORD,
150}}
151pub type PMEM_LARGE_DES = *mut MEM_LARGE_DES;
152STRUCT!{#[repr(packed)] struct MEM_LARGE_RESOURCE {
153    MEM_LARGE_Header: MEM_LARGE_DES,
154    MEM_LARGE_Data: [MEM_LARGE_RANGE; ANYSIZE_ARRAY],
155}}
156pub type PMEM_LARGE_RESOURCE = *mut MEM_LARGE_RESOURCE;
157pub const fIOD_PortType: DWORD = 0x1;
158pub const fIOD_Memory: DWORD = 0x0;
159pub const fIOD_IO: DWORD = 0x1;
160pub const fIOD_DECODE: DWORD = 0x00fc;
161pub const fIOD_10_BIT_DECODE: DWORD = 0x0004;
162pub const fIOD_12_BIT_DECODE: DWORD = 0x0008;
163pub const fIOD_16_BIT_DECODE: DWORD = 0x0010;
164pub const fIOD_POSITIVE_DECODE: DWORD = 0x0020;
165pub const fIOD_PASSIVE_DECODE: DWORD = 0x0040;
166pub const fIOD_WINDOW_DECODE: DWORD = 0x0080;
167pub const fIOD_PORT_BAR: DWORD = 0x0100;
168pub const IO_ALIAS_10_BIT_DECODE: DWORDLONG = 0x00000004;
169pub const IO_ALIAS_12_BIT_DECODE: DWORDLONG = 0x00000010;
170pub const IO_ALIAS_16_BIT_DECODE: DWORDLONG = 0x00000000;
171pub const IO_ALIAS_POSITIVE_DECODE: DWORDLONG = 0x000000FF;
172STRUCT!{#[repr(packed)] struct IO_RANGE {
173    IOR_Align: DWORDLONG,
174    IOR_nPorts: DWORD,
175    IOR_Min: DWORDLONG,
176    IOR_Max: DWORDLONG,
177    IOR_RangeFlags: DWORD,
178    IOR_Alias: DWORDLONG,
179}}
180pub type PIO_RANGE = *mut IO_RANGE;
181STRUCT!{#[repr(packed)] struct IO_DES {
182    IOD_Count: DWORD,
183    IOD_Type: DWORD,
184    IOD_Alloc_Base: DWORDLONG,
185    IOD_Alloc_End: DWORDLONG,
186    IOD_DesFlags: DWORD,
187}}
188pub type PIO_DES = *mut IO_DES;
189STRUCT!{#[repr(packed)] struct IO_RESOURCE {
190    IO_Header: IO_DES,
191    IO_Data: [IO_RANGE; ANYSIZE_ARRAY],
192}}
193pub type PIO_RESOURCE = *mut IO_RESOURCE;
194pub const mDD_Width: ULONG = 0x3;
195pub const fDD_BYTE: ULONG = 0x0;
196pub const fDD_WORD: ULONG = 0x1;
197pub const fDD_DWORD: ULONG = 0x2;
198pub const fDD_BYTE_AND_WORD: ULONG = 0x3;
199pub const mDD_BusMaster: ULONG = 0x4;
200pub const fDD_NoBusMaster: ULONG = 0x0;
201pub const fDD_BusMaster: ULONG = 0x4;
202pub const mDD_Type: ULONG = 0x18;
203pub const fDD_TypeStandard: ULONG = 0x00;
204pub const fDD_TypeA: ULONG = 0x08;
205pub const fDD_TypeB: ULONG = 0x10;
206pub const fDD_TypeF: ULONG = 0x18;
207STRUCT!{#[repr(packed)] struct DMA_RANGE {
208    DR_Min: ULONG,
209    DR_Max: ULONG,
210    DR_Flags: ULONG,
211}}
212pub type PDMA_RANGE = *mut DMA_RANGE;
213STRUCT!{#[repr(packed)] struct DMA_DES {
214    DD_Count: DWORD,
215    DD_Type: DWORD,
216    DD_Flags: DWORD,
217    DD_Alloc_Chan: ULONG,
218}}
219pub type PDMA_DES = *mut DMA_DES;
220STRUCT!{#[repr(packed)] struct DMA_RESOURCE {
221    DMA_Header: DMA_DES,
222    DMA_Data: [DMA_RANGE; ANYSIZE_ARRAY],
223}}
224pub type PDMA_RESOURCE = *mut DMA_RESOURCE;
225pub const mIRQD_Share: ULONG = 0x1;
226pub const fIRQD_Exclusive: ULONG = 0x0;
227pub const fIRQD_Share: ULONG = 0x1;
228pub const fIRQD_Share_Bit: ULONG = 0;
229pub const fIRQD_Level_Bit: ULONG = 1;
230pub const mIRQD_Edge_Level: ULONG = 0x2;
231pub const fIRQD_Level: ULONG = 0x0;
232pub const fIRQD_Edge: ULONG = 0x2;
233STRUCT!{#[repr(packed)] struct IRQ_RANGE {
234    IRQR_Min: ULONG,
235    IRQR_Max: ULONG,
236    IRQR_Flags: ULONG,
237}}
238pub type PIRQ_RANGE = *mut IRQ_RANGE;
239STRUCT!{#[repr(packed)] struct IRQ_DES_32 {
240    IRQD_Count: DWORD,
241    IRQD_Type: DWORD,
242    IRQD_Flags: DWORD,
243    IRQD_Alloc_Num: ULONG,
244    IRQD_Affinity: ULONG32,
245}}
246pub type PIRQ_DES_32 = *mut IRQ_DES_32;
247STRUCT!{#[repr(packed)] struct IRQ_DES_64 {
248    IRQD_Count: DWORD,
249    IRQD_Type: DWORD,
250    IRQD_Flags: DWORD,
251    IRQD_Alloc_Num: ULONG,
252    IRQD_Affinity: ULONG64,
253}}
254pub type PIRQ_DES_64 = *mut IRQ_DES_64;
255STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_32 {
256    IRQ_Header: IRQ_DES_32,
257    IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
258}}
259pub type PIRQ_RESOURCE_32 = *mut IRQ_RESOURCE_32;
260STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_64 {
261    IRQ_Header: IRQ_DES_64,
262    IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
263}}
264pub type PIRQ_RESOURCE_64 = *mut IRQ_RESOURCE_64;
265STRUCT!{#[repr(packed)] struct DEVPRIVATE_RANGE {
266    PR_Data1: DWORD,
267    PR_Data2: DWORD,
268    PR_Data3: DWORD,
269}}
270pub type PDEVPRIVATE_RANGE = *mut DEVPRIVATE_RANGE;
271STRUCT!{#[repr(packed)] struct DEVPRIVATE_DES {
272    PD_Count: DWORD,
273    PD_Type: DWORD,
274    PD_Data1: DWORD,
275    PD_Data2: DWORD,
276    PD_Data3: DWORD,
277    PD_Flags: DWORD,
278}}
279pub type PDEVPRIVATE_DES = *mut DEVPRIVATE_DES;
280STRUCT!{#[repr(packed)] struct DEVPRIVATE_RESOURCE {
281    PRV_Header: DEVPRIVATE_DES,
282    PRV_Data: [DEVPRIVATE_RANGE; ANYSIZE_ARRAY],
283}}
284pub type PDEVPRIVATE_RESOURCE = *mut DEVPRIVATE_RESOURCE;
285STRUCT!{#[repr(packed)] struct CS_DES {
286    CSD_SignatureLength: DWORD,
287    CSD_LegacyDataOffset: DWORD,
288    CSD_LegacyDataSize: DWORD,
289    CSD_Flags: DWORD,
290    CSD_ClassGuid: GUID,
291    CSD_Signature: [BYTE; ANYSIZE_ARRAY],
292}}
293pub type PCS_DES = *mut CS_DES;
294STRUCT!{#[repr(packed)] struct CS_RESOURCE {
295    CS_Header: CS_DES,
296}}
297pub type PCS_RESOURCE = *mut CS_RESOURCE;
298pub const mPCD_IO_8_16: DWORD = 0x1;
299pub const fPCD_IO_8: DWORD = 0x0;
300pub const fPCD_IO_16: DWORD = 0x1;
301pub const mPCD_MEM_8_16: DWORD = 0x2;
302pub const fPCD_MEM_8: DWORD = 0x0;
303pub const fPCD_MEM_16: DWORD = 0x2;
304pub const mPCD_MEM_A_C: DWORD = 0xC;
305pub const fPCD_MEM1_A: DWORD = 0x4;
306pub const fPCD_MEM2_A: DWORD = 0x8;
307pub const fPCD_IO_ZW_8: DWORD = 0x10;
308pub const fPCD_IO_SRC_16: DWORD = 0x20;
309pub const fPCD_IO_WS_16: DWORD = 0x40;
310pub const mPCD_MEM_WS: DWORD = 0x300;
311pub const fPCD_MEM_WS_ONE: DWORD = 0x100;
312pub const fPCD_MEM_WS_TWO: DWORD = 0x200;
313pub const fPCD_MEM_WS_THREE: DWORD = 0x300;
314pub const fPCD_MEM_A: DWORD = 0x4;
315pub const fPCD_ATTRIBUTES_PER_WINDOW: DWORD = 0x8000;
316pub const fPCD_IO1_16: DWORD = 0x00010000;
317pub const fPCD_IO1_ZW_8: DWORD = 0x00020000;
318pub const fPCD_IO1_SRC_16: DWORD = 0x00040000;
319pub const fPCD_IO1_WS_16: DWORD = 0x00080000;
320pub const fPCD_IO2_16: DWORD = 0x00100000;
321pub const fPCD_IO2_ZW_8: DWORD = 0x00200000;
322pub const fPCD_IO2_SRC_16: DWORD = 0x00400000;
323pub const fPCD_IO2_WS_16: DWORD = 0x00800000;
324pub const mPCD_MEM1_WS: DWORD = 0x03000000;
325pub const fPCD_MEM1_WS_TWO: DWORD = 0x02000000;
326pub const fPCD_MEM1_WS_THREE: DWORD = 0x03000000;
327pub const fPCD_MEM1_16: DWORD = 0x04000000;
328pub const mPCD_MEM2_WS: DWORD = 0x30000000;
329pub const fPCD_MEM2_WS_ONE: DWORD = 0x10000000;
330pub const fPCD_MEM2_WS_TWO: DWORD = 0x20000000;
331pub const fPCD_MEM2_WS_THREE: DWORD = 0x30000000;
332pub const fPCD_MEM2_16: DWORD = 0x40000000;
333pub const PCD_MAX_MEMORY: usize = 2;
334pub const PCD_MAX_IO: usize = 2;
335STRUCT!{#[repr(packed)] struct PCCARD_DES {
336    PCD_Count: DWORD,
337    PCD_Type: DWORD,
338    PCD_Flags: DWORD,
339    PCD_ConfigIndex: BYTE,
340    PCD_Reserved: [BYTE; 3],
341    PCD_MemoryCardBase1: DWORD,
342    PCD_MemoryCardBase2: DWORD,
343    PCD_MemoryCardBase: [DWORD; PCD_MAX_MEMORY],
344    PCD_MemoryFlags: [WORD; PCD_MAX_MEMORY],
345    PCD_IoFlags: [BYTE; PCD_MAX_IO],
346}}
347pub type PPCCARD_DES = *mut PCCARD_DES;
348STRUCT!{#[repr(packed)] struct PCCARD_RESOURCE {
349    PcCard_Header: PCCARD_DES,
350}}
351pub type PPCCARD_RESOURCE = *mut PCCARD_RESOURCE;
352pub const mPMF_AUDIO_ENABLE: DWORD = 0x8;
353pub const fPMF_AUDIO_ENABLE: DWORD = 0x8;
354STRUCT!{#[repr(packed)] struct MFCARD_DES {
355    PMF_Count: DWORD,
356    PMF_Type: DWORD,
357    PMF_Flags: DWORD,
358    PMF_ConfigOptions: BYTE,
359    PMF_IoResourceIndex: BYTE,
360    PMF_Reserved: [BYTE; 2],
361    PMF_ConfigRegisterBase: DWORD,
362}}
363pub type PMFCARD_DES = *mut MFCARD_DES;
364STRUCT!{#[repr(packed)] struct MFCARD_RESOURCE {
365    MfCard_Header: MFCARD_DES,
366}}
367pub type PMFCARD_RESOURCE = *mut MFCARD_RESOURCE;
368STRUCT!{#[repr(packed)] struct BUSNUMBER_RANGE {
369    BUSR_Min: ULONG,
370    BUSR_Max: ULONG,
371    BUSR_nBusNumbers: ULONG,
372    BUSR_Flags: ULONG,
373}}
374pub type PBUSNUMBER_RANGE = *mut BUSNUMBER_RANGE;
375STRUCT!{#[repr(packed)] struct BUSNUMBER_DES {
376    BUSD_Count: DWORD,
377    BUSD_Type: DWORD,
378    BUSD_Flags: DWORD,
379    BUSD_Alloc_Base: ULONG,
380    BUSD_Alloc_End: ULONG,
381}}
382pub type PBUSNUMBER_DES = *mut BUSNUMBER_DES;
383STRUCT!{#[repr(packed)] struct BUSNUMBER_RESOURCE {
384    BusNumber_Header: BUSNUMBER_DES,
385    BusNumber_Data: [BUSNUMBER_RANGE; ANYSIZE_ARRAY],
386}}
387pub type PBUSNUMBER_RESOURCE = *mut BUSNUMBER_RESOURCE;
388STRUCT!{#[repr(packed)] struct CONNECTION_DES {
389    COND_Type: DWORD,
390    COND_Flags: DWORD,
391    COND_Class: BYTE,
392    COND_ClassType: BYTE,
393    COND_Reserved1: BYTE,
394    COND_Reserved2: BYTE,
395    COND_Id: LARGE_INTEGER,
396}}
397pub type PCONNECTION_DES = *mut CONNECTION_DES;
398STRUCT!{#[repr(packed)] struct CONNECTION_RESOURCE {
399    Connection_Header: CONNECTION_DES,
400}}
401pub type PCONNECTION_RESOURCE = *mut CONNECTION_RESOURCE;
402pub const CM_HWPI_NOT_DOCKABLE: DWORD = 0x00000000;
403pub const CM_HWPI_UNDOCKED: DWORD = 0x00000001;
404pub const CM_HWPI_DOCKED: DWORD = 0x00000002;
405STRUCT!{#[repr(packed)] struct HWPROFILEINFO_A {
406    HWPI_ulHWProfile: ULONG,
407    HWPI_szFriendlyName: [CHAR; MAX_PROFILE_LEN],
408    HWPI_dwFlags: DWORD,
409}}
410pub type PHWPROFILEINFO_A = *mut HWPROFILEINFO_A;
411STRUCT!{#[repr(packed)] struct HWPROFILEINFO_W {
412    HWPI_ulHWProfile: ULONG,
413    HWPI_szFriendlyName: [WCHAR; MAX_PROFILE_LEN],
414    HWPI_dwFlags: DWORD,
415}}
416pub type PHWPROFILEINFO_W = *mut HWPROFILEINFO_W;
417pub const ResType_All: RESOURCEID = 0x00000000;
418pub const ResType_None: RESOURCEID = 0x00000000;
419pub const ResType_Mem: RESOURCEID = 0x00000001;
420pub const ResType_IO: RESOURCEID = 0x00000002;
421pub const ResType_DMA: RESOURCEID = 0x00000003;
422pub const ResType_IRQ: RESOURCEID = 0x00000004;
423pub const ResType_DoNotUse: RESOURCEID = 0x00000005;
424pub const ResType_BusNumber: RESOURCEID = 0x00000006;
425pub const ResType_MemLarge: RESOURCEID = 0x00000007;
426pub const ResType_MAX: RESOURCEID = 0x00000007;
427pub const ResType_Ignored_Bit: RESOURCEID = 0x00008000;
428pub const ResType_ClassSpecific: RESOURCEID = 0x0000FFFF;
429pub const ResType_Reserved: RESOURCEID = 0x00008000;
430pub const ResType_DevicePrivate: RESOURCEID = 0x00008001;
431pub const ResType_PcCardConfig: RESOURCEID = 0x00008002;
432pub const ResType_MfCardConfig: RESOURCEID = 0x00008003;
433pub const ResType_Connection: RESOURCEID = 0x00008004;
434pub const CM_ADD_RANGE_ADDIFCONFLICT: ULONG = 0x00000000;
435pub const CM_ADD_RANGE_DONOTADDIFCONFLICT: ULONG = 0x00000001;
436pub const CM_ADD_RANGE_BITS: ULONG = 0x00000001;
437pub const BASIC_LOG_CONF: ULONG = 0x00000000;
438pub const FILTERED_LOG_CONF: ULONG = 0x00000001;
439pub const ALLOC_LOG_CONF: ULONG = 0x00000002;
440pub const BOOT_LOG_CONF: ULONG = 0x00000003;
441pub const FORCED_LOG_CONF: ULONG = 0x00000004;
442pub const OVERRIDE_LOG_CONF: ULONG = 0x00000005;
443pub const NUM_LOG_CONF: ULONG = 0x00000006;
444pub const LOG_CONF_BITS: ULONG = 0x00000007;
445pub const PRIORITY_EQUAL_FIRST: ULONG = 0x00000008;
446pub const PRIORITY_EQUAL_LAST: ULONG = 0x00000000;
447pub const PRIORITY_BIT: ULONG = 0x00000008;
448pub const RegDisposition_OpenAlways: REGDISPOSITION = 0x00000000;
449pub const RegDisposition_OpenExisting: REGDISPOSITION = 0x00000001;
450pub const RegDisposition_Bits: REGDISPOSITION = 0x00000001;
451pub const CM_ADD_ID_HARDWARE: ULONG = 0x00000000;
452pub const CM_ADD_ID_COMPATIBLE: ULONG = 0x00000001;
453pub const CM_ADD_ID_BITS: ULONG = 0x00000001;
454pub const CM_CREATE_DEVNODE_NORMAL: ULONG = 0x00000000;
455pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL: ULONG = 0x00000001;
456pub const CM_CREATE_DEVNODE_PHANTOM: ULONG = 0x00000002;
457pub const CM_CREATE_DEVNODE_GENERATE_ID: ULONG = 0x00000004;
458pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL: ULONG = 0x00000008;
459pub const CM_CREATE_DEVNODE_BITS: ULONG = 0x0000000F;
460pub const CM_CREATE_DEVINST_NORMAL: ULONG = CM_CREATE_DEVNODE_NORMAL;
461pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL: ULONG = CM_CREATE_DEVNODE_NO_WAIT_INSTALL;
462pub const CM_CREATE_DEVINST_PHANTOM: ULONG = CM_CREATE_DEVNODE_PHANTOM;
463pub const CM_CREATE_DEVINST_GENERATE_ID: ULONG = CM_CREATE_DEVNODE_GENERATE_ID;
464pub const CM_CREATE_DEVINST_DO_NOT_INSTALL: ULONG = CM_CREATE_DEVNODE_DO_NOT_INSTALL;
465pub const CM_CREATE_DEVINST_BITS: ULONG = CM_CREATE_DEVNODE_BITS;
466pub const CM_DELETE_CLASS_ONLY: ULONG = 0x00000000;
467pub const CM_DELETE_CLASS_SUBKEYS: ULONG = 0x00000001;
468pub const CM_DELETE_CLASS_INTERFACE: ULONG = 0x00000002;
469pub const CM_DELETE_CLASS_BITS: ULONG = 0x00000003;
470pub const CM_ENUMERATE_CLASSES_INSTALLER: ULONG = 0x00000000;
471pub const CM_ENUMERATE_CLASSES_INTERFACE: ULONG = 0x00000001;
472pub const CM_ENUMERATE_CLASSES_BITS: ULONG = 0x00000001;
473pub const CM_DETECT_NEW_PROFILE: ULONG = 0x00000001;
474pub const CM_DETECT_CRASHED: ULONG = 0x00000002;
475pub const CM_DETECT_HWPROF_FIRST_BOOT: ULONG = 0x00000004;
476pub const CM_DETECT_RUN: ULONG = 0x80000000;
477pub const CM_DETECT_BITS: ULONG = 0x80000007;
478pub const CM_DISABLE_POLITE: ULONG = 0x00000000;
479pub const CM_DISABLE_ABSOLUTE: ULONG = 0x00000001;
480pub const CM_DISABLE_HARDWARE: ULONG = 0x00000002;
481pub const CM_DISABLE_UI_NOT_OK: ULONG = 0x00000004;
482pub const CM_DISABLE_BITS: ULONG = 0x00000007;
483pub const CM_GETIDLIST_FILTER_NONE: ULONG = 0x00000000;
484pub const CM_GETIDLIST_FILTER_ENUMERATOR: ULONG = 0x00000001;
485pub const CM_GETIDLIST_FILTER_SERVICE: ULONG = 0x00000002;
486pub const CM_GETIDLIST_FILTER_EJECTRELATIONS: ULONG = 0x00000004;
487pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS: ULONG = 0x00000008;
488pub const CM_GETIDLIST_FILTER_POWERRELATIONS: ULONG = 0x00000010;
489pub const CM_GETIDLIST_FILTER_BUSRELATIONS: ULONG = 0x00000020;
490pub const CM_GETIDLIST_DONOTGENERATE: ULONG = 0x10000040;
491pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: ULONG = 0x00000080;
492pub const CM_GETIDLIST_FILTER_PRESENT: ULONG = 0x00000100;
493pub const CM_GETIDLIST_FILTER_CLASS: ULONG = 0x00000200;
494pub const CM_GETIDLIST_FILTER_BITS: ULONG = 0x100003FF;
495pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT: ULONG = 0x00000000;
496pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES: ULONG = 0x00000001;
497pub const CM_GET_DEVICE_INTERFACE_LIST_BITS: ULONG = 0x00000001;
498pub const CM_DRP_DEVICEDESC: ULONG = 0x00000001;
499pub const CM_DRP_HARDWAREID: ULONG = 0x00000002;
500pub const CM_DRP_COMPATIBLEIDS: ULONG = 0x00000003;
501pub const CM_DRP_UNUSED0: ULONG = 0x00000004;
502pub const CM_DRP_SERVICE: ULONG = 0x00000005;
503pub const CM_DRP_UNUSED1: ULONG = 0x00000006;
504pub const CM_DRP_UNUSED2: ULONG = 0x00000007;
505pub const CM_DRP_CLASS: ULONG = 0x00000008;
506pub const CM_DRP_CLASSGUID: ULONG = 0x00000009;
507pub const CM_DRP_DRIVER: ULONG = 0x0000000A;
508pub const CM_DRP_CONFIGFLAGS: ULONG = 0x0000000B;
509pub const CM_DRP_MFG: ULONG = 0x0000000C;
510pub const CM_DRP_FRIENDLYNAME: ULONG = 0x0000000D;
511pub const CM_DRP_LOCATION_INFORMATION: ULONG = 0x0000000E;
512pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME: ULONG = 0x0000000F;
513pub const CM_DRP_CAPABILITIES: ULONG = 0x00000010;
514pub const CM_DRP_UI_NUMBER: ULONG = 0x00000011;
515pub const CM_DRP_UPPERFILTERS: ULONG = 0x00000012;
516pub const CM_CRP_UPPERFILTERS: ULONG = CM_DRP_UPPERFILTERS;
517pub const CM_DRP_LOWERFILTERS: ULONG = 0x00000013;
518pub const CM_CRP_LOWERFILTERS: ULONG = CM_DRP_LOWERFILTERS;
519pub const CM_DRP_BUSTYPEGUID: ULONG = 0x00000014;
520pub const CM_DRP_LEGACYBUSTYPE: ULONG = 0x00000015;
521pub const CM_DRP_BUSNUMBER: ULONG = 0x00000016;
522pub const CM_DRP_ENUMERATOR_NAME: ULONG = 0x00000017;
523pub const CM_DRP_SECURITY: ULONG = 0x00000018;
524pub const CM_CRP_SECURITY: ULONG = CM_DRP_SECURITY;
525pub const CM_DRP_SECURITY_SDS: ULONG = 0x00000019;
526pub const CM_CRP_SECURITY_SDS: ULONG = CM_DRP_SECURITY_SDS;
527pub const CM_DRP_DEVTYPE: ULONG = 0x0000001A;
528pub const CM_CRP_DEVTYPE: ULONG = CM_DRP_DEVTYPE;
529pub const CM_DRP_EXCLUSIVE: ULONG = 0x0000001B;
530pub const CM_CRP_EXCLUSIVE: ULONG = CM_DRP_EXCLUSIVE;
531pub const CM_DRP_CHARACTERISTICS: ULONG = 0x0000001C;
532pub const CM_CRP_CHARACTERISTICS: ULONG = CM_DRP_CHARACTERISTICS;
533pub const CM_DRP_ADDRESS: ULONG = 0x0000001D;
534pub const CM_DRP_UI_NUMBER_DESC_FORMAT: ULONG = 0x0000001E;
535pub const CM_DRP_DEVICE_POWER_DATA: ULONG = 0x0000001F;
536pub const CM_DRP_REMOVAL_POLICY: ULONG = 0x00000020;
537pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT: ULONG = 0x00000021;
538pub const CM_DRP_REMOVAL_POLICY_OVERRIDE: ULONG = 0x00000022;
539pub const CM_DRP_INSTALL_STATE: ULONG = 0x00000023;
540pub const CM_DRP_LOCATION_PATHS: ULONG = 0x00000024;
541pub const CM_DRP_BASE_CONTAINERID: ULONG = 0x00000025;
542pub const CM_DRP_MIN: ULONG = 0x00000001;
543pub const CM_CRP_MIN: ULONG = CM_DRP_MIN;
544pub const CM_DRP_MAX: ULONG = 0x00000025;
545pub const CM_CRP_MAX: ULONG = CM_DRP_MAX;
546pub const CM_DEVCAP_LOCKSUPPORTED: ULONG = 0x00000001;
547pub const CM_DEVCAP_EJECTSUPPORTED: ULONG = 0x00000002;
548pub const CM_DEVCAP_REMOVABLE: ULONG = 0x00000004;
549pub const CM_DEVCAP_DOCKDEVICE: ULONG = 0x00000008;
550pub const CM_DEVCAP_UNIQUEID: ULONG = 0x00000010;
551pub const CM_DEVCAP_SILENTINSTALL: ULONG = 0x00000020;
552pub const CM_DEVCAP_RAWDEVICEOK: ULONG = 0x00000040;
553pub const CM_DEVCAP_SURPRISEREMOVALOK: ULONG = 0x00000080;
554pub const CM_DEVCAP_HARDWAREDISABLED: ULONG = 0x00000100;
555pub const CM_DEVCAP_NONDYNAMIC: ULONG = 0x00000200;
556pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL: ULONG = 1;
557pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL: ULONG = 2;
558pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL: ULONG = 3;
559pub const CM_INSTALL_STATE_INSTALLED: ULONG = 0;
560pub const CM_INSTALL_STATE_NEEDS_REINSTALL: ULONG = 1;
561pub const CM_INSTALL_STATE_FAILED_INSTALL: ULONG = 2;
562pub const CM_INSTALL_STATE_FINISH_INSTALL: ULONG = 3;
563pub const CM_LOCATE_DEVNODE_NORMAL: ULONG = 0x00000000;
564pub const CM_LOCATE_DEVNODE_PHANTOM: ULONG = 0x00000001;
565pub const CM_LOCATE_DEVNODE_CANCELREMOVE: ULONG = 0x00000002;
566pub const CM_LOCATE_DEVNODE_NOVALIDATION: ULONG = 0x00000004;
567pub const CM_LOCATE_DEVNODE_BITS: ULONG = 0x00000007;
568pub const CM_LOCATE_DEVINST_NORMAL: ULONG = CM_LOCATE_DEVNODE_NORMAL;
569pub const CM_LOCATE_DEVINST_PHANTOM: ULONG = CM_LOCATE_DEVNODE_PHANTOM;
570pub const CM_LOCATE_DEVINST_CANCELREMOVE: ULONG = CM_LOCATE_DEVNODE_CANCELREMOVE;
571pub const CM_LOCATE_DEVINST_NOVALIDATION: ULONG = CM_LOCATE_DEVNODE_NOVALIDATION;
572pub const CM_LOCATE_DEVINST_BITS: ULONG = CM_LOCATE_DEVNODE_BITS;
573pub const CM_OPEN_CLASS_KEY_INSTALLER: ULONG = 0x00000000;
574pub const CM_OPEN_CLASS_KEY_INTERFACE: ULONG = 0x00000001;
575pub const CM_OPEN_CLASS_KEY_BITS: ULONG = 0x00000001;
576pub const CM_REMOVE_UI_OK: ULONG = 0x00000000;
577pub const CM_REMOVE_UI_NOT_OK: ULONG = 0x00000001;
578pub const CM_REMOVE_NO_RESTART: ULONG = 0x00000002;
579pub const CM_REMOVE_BITS: ULONG = 0x00000003;
580pub const CM_QUERY_REMOVE_UI_OK: ULONG = CM_REMOVE_UI_OK;
581pub const CM_QUERY_REMOVE_UI_NOT_OK: ULONG = CM_REMOVE_UI_NOT_OK;
582pub const CM_QUERY_REMOVE_BITS: ULONG = CM_QUERY_REMOVE_UI_OK | CM_QUERY_REMOVE_UI_NOT_OK;
583pub const CM_REENUMERATE_NORMAL: ULONG = 0x00000000;
584pub const CM_REENUMERATE_SYNCHRONOUS: ULONG = 0x00000001;
585pub const CM_REENUMERATE_RETRY_INSTALLATION: ULONG = 0x00000002;
586pub const CM_REENUMERATE_ASYNCHRONOUS: ULONG = 0x00000004;
587pub const CM_REENUMERATE_BITS: ULONG = 0x00000007;
588pub const CM_REGISTER_DEVICE_DRIVER_STATIC: ULONG = 0x00000000;
589pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE: ULONG = 0x00000001;
590pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE: ULONG = 0x00000002;
591pub const CM_REGISTER_DEVICE_DRIVER_BITS: ULONG = 0x00000003;
592pub const CM_REGISTRY_HARDWARE: ULONG = 0x00000000;
593pub const CM_REGISTRY_SOFTWARE: ULONG = 0x00000001;
594pub const CM_REGISTRY_USER: ULONG = 0x00000100;
595pub const CM_REGISTRY_CONFIG: ULONG = 0x00000200;
596pub const CM_REGISTRY_BITS: ULONG = 0x00000301;
597pub const CM_SET_DEVNODE_PROBLEM_NORMAL: ULONG = 0x00000000;
598pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE: ULONG = 0x00000001;
599pub const CM_SET_DEVNODE_PROBLEM_BITS: ULONG = 0x00000001;
600pub const CM_SET_DEVINST_PROBLEM_NORMAL: ULONG = CM_SET_DEVNODE_PROBLEM_NORMAL;
601pub const CM_SET_DEVINST_PROBLEM_OVERRIDE: ULONG = CM_SET_DEVNODE_PROBLEM_OVERRIDE;
602pub const CM_SET_DEVINST_PROBLEM_BITS: ULONG = CM_SET_DEVNODE_PROBLEM_BITS;
603pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK: ULONG = 0x00000001;
604pub const CM_SET_HW_PROF_FLAGS_BITS: ULONG = 0x00000001;
605pub const CM_SETUP_DEVNODE_READY: ULONG = 0x00000000;
606pub const CM_SETUP_DEVINST_READY: ULONG = CM_SETUP_DEVNODE_READY;
607pub const CM_SETUP_DOWNLOAD: ULONG = 0x00000001;
608pub const CM_SETUP_WRITE_LOG_CONFS: ULONG = 0x00000002;
609pub const CM_SETUP_PROP_CHANGE: ULONG = 0x00000003;
610pub const CM_SETUP_DEVNODE_RESET: ULONG = 0x00000004;
611pub const CM_SETUP_DEVINST_RESET: ULONG = CM_SETUP_DEVNODE_RESET;
612pub const CM_SETUP_DEVNODE_CONFIG: ULONG = 0x00000005;
613pub const CM_SETUP_DEVINST_CONFIG: ULONG = CM_SETUP_DEVNODE_CONFIG;
614pub const CM_SETUP_DEVNODE_CONFIG_CLASS: ULONG = 0x00000006;
615pub const CM_SETUP_DEVINST_CONFIG_CLASS: ULONG = CM_SETUP_DEVNODE_CONFIG_CLASS;
616pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS: ULONG = 0x00000007;
617pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS: ULONG = CM_SETUP_DEVNODE_CONFIG_EXTENSIONS;
618pub const CM_SETUP_BITS: ULONG = 0x00000007;
619pub const CM_QUERY_ARBITRATOR_RAW: ULONG = 0x00000000;
620pub const CM_QUERY_ARBITRATOR_TRANSLATED: ULONG = 0x00000001;
621pub const CM_QUERY_ARBITRATOR_BITS: ULONG = 0x00000001;
622pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ: ULONG = 0x00000001;
623pub const CM_CUSTOMDEVPROP_BITS: ULONG = 0x00000001;
624pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE: ULONG = 0x1;
625pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME: ULONG = 0x2;
626pub const CM_CLASS_PROPERTY_INSTALLER: ULONG = 0x00000000;
627pub const CM_CLASS_PROPERTY_INTERFACE: ULONG = 0x00000001;
628pub const CM_CLASS_PROPERTY_BITS: ULONG = 0x00000001;
629DECLARE_HANDLE!{HCMNOTIFICATION, HCMNOTIFICATION__}
630pub type PHCMNOTIFICATION = *mut HCMNOTIFICATION;
631pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES: ULONG = 0x00000001;
632pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES: ULONG = 0x00000002;
633pub const CM_NOTIFY_FILTER_VALID_FLAGS: ULONG = CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES
634    | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES;
635ENUM!{enum CM_NOTIFY_FILTER_TYPE {
636    CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
637    CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
638    CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
639    CM_NOTIFY_FILTER_TYPE_MAX,
640}}
641pub type PCM_NOTIFY_FILTER_TYPE = *mut CM_NOTIFY_FILTER_TYPE;
642STRUCT!{struct CM_NOTIFY_FILTER_DeviceInterface {
643    ClassGuid: GUID,
644}}
645STRUCT!{struct CM_NOTIFY_FILTER_DeviceHandle {
646    hTarget: HANDLE,
647}}
648STRUCT!{struct CM_NOTIFY_FILTER_DeviceInstance {
649    InstanceId: [WCHAR; MAX_DEVICE_ID_LEN],
650}}
651UNION!{union CM_NOTIFY_FILTER_u {
652    [u32; 100] [u64; 50],
653    DeviceInterface DeviceInterface_mut: CM_NOTIFY_FILTER_DeviceInterface,
654    DeviceHandle DeviceHandle_mut: CM_NOTIFY_FILTER_DeviceHandle,
655    DeviceInstance DeviceInstance_mut: CM_NOTIFY_FILTER_DeviceInstance,
656}}
657STRUCT!{struct CM_NOTIFY_FILTER {
658    cbSize: DWORD,
659    Flags: DWORD,
660    FilterType: CM_NOTIFY_FILTER_TYPE,
661    Reserved: DWORD,
662    u: CM_NOTIFY_FILTER_u,
663}}
664pub type PCM_NOTIFY_FILTER = *mut CM_NOTIFY_FILTER;
665ENUM!{enum CM_NOTIFY_ACTION {
666    CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
667    CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
668    CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
669    CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
670    CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
671    CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
672    CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
673    CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
674    CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
675    CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
676    CM_NOTIFY_ACTION_MAX,
677}}
678pub type PCM_NOTIFY_ACTION = *mut CM_NOTIFY_ACTION;
679STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInterface {
680    ClassGuid: GUID,
681    SymbolicLink: [WCHAR; ANYSIZE_ARRAY],
682}}
683STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceHandle {
684    EventGuid: GUID,
685    NameOffset: LONG,
686    DataSize: DWORD,
687    Data: [BYTE; ANYSIZE_ARRAY],
688}}
689STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInstance {
690    InstanceId: [WCHAR; ANYSIZE_ARRAY],
691}}
692UNION!{union CM_NOTIFY_EVENT_DATA_u {
693    [u32; 7],
694    DeviceInterface DeviceInterface_mut: CM_NOTIFY_EVENT_DATA_DeviceInterface,
695    DeviceHandle DeviceHandle_mut: CM_NOTIFY_EVENT_DATA_DeviceHandle,
696    DeviceInstance DeviceInstance_mut: CM_NOTIFY_EVENT_DATA_DeviceInstance,
697}}
698STRUCT!{struct CM_NOTIFY_EVENT_DATA {
699    FilterType: CM_NOTIFY_FILTER_TYPE,
700    Reserved: DWORD,
701    u: CM_NOTIFY_EVENT_DATA_u,
702}}
703pub type PCM_NOTIFY_EVENT_DATA = *mut CM_NOTIFY_EVENT_DATA;
704FN!{stdcall PCM_NOTIFY_CALLBACK(
705    hNotify: HCMNOTIFICATION,
706    Context: PVOID,
707    Action: CM_NOTIFY_ACTION,
708    EventData: PCM_NOTIFY_EVENT_DATA,
709    EventDataSize: DWORD,
710) -> DWORD}
711extern "system" {
712    pub fn CM_Add_Empty_Log_Conf(
713        plcLogConf: PLOG_CONF,
714        dnDevInst: DEVINST,
715        Priority: PRIORITY,
716        ulFlags: ULONG,
717    ) -> CONFIGRET;
718    pub fn CM_Add_Empty_Log_Conf_Ex(
719        plcLogConf: PLOG_CONF,
720        dnDevInst: DEVINST,
721        Priority: PRIORITY,
722        ulFlags: ULONG,
723        hMachine: HMACHINE,
724    ) -> CONFIGRET;
725    pub fn CM_Add_IDA(
726        dnDevInst: DEVINST,
727        pszID: PSTR,
728        ulFlags: ULONG,
729    ) -> CONFIGRET;
730    pub fn CM_Add_IDW(
731        dnDevInst: DEVINST,
732        pszID: PWSTR,
733        ulFlags: ULONG,
734    ) -> CONFIGRET;
735    pub fn CM_Add_ID_ExA(
736        dnDevInst: DEVINST,
737        pszID: PSTR,
738        ulFlags: ULONG,
739        hMachine: HMACHINE,
740    ) -> CONFIGRET;
741    pub fn CM_Add_ID_ExW(
742        dnDevInst: DEVINST,
743        pszID: PWSTR,
744        ulFlags: ULONG,
745        hMachine: HMACHINE,
746    ) -> CONFIGRET;
747    pub fn CM_Add_Range(
748        ullStartValue: DWORDLONG,
749        ullEndValue: DWORDLONG,
750        rlh: RANGE_LIST,
751        ulFlags: ULONG,
752    ) -> CONFIGRET;
753    pub fn CM_Add_Res_Des(
754        prdResDes: PRES_DES,
755        lcLogConf: LOG_CONF,
756        ResourceID: RESOURCEID,
757        ResourceData: PCVOID,
758        ResourceLen: ULONG,
759        ulFlags: ULONG,
760    ) -> CONFIGRET;
761    pub fn CM_Add_Res_Des_Ex(
762        prdResDes: PRES_DES,
763        lcLogConf: LOG_CONF,
764        ResourceID: RESOURCEID,
765        ResourceData: PCVOID,
766        ResourceLen: ULONG,
767        ulFlags: ULONG,
768        hMachine: HMACHINE,
769    ) -> CONFIGRET;
770    pub fn CM_Connect_MachineA(
771        UNCServerName: PCSTR,
772        phMachine: PHMACHINE,
773    ) -> CONFIGRET;
774    pub fn CM_Connect_MachineW(
775        UNCServerName: PCWSTR,
776        phMachine: PHMACHINE,
777    ) -> CONFIGRET;
778    pub fn CM_Create_DevNodeA(
779        pdnDevInst: PDEVINST,
780        pDeviceID: DEVINSTID_A,
781        dnParent: DEVINST,
782        ulFlags: ULONG,
783    ) -> CONFIGRET;
784    pub fn CM_Create_DevNodeW(
785        pdnDevInst: PDEVINST,
786        pDeviceID: DEVINSTID_W,
787        dnParent: DEVINST,
788        ulFlags: ULONG,
789    ) -> CONFIGRET;
790    pub fn CM_Create_DevNode_ExA(
791        pdnDevInst: PDEVINST,
792        pDeviceID: DEVINSTID_A,
793        dnParent: DEVINST,
794        ulFlags: ULONG,
795        hMachine: HMACHINE,
796    ) -> CONFIGRET;
797    pub fn CM_Create_DevNode_ExW(
798        pdnDevInst: PDEVINST,
799        pDeviceID: DEVINSTID_W,
800        dnParent: DEVINST,
801        ulFlags: ULONG,
802        hMachine: HMACHINE,
803    ) -> CONFIGRET;
804    pub fn CM_Create_Range_List(
805        prlh: PRANGE_LIST,
806        ulFlags: ULONG,
807    ) -> CONFIGRET;
808    pub fn CM_Delete_Class_Key(
809        ClassGuid: LPGUID,
810        ulFlags: ULONG,
811    ) -> CONFIGRET;
812    pub fn CM_Delete_Class_Key_Ex(
813        ClassGuid: LPGUID,
814        ulFlags: ULONG,
815        hMachine: HMACHINE,
816    ) -> CONFIGRET;
817    pub fn CM_Delete_DevNode_Key(
818        dnDevNode: DEVNODE,
819        ulHardwareProfile: ULONG,
820        ulFlags: ULONG,
821    ) -> CONFIGRET;
822    pub fn CM_Delete_DevNode_Key_Ex(
823        dnDevNode: DEVNODE,
824        ulHardwareProfile: ULONG,
825        ulFlags: ULONG,
826        hMachine: HMACHINE,
827    ) -> CONFIGRET;
828    pub fn CM_Delete_Range(
829        ullStartValue: DWORDLONG,
830        ullEndValue: DWORDLONG,
831        rlh: RANGE_LIST,
832        ulFlags: ULONG,
833    ) -> CONFIGRET;
834    pub fn CM_Detect_Resource_Conflict(
835        dnDevInst: DEVINST,
836        ResourceID: RESOURCEID,
837        ResourceData: PCVOID,
838        ResourceLen: ULONG,
839        pbConflictDetected: PBOOL,
840        ulFlags: ULONG,
841    ) -> CONFIGRET;
842    pub fn CM_Detect_Resource_Conflict_Ex(
843        dnDevInst: DEVINST,
844        ResourceID: RESOURCEID,
845        ResourceData: PCVOID,
846        ResourceLen: ULONG,
847        pbConflictDetected: PBOOL,
848        ulFlags: ULONG,
849        hMachine: HMACHINE,
850    ) -> CONFIGRET;
851    pub fn CM_Disable_DevNode(
852        dnDevInst: DEVINST,
853        ulFlags: ULONG,
854    ) -> CONFIGRET;
855    pub fn CM_Disable_DevNode_Ex(
856        dnDevInst: DEVINST,
857        ulFlags: ULONG,
858        hMachine: HMACHINE,
859    ) -> CONFIGRET;
860    pub fn CM_Disconnect_Machine(
861        hMachine: HMACHINE,
862    ) -> CONFIGRET;
863    pub fn CM_Dup_Range_List(
864        rlhOld: RANGE_LIST,
865        rlhNew: RANGE_LIST,
866        ulFlags: ULONG,
867    ) -> CONFIGRET;
868    pub fn CM_Enable_DevNode(
869        dnDevInst: DEVINST,
870        ulFlags: ULONG,
871    ) -> CONFIGRET;
872    pub fn CM_Enable_DevNode_Ex(
873        dnDevInst: DEVINST,
874        ulFlags: ULONG,
875        hMachine: HMACHINE,
876    ) -> CONFIGRET;
877    pub fn CM_Enumerate_Classes(
878        ulClassIndex: ULONG,
879        ClassGuid: LPGUID,
880        ulFlags: ULONG,
881    ) -> CONFIGRET;
882    pub fn CM_Enumerate_Classes_Ex(
883        ulClassIndex: ULONG,
884        ClassGuid: LPGUID,
885        ulFlags: ULONG,
886        hMachine: HMACHINE,
887    ) -> CONFIGRET;
888    pub fn CM_Enumerate_EnumeratorsA(
889        ulEnumIndex: ULONG,
890        Buffer: PSTR,
891        pulLength: PULONG,
892        ulFlags: ULONG,
893    ) -> CONFIGRET;
894    pub fn CM_Enumerate_EnumeratorsW(
895        ulEnumIndex: ULONG,
896        Buffer: PWSTR,
897        pulLength: PULONG,
898        ulFlags: ULONG,
899    ) -> CONFIGRET;
900    pub fn CM_Enumerate_Enumerators_ExA(
901        ulEnumIndex: ULONG,
902        Buffer: PSTR,
903        pulLength: PULONG,
904        ulFlags: ULONG,
905        hMachine: HMACHINE,
906    ) -> CONFIGRET;
907    pub fn CM_Enumerate_Enumerators_ExW(
908        ulEnumIndex: ULONG,
909        Buffer: PWSTR,
910        pulLength: PULONG,
911        ulFlags: ULONG,
912        hMachine: HMACHINE,
913    ) -> CONFIGRET;
914    pub fn CM_Find_Range(
915        pullStart: PDWORDLONG,
916        ullStart: DWORDLONG,
917        ulLength: ULONG,
918        ullAlignment: DWORDLONG,
919        ullEnd: DWORDLONG,
920        rlh: RANGE_LIST,
921        ulFlags: ULONG,
922    ) -> CONFIGRET;
923    pub fn CM_First_Range(
924        rlh: RANGE_LIST,
925        pullStart: PDWORDLONG,
926        pullEnd: PDWORDLONG,
927        preElement: PRANGE_LIST,
928        ulFlags: ULONG,
929    ) -> CONFIGRET;
930    pub fn CM_Free_Log_Conf(
931        lcLogConfToBeFreed: LOG_CONF,
932        ulFlags: ULONG,
933    ) -> CONFIGRET;
934    pub fn CM_Free_Log_Conf_Ex(
935        lcLogConfToBeFreed: LOG_CONF,
936        ulFlags: ULONG,
937        hMachine: HMACHINE,
938    ) -> CONFIGRET;
939    pub fn CM_Free_Log_Conf_Handle(
940        lcLogConf: LOG_CONF,
941    ) -> CONFIGRET;
942    pub fn CM_Free_Range_List(
943        rlh: RANGE_LIST,
944        ulFlags: ULONG,
945    ) -> CONFIGRET;
946    pub fn CM_Free_Res_Des(
947        prdResDes: PRES_DES,
948        rdResDes: RES_DES,
949        ulFlags: ULONG,
950    ) -> CONFIGRET;
951    pub fn CM_Free_Res_Des_Ex(
952        prdResDes: PRES_DES,
953        rdResDes: RES_DES,
954        ulFlags: ULONG,
955        hMachine: HMACHINE,
956    ) -> CONFIGRET;
957    pub fn CM_Free_Res_Des_Handle(
958        rdResDes: RES_DES,
959    ) -> CONFIGRET;
960    pub fn CM_Get_Child(
961        pdnDevInst: PDEVINST,
962        dnDevInst: DEVINST,
963        ulFlags: ULONG,
964    ) -> CONFIGRET;
965    pub fn CM_Get_Child_Ex(
966        pdnDevInst: PDEVINST,
967        dnDevInst: DEVINST,
968        ulFlags: ULONG,
969        hMachine: HMACHINE,
970    ) -> CONFIGRET;
971    pub fn CM_Get_Class_Key_NameA(
972        ClassGuid: LPGUID,
973        pszKeyName: LPSTR,
974        pulLength: PULONG,
975        ulFlags: ULONG,
976    ) -> CONFIGRET;
977    pub fn CM_Get_Class_Key_NameW(
978        ClassGuid: LPGUID,
979        pszKeyName: LPWSTR,
980        pulLength: PULONG,
981        ulFlags: ULONG,
982    ) -> CONFIGRET;
983    pub fn CM_Get_Class_Key_Name_ExA(
984        ClassGuid: LPGUID,
985        pszKeyName: LPSTR,
986        pulLength: PULONG,
987        ulFlags: ULONG,
988        hMachine: HMACHINE,
989    ) -> CONFIGRET;
990    pub fn CM_Get_Class_Key_Name_ExW(
991        ClassGuid: LPGUID,
992        pszKeyName: LPWSTR,
993        pulLength: PULONG,
994        ulFlags: ULONG,
995        hMachine: HMACHINE,
996    ) -> CONFIGRET;
997    pub fn CM_Get_Class_NameA(
998        ClassGuid: LPGUID,
999        Buffer: PSTR,
1000        pulLength: PULONG,
1001        ulFlags: ULONG,
1002    ) -> CONFIGRET;
1003    pub fn CM_Get_Class_NameW(
1004        ClassGuid: LPGUID,
1005        Buffer: PWSTR,
1006        pulLength: PULONG,
1007        ulFlags: ULONG,
1008    ) -> CONFIGRET;
1009    pub fn CM_Get_Class_Name_ExA(
1010        ClassGuid: LPGUID,
1011        Buffer: PSTR,
1012        pulLength: PULONG,
1013        ulFlags: ULONG,
1014        hMachine: HMACHINE,
1015    ) -> CONFIGRET;
1016    pub fn CM_Get_Class_Name_ExW(
1017        ClassGuid: LPGUID,
1018        Buffer: PWSTR,
1019        pulLength: PULONG,
1020        ulFlags: ULONG,
1021        hMachine: HMACHINE,
1022    ) -> CONFIGRET;
1023    pub fn CM_Get_Depth(
1024        pulDepth: PULONG,
1025        dnDevInst: DEVINST,
1026        ulFlags: ULONG,
1027    ) -> CONFIGRET;
1028    pub fn CM_Get_Depth_Ex(
1029        pulDepth: PULONG,
1030        dnDevInst: DEVINST,
1031        ulFlags: ULONG,
1032        hMachine: HMACHINE,
1033    ) -> CONFIGRET;
1034    pub fn CM_Get_Device_IDA(
1035        dnDevInst: DEVINST,
1036        Buffer: PSTR,
1037        BufferLen: ULONG,
1038        ulFlags: ULONG,
1039    ) -> CONFIGRET;
1040    pub fn CM_Get_Device_IDW(
1041        dnDevInst: DEVINST,
1042        Buffer: PWSTR,
1043        BufferLen: ULONG,
1044        ulFlags: ULONG,
1045    ) -> CONFIGRET;
1046    pub fn CM_Get_Device_ID_ExA(
1047        dnDevInst: DEVINST,
1048        Buffer: PSTR,
1049        BufferLen: ULONG,
1050        ulFlags: ULONG,
1051        hMachine: HMACHINE,
1052    ) -> CONFIGRET;
1053    pub fn CM_Get_Device_ID_ExW(
1054        dnDevInst: DEVINST,
1055        Buffer: PWSTR,
1056        BufferLen: ULONG,
1057        ulFlags: ULONG,
1058        hMachine: HMACHINE,
1059    ) -> CONFIGRET;
1060    pub fn CM_Get_Device_ID_ListA(
1061        pszFilter: PCSTR,
1062        Buffer: PCHAR,
1063        BufferLen: ULONG,
1064        ulFlags: ULONG,
1065    ) -> CONFIGRET;
1066    pub fn CM_Get_Device_ID_ListW(
1067        pszFilter: PCWSTR,
1068        Buffer: PWCHAR,
1069        BufferLen: ULONG,
1070        ulFlags: ULONG,
1071    ) -> CONFIGRET;
1072    pub fn CM_Get_Device_ID_List_ExA(
1073        pszFilter: PCSTR,
1074        Buffer: PCHAR,
1075        BufferLen: ULONG,
1076        ulFlags: ULONG,
1077        hMachine: HMACHINE,
1078    ) -> CONFIGRET;
1079    pub fn CM_Get_Device_ID_List_ExW(
1080        pszFilter: PCWSTR,
1081        Buffer: PWCHAR,
1082        BufferLen: ULONG,
1083        ulFlags: ULONG,
1084        hMachine: HMACHINE,
1085    ) -> CONFIGRET;
1086    pub fn CM_Get_Device_ID_List_SizeA(
1087        pulLen: PULONG,
1088        pszFilter: PCSTR,
1089        ulFlags: ULONG,
1090    ) -> CONFIGRET;
1091    pub fn CM_Get_Device_ID_List_SizeW(
1092        pulLen: PULONG,
1093        pszFilter: PCWSTR,
1094        ulFlags: ULONG,
1095    ) -> CONFIGRET;
1096    pub fn CM_Get_Device_ID_List_Size_ExA(
1097        pulLen: PULONG,
1098        pszFilter: PCSTR,
1099        ulFlags: ULONG,
1100        hMachine: HMACHINE,
1101    ) -> CONFIGRET;
1102    pub fn CM_Get_Device_ID_List_Size_ExW(
1103        pulLen: PULONG,
1104        pszFilter: PCWSTR,
1105        ulFlags: ULONG,
1106        hMachine: HMACHINE,
1107    ) -> CONFIGRET;
1108    pub fn CM_Get_Device_ID_Size(
1109        pulLen: PULONG,
1110        dnDevInst: DEVINST,
1111        ulFlags: ULONG,
1112    ) -> CONFIGRET;
1113    pub fn CM_Get_Device_ID_Size_Ex(
1114        pulLen: PULONG,
1115        dnDevInst: DEVINST,
1116        ulFlags: ULONG,
1117        hMachine: HMACHINE,
1118    ) -> CONFIGRET;
1119    pub fn CM_Get_DevNode_PropertyW(
1120        dnDevInst: DEVINST,
1121        PropertyKey: *const DEVPROPKEY,
1122        PropertyType: *mut DEVPROPTYPE,
1123        PropertyBuffer: PBYTE,
1124        PropertyBufferSize: PULONG,
1125        ulFlags: ULONG,
1126    ) -> CONFIGRET;
1127    pub fn CM_Get_DevNode_PropertyExW(
1128        dnDevInst: DEVINST,
1129        PropertyKey: *const DEVPROPKEY,
1130        PropertyType: *mut DEVPROPTYPE,
1131        PropertyBuffer: PBYTE,
1132        PropertyBufferSize: PULONG,
1133        ulFlags: ULONG,
1134        hMachine: HMACHINE,
1135    ) -> CONFIGRET;
1136    pub fn CM_Get_DevNode_Registry_PropertyA(
1137        dnDevInst: DEVINST,
1138        ulProperty: ULONG,
1139        pulRegDataType: PULONG,
1140        Buffer: PVOID,
1141        pulLength: PULONG,
1142        ulFlags: ULONG,
1143    ) -> CONFIGRET;
1144    pub fn CM_Get_DevNode_Registry_PropertyW(
1145        dnDevInst: DEVINST,
1146        ulProperty: ULONG,
1147        pulRegDataType: PULONG,
1148        Buffer: PVOID,
1149        pulLength: PULONG,
1150        ulFlags: ULONG,
1151    ) -> CONFIGRET;
1152    pub fn CM_Get_DevNode_Registry_Property_ExA(
1153        dnDevInst: DEVINST,
1154        ulProperty: ULONG,
1155        pulRegDataType: PULONG,
1156        Buffer: PVOID,
1157        pulLength: PULONG,
1158        ulFlags: ULONG,
1159        hMachine: HMACHINE,
1160    ) -> CONFIGRET;
1161    pub fn CM_Get_DevNode_Registry_Property_ExW(
1162        dnDevInst: DEVINST,
1163        ulProperty: ULONG,
1164        pulRegDataType: PULONG,
1165        Buffer: PVOID,
1166        pulLength: PULONG,
1167        ulFlags: ULONG,
1168        hMachine: HMACHINE,
1169    ) -> CONFIGRET;
1170    pub fn CM_Get_DevNode_Custom_PropertyA(
1171        dnDevInst: DEVINST,
1172        pszCustomPropertyName: PCSTR,
1173        pulRegDataType: PULONG,
1174        Buffer: PVOID,
1175        pulLength: PULONG,
1176        ulFlags: ULONG,
1177    ) -> CONFIGRET;
1178    pub fn CM_Get_DevNode_Custom_PropertyW(
1179        dnDevInst: DEVINST,
1180        pszCustomPropertyName: PCWSTR,
1181        pulRegDataType: PULONG,
1182        Buffer: PVOID,
1183        pulLength: PULONG,
1184        ulFlags: ULONG,
1185    ) -> CONFIGRET;
1186    pub fn CM_Get_DevNode_Custom_Property_ExA(
1187        dnDevInst: DEVINST,
1188        pszCustomPropertyName: PCSTR,
1189        pulRegDataType: PULONG,
1190        Buffer: PVOID,
1191        pulLength: PULONG,
1192        ulFlags: ULONG,
1193        hMachine: HMACHINE,
1194    ) -> CONFIGRET;
1195    pub fn CM_Get_DevNode_Custom_Property_ExW(
1196        dnDevInst: DEVINST,
1197        pszCustomPropertyName: PCWSTR,
1198        pulRegDataType: PULONG,
1199        Buffer: PVOID,
1200        pulLength: PULONG,
1201        ulFlags: ULONG,
1202        hMachine: HMACHINE,
1203    ) -> CONFIGRET;
1204    pub fn CM_Get_DevNode_Status(
1205        pulStatus: PULONG,
1206        pulProblemNumber: PULONG,
1207        dnDevInst: DEVINST,
1208        ulFlags: ULONG,
1209    ) -> CONFIGRET;
1210    pub fn CM_Get_DevNode_Status_Ex(
1211        pulStatus: PULONG,
1212        pulProblemNumber: PULONG,
1213        dnDevInst: DEVINST,
1214        ulFlags: ULONG,
1215        hMachine: HMACHINE,
1216    ) -> CONFIGRET;
1217    pub fn CM_Get_First_Log_Conf(
1218        plcLogConf: PLOG_CONF,
1219        dnDevInst: DEVINST,
1220        ulFlags: ULONG,
1221    ) -> CONFIGRET;
1222    pub fn CM_Get_First_Log_Conf_Ex(
1223        plcLogConf: PLOG_CONF,
1224        dnDevInst: DEVINST,
1225        ulFlags: ULONG,
1226        hMachine: HMACHINE,
1227    ) -> CONFIGRET;
1228    pub fn CM_Get_Global_State(
1229        pulState: PULONG,
1230        ulFlags: ULONG,
1231    ) -> CONFIGRET;
1232    pub fn CM_Get_Global_State_Ex(
1233        pulState: PULONG,
1234        ulFlags: ULONG,
1235        hMachine: HMACHINE,
1236    ) -> CONFIGRET;
1237    pub fn CM_Get_Hardware_Profile_InfoA(
1238        ulIndex: ULONG,
1239        pHWProfileInfo: PHWPROFILEINFO_A,
1240        ulFlags: ULONG,
1241    ) -> CONFIGRET;
1242    pub fn CM_Get_Hardware_Profile_Info_ExA(
1243        ulIndex: ULONG,
1244        pHWProfileInfo: PHWPROFILEINFO_A,
1245        ulFlags: ULONG,
1246        hMachine: HMACHINE,
1247    ) -> CONFIGRET;
1248    pub fn CM_Get_Hardware_Profile_InfoW(
1249        ulIndex: ULONG,
1250        pHWProfileInfo: PHWPROFILEINFO_W,
1251        ulFlags: ULONG,
1252    ) -> CONFIGRET;
1253    pub fn CM_Get_Hardware_Profile_Info_ExW(
1254        ulIndex: ULONG,
1255        pHWProfileInfo: PHWPROFILEINFO_W,
1256        ulFlags: ULONG,
1257        hMachine: HMACHINE,
1258    ) -> CONFIGRET;
1259    pub fn CM_Get_HW_Prof_FlagsA(
1260        pDeviceID: DEVINSTID_A,
1261        ulHardwareProfile: ULONG,
1262        pulValue: PULONG,
1263        ulFlags: ULONG,
1264    ) -> CONFIGRET;
1265    pub fn CM_Get_HW_Prof_FlagsW(
1266        pDeviceID: DEVINSTID_W,
1267        ulHardwareProfile: ULONG,
1268        pulValue: PULONG,
1269        ulFlags: ULONG,
1270    ) -> CONFIGRET;
1271    pub fn CM_Get_HW_Prof_Flags_ExA(
1272        pDeviceID: DEVINSTID_A,
1273        ulHardwareProfile: ULONG,
1274        pulValue: PULONG,
1275        ulFlags: ULONG,
1276        hMachine: HMACHINE,
1277    ) -> CONFIGRET;
1278    pub fn CM_Get_HW_Prof_Flags_ExW(
1279        pDeviceID: DEVINSTID_W,
1280        ulHardwareProfile: ULONG,
1281        pulValue: PULONG,
1282        ulFlags: ULONG,
1283        hMachine: HMACHINE,
1284    ) -> CONFIGRET;
1285    pub fn CM_Get_Device_Interface_AliasA(
1286        pszDeviceInterface: LPCSTR,
1287        AliasInterfaceGuid: LPGUID,
1288        pszAliasDeviceInterface: LPSTR,
1289        pulLength: PULONG,
1290        ulFlags: ULONG,
1291    ) -> CONFIGRET;
1292    pub fn CM_Get_Device_Interface_AliasW(
1293        pszDeviceInterface: LPCWSTR,
1294        AliasInterfaceGuid: LPGUID,
1295        pszAliasDeviceInterface: LPWSTR,
1296        pulLength: PULONG,
1297        ulFlags: ULONG,
1298    ) -> CONFIGRET;
1299    pub fn CM_Get_Device_Interface_Alias_ExA(
1300        pszDeviceInterface: LPCSTR,
1301        AliasInterfaceGuid: LPGUID,
1302        pszAliasDeviceInterface: LPSTR,
1303        pulLength: PULONG,
1304        ulFlags: ULONG,
1305        hMachine: HMACHINE,
1306    ) -> CONFIGRET;
1307    pub fn CM_Get_Device_Interface_Alias_ExW(
1308        pszDeviceInterface: LPCWSTR,
1309        AliasInterfaceGuid: LPGUID,
1310        pszAliasDeviceInterface: LPWSTR,
1311        pulLength: PULONG,
1312        ulFlags: ULONG,
1313        hMachine: HMACHINE,
1314    ) -> CONFIGRET;
1315    pub fn CM_Get_Device_Interface_ListA(
1316        InterfaceClassGuid: LPGUID,
1317        pDeviceID: DEVINSTID_A,
1318        Buffer: PCHAR,
1319        BufferLen: ULONG,
1320        ulFlags: ULONG,
1321    ) -> CONFIGRET;
1322    pub fn CM_Get_Device_Interface_ListW(
1323        InterfaceClassGuid: LPGUID,
1324        pDeviceID: DEVINSTID_W,
1325        Buffer: PWCHAR,
1326        BufferLen: ULONG,
1327        ulFlags: ULONG,
1328    ) -> CONFIGRET;
1329    pub fn CM_Get_Device_Interface_List_ExA(
1330        InterfaceClassGuid: LPGUID,
1331        pDeviceID: DEVINSTID_A,
1332        Buffer: PCHAR,
1333        BufferLen: ULONG,
1334        ulFlags: ULONG,
1335        hMachine: HMACHINE,
1336    ) -> CONFIGRET;
1337    pub fn CM_Get_Device_Interface_List_ExW(
1338        InterfaceClassGuid: LPGUID,
1339        pDeviceID: DEVINSTID_W,
1340        Buffer: PWCHAR,
1341        BufferLen: ULONG,
1342        ulFlags: ULONG,
1343        hMachine: HMACHINE,
1344    ) -> CONFIGRET;
1345    pub fn CM_Get_Device_Interface_List_SizeA(
1346        pulLen: PULONG,
1347        InterfaceClassGuid: LPGUID,
1348        pDeviceID: DEVINSTID_A,
1349        ulFlags: ULONG,
1350    ) -> CONFIGRET;
1351    pub fn CM_Get_Device_Interface_List_SizeW(
1352        pulLen: PULONG,
1353        InterfaceClassGuid: LPGUID,
1354        pDeviceID: DEVINSTID_W,
1355        ulFlags: ULONG,
1356    ) -> CONFIGRET;
1357    pub fn CM_Get_Device_Interface_List_Size_ExA(
1358        pulLen: PULONG,
1359        InterfaceClassGuid: LPGUID,
1360        pDeviceID: DEVINSTID_A,
1361        ulFlags: ULONG,
1362        hMachine: HMACHINE,
1363    ) -> CONFIGRET;
1364    pub fn CM_Get_Device_Interface_List_Size_ExW(
1365        pulLen: PULONG,
1366        InterfaceClassGuid: LPGUID,
1367        pDeviceID: DEVINSTID_W,
1368        ulFlags: ULONG,
1369        hMachine: HMACHINE,
1370    ) -> CONFIGRET;
1371    pub fn CM_Get_Device_Interface_PropertyW(
1372        pszDeviceInterface: LPCWSTR,
1373        PropertyKey: *const DEVPROPKEY,
1374        PropertyType: *mut DEVPROPTYPE,
1375        PropertyBuffer: PBYTE,
1376        PropertyBufferSize: PULONG,
1377        ulFlags: ULONG,
1378    ) -> CONFIGRET;
1379    pub fn CM_Get_Device_Interface_PropertyExW(
1380        pszDeviceInterface: LPCWSTR,
1381        PropertyKey: *const DEVPROPKEY,
1382        PropertyType: *mut DEVPROPTYPE,
1383        PropertyBuffer: PBYTE,
1384        PropertyBufferSize: PULONG,
1385        ulFlags: ULONG,
1386        hMachine: HMACHINE,
1387    ) -> CONFIGRET;
1388    pub fn CM_Get_Log_Conf_Priority(
1389        lcLogConf: LOG_CONF,
1390        pPriority: PRIORITY,
1391        ulFlags: ULONG,
1392    ) -> CONFIGRET;
1393    pub fn CM_Get_Log_Conf_Priority_Ex(
1394        lcLogConf: LOG_CONF,
1395        pPriority: PRIORITY,
1396        ulFlags: ULONG,
1397        hMachine: HMACHINE,
1398    ) -> CONFIGRET;
1399    pub fn CM_Get_Next_Log_Conf(
1400        plcLogConf: PLOG_CONF,
1401        lcLogConf: LOG_CONF,
1402        ulFlags: ULONG,
1403    ) -> CONFIGRET;
1404    pub fn CM_Get_Next_Log_Conf_Ex(
1405        plcLogConf: PLOG_CONF,
1406        lcLogConf: LOG_CONF,
1407        ulFlags: ULONG,
1408        hMachine: HMACHINE,
1409    ) -> CONFIGRET;
1410    pub fn CM_Get_Parent(
1411        pdnDevInst: PDEVINST,
1412        dnDevInst: DEVINST,
1413        ulFlags: ULONG,
1414    ) -> CONFIGRET;
1415    pub fn CM_Get_Parent_Ex(
1416        pdnDevInst: PDEVINST,
1417        dnDevInst: DEVINST,
1418        ulFlags: ULONG,
1419        hMachine: HMACHINE,
1420    ) -> CONFIGRET;
1421    pub fn CM_Get_Res_Des_Data(
1422        rdResDes: RES_DES,
1423        Buffer: PVOID,
1424        BufferLen: ULONG,
1425        ulFlags: ULONG,
1426    ) -> CONFIGRET;
1427    pub fn CM_Get_Res_Des_Data_Ex(
1428        rdResDes: RES_DES,
1429        Buffer: PVOID,
1430        BufferLen: ULONG,
1431        ulFlags: ULONG,
1432        hMachine: HMACHINE,
1433    ) -> CONFIGRET;
1434    pub fn CM_Get_Res_Des_Data_Size(
1435        pulSize: PULONG,
1436        rdResDes: RES_DES,
1437        ulFlags: ULONG,
1438    ) -> CONFIGRET;
1439    pub fn CM_Get_Res_Des_Data_Size_Ex(
1440        pulSize: PULONG,
1441        rdResDes: RES_DES,
1442        ulFlags: ULONG,
1443        hMachine: HMACHINE,
1444    ) -> CONFIGRET;
1445    pub fn CM_Get_Sibling(
1446        pdnDevInst: PDEVINST,
1447        dnDevInst: DEVINST,
1448        ulFlags: ULONG,
1449    ) -> CONFIGRET;
1450    pub fn CM_Get_Sibling_Ex(
1451        pdnDevInst: PDEVINST,
1452        dnDevInst: DEVINST,
1453        ulFlags: ULONG,
1454        hMachine: HMACHINE,
1455    ) -> CONFIGRET;
1456    pub fn CM_Get_Version() -> WORD;
1457    pub fn CM_Get_Version_Ex(
1458        hMachine: HMACHINE,
1459    ) -> WORD;
1460    pub fn CM_Is_Version_Available(
1461        wVersion: WORD,
1462    ) -> BOOL;
1463    pub fn CM_Is_Version_Available_Ex(
1464        wVersion: WORD,
1465        hMachine: HMACHINE,
1466    ) -> BOOL;
1467    pub fn CM_Intersect_Range_List(
1468        rlhOld1: RANGE_LIST,
1469        rlhOld2: RANGE_LIST,
1470        rlhNew: RANGE_LIST,
1471        ulFlags: ULONG,
1472    ) -> CONFIGRET;
1473    pub fn CM_Invert_Range_List(
1474        rlhOld: RANGE_LIST,
1475        rlhNew: RANGE_LIST,
1476        ullMaxValue: DWORDLONG,
1477        ulFlags: ULONG,
1478    ) -> CONFIGRET;
1479    pub fn CM_Locate_DevNodeA(
1480        pdnDevInst: PDEVINST,
1481        pDeviceID: DEVINSTID_A,
1482        ulFlags: ULONG,
1483    ) -> CONFIGRET;
1484    pub fn CM_Locate_DevNodeW(
1485        pdnDevInst: PDEVINST,
1486        pDeviceID: DEVINSTID_W,
1487        ulFlags: ULONG,
1488    ) -> CONFIGRET;
1489    pub fn CM_Locate_DevNode_ExA(
1490        pdnDevInst: PDEVINST,
1491        pDeviceID: DEVINSTID_A,
1492        ulFlags: ULONG,
1493        hMachine: HMACHINE,
1494    ) -> CONFIGRET;
1495    pub fn CM_Locate_DevNode_ExW(
1496        pdnDevInst: PDEVINST,
1497        pDeviceID: DEVINSTID_W,
1498        ulFlags: ULONG,
1499        hMachine: HMACHINE,
1500    ) -> CONFIGRET;
1501    pub fn CM_Merge_Range_List(
1502        rlhOld1: RANGE_LIST,
1503        rlhOld2: RANGE_LIST,
1504        rlhNew: RANGE_LIST,
1505        ulFlags: ULONG,
1506    ) -> CONFIGRET;
1507    pub fn CM_Modify_Res_Des(
1508        prdResDes: PRES_DES,
1509        rdResDes: RES_DES,
1510        ResourceID: RESOURCEID,
1511        ResourceData: PCVOID,
1512        ResourceLen: ULONG,
1513        ulFlags: ULONG,
1514    ) -> CONFIGRET;
1515    pub fn CM_Modify_Res_Des_Ex(
1516        prdResDes: PRES_DES,
1517        rdResDes: RES_DES,
1518        ResourceID: RESOURCEID,
1519        ResourceData: PCVOID,
1520        ResourceLen: ULONG,
1521        ulFlags: ULONG,
1522        hMachine: HMACHINE,
1523    ) -> CONFIGRET;
1524    pub fn CM_Move_DevNode(
1525        dnFromDevInst: DEVINST,
1526        dnToDevInst: DEVINST,
1527        ulFlags: ULONG,
1528    ) -> CONFIGRET;
1529    pub fn CM_Move_DevNode_Ex(
1530        dnFromDevInst: DEVINST,
1531        dnToDevInst: DEVINST,
1532        ulFlags: ULONG,
1533        hMachine: HMACHINE,
1534    ) -> CONFIGRET;
1535    pub fn CM_Next_Range(
1536        preElement: PRANGE_LIST,
1537        pullStart: PDWORDLONG,
1538        pullEnd: PDWORDLONG,
1539        ulFlags: ULONG,
1540    ) -> CONFIGRET;
1541    pub fn CM_Get_Next_Res_Des(
1542        prdResDes: PRES_DES,
1543        rdResDes: RES_DES,
1544        ForResource: RESOURCEID,
1545        pResourceID: PRESOURCEID,
1546        ulFlags: ULONG,
1547    ) -> CONFIGRET;
1548    pub fn CM_Get_Next_Res_Des_Ex(
1549        prdResDes: PRES_DES,
1550        rdResDes: RES_DES,
1551        ForResource: RESOURCEID,
1552        pResourceID: PRESOURCEID,
1553        ulFlags: ULONG,
1554        hMachine: HMACHINE,
1555    ) -> CONFIGRET;
1556    pub fn CM_Open_Class_KeyA(
1557        ClassGuid: LPGUID,
1558        pszClassName: LPCSTR,
1559        samDesired: REGSAM,
1560        Disposition: REGDISPOSITION,
1561        phkClass: PHKEY,
1562        ulFlags: ULONG,
1563    ) -> CONFIGRET;
1564    pub fn CM_Open_Class_KeyW(
1565        ClassGuid: LPGUID,
1566        pszClassName: LPCWSTR,
1567        samDesired: REGSAM,
1568        Disposition: REGDISPOSITION,
1569        phkClass: PHKEY,
1570        ulFlags: ULONG,
1571    ) -> CONFIGRET;
1572    pub fn CM_Open_Class_Key_ExA(
1573        ClassGuid: LPGUID,
1574        pszClassName: LPCSTR,
1575        samDesired: REGSAM,
1576        Disposition: REGDISPOSITION,
1577        phkClass: PHKEY,
1578        ulFlags: ULONG,
1579        hMachine: HMACHINE,
1580    ) -> CONFIGRET;
1581    pub fn CM_Open_Class_Key_ExW(
1582        ClassGuid: LPGUID,
1583        pszClassName: LPCWSTR,
1584        samDesired: REGSAM,
1585        Disposition: REGDISPOSITION,
1586        phkClass: PHKEY,
1587        ulFlags: ULONG,
1588        hMachine: HMACHINE,
1589    ) -> CONFIGRET;
1590    pub fn CM_Open_DevNode_Key(
1591        dnDevNode: DEVINST,
1592        samDesired: REGSAM,
1593        ulHardwareProfile: ULONG,
1594        Disposition: REGDISPOSITION,
1595        phkDevice: PHKEY,
1596        ulFlags: ULONG,
1597    ) -> CONFIGRET;
1598    pub fn CM_Open_DevNode_Key_Ex(
1599        dnDevNode: DEVINST,
1600        samDesired: REGSAM,
1601        ulHardwareProfile: ULONG,
1602        Disposition: REGDISPOSITION,
1603        phkDevice: PHKEY,
1604        ulFlags: ULONG,
1605        hMachine: HMACHINE,
1606    ) -> CONFIGRET;
1607    pub fn CM_Open_Device_Interface_KeyA(
1608        pszDeviceInterface: LPCSTR,
1609        samDesired: REGSAM,
1610        Disposition: REGDISPOSITION,
1611        phkDeviceInterface: PHKEY,
1612        ulFlags: ULONG,
1613    ) -> CONFIGRET;
1614    pub fn CM_Open_Device_Interface_KeyW(
1615        pszDeviceInterface: LPCWSTR,
1616        samDesired: REGSAM,
1617        Disposition: REGDISPOSITION,
1618        phkDeviceInterface: PHKEY,
1619        ulFlags: ULONG,
1620    ) -> CONFIGRET;
1621    pub fn CM_Open_Device_Interface_Key_ExA(
1622        pszDeviceInterface: LPCSTR,
1623        samDesired: REGSAM,
1624        Disposition: REGDISPOSITION,
1625        phkDeviceInterface: PHKEY,
1626        ulFlags: ULONG,
1627        hMachine: HMACHINE,
1628    ) -> CONFIGRET;
1629    pub fn CM_Open_Device_Interface_Key_ExW(
1630        pszDeviceInterface: LPCWSTR,
1631        samDesired: REGSAM,
1632        Disposition: REGDISPOSITION,
1633        phkDeviceInterface: PHKEY,
1634        ulFlags: ULONG,
1635        hMachine: HMACHINE,
1636    ) -> CONFIGRET;
1637    pub fn CM_Delete_Device_Interface_KeyA(
1638        pszDeviceInterface: LPCSTR,
1639        ulFlags: ULONG,
1640    ) -> CONFIGRET;
1641    pub fn CM_Delete_Device_Interface_KeyW(
1642        pszDeviceInterface: LPCWSTR,
1643        ulFlags: ULONG,
1644    ) -> CONFIGRET;
1645    pub fn CM_Delete_Device_Interface_Key_ExA(
1646        pszDeviceInterface: LPCSTR,
1647        ulFlags: ULONG,
1648        hMachine: HMACHINE,
1649    ) -> CONFIGRET;
1650    pub fn CM_Delete_Device_Interface_Key_ExW(
1651        pszDeviceInterface: LPCWSTR,
1652        ulFlags: ULONG,
1653        hMachine: HMACHINE,
1654    ) -> CONFIGRET;
1655    pub fn CM_Query_Arbitrator_Free_Data(
1656        pData: PVOID,
1657        DataLen: ULONG,
1658        dnDevInst: DEVINST,
1659        ResourceID: RESOURCEID,
1660        ulFlags: ULONG,
1661    ) -> CONFIGRET;
1662    pub fn CM_Query_Arbitrator_Free_Data_Ex(
1663        pData: PVOID,
1664        DataLen: ULONG,
1665        dnDevInst: DEVINST,
1666        ResourceID: RESOURCEID,
1667        ulFlags: ULONG,
1668        hMachine: HMACHINE,
1669    ) -> CONFIGRET;
1670    pub fn CM_Query_Arbitrator_Free_Size(
1671        pulSize: PULONG,
1672        dnDevInst: DEVINST,
1673        ResourceID: RESOURCEID,
1674        ulFlags: ULONG,
1675    ) -> CONFIGRET;
1676    pub fn CM_Query_Arbitrator_Free_Size_Ex(
1677        pulSize: PULONG,
1678        dnDevInst: DEVINST,
1679        ResourceID: RESOURCEID,
1680        ulFlags: ULONG,
1681        hMachine: HMACHINE,
1682    ) -> CONFIGRET;
1683    pub fn CM_Query_Remove_SubTree(
1684        dnAncestor: DEVINST,
1685        ulFlags: ULONG,
1686    ) -> CONFIGRET;
1687    pub fn CM_Query_Remove_SubTree_Ex(
1688        dnAncestor: DEVINST,
1689        ulFlags: ULONG,
1690        hMachine: HMACHINE,
1691    ) -> CONFIGRET;
1692    pub fn CM_Query_And_Remove_SubTreeA(
1693        dnAncestor: DEVINST,
1694        pVetoType: PPNP_VETO_TYPE,
1695        pszVetoName: LPSTR,
1696        ulNameLength: ULONG,
1697        ulFlags: ULONG,
1698    ) -> CONFIGRET;
1699    pub fn CM_Query_And_Remove_SubTree_ExA(
1700        dnAncestor: DEVINST,
1701        pVetoType: PPNP_VETO_TYPE,
1702        pszVetoName: LPSTR,
1703        ulNameLength: ULONG,
1704        ulFlags: ULONG,
1705        hMachine: HMACHINE,
1706    ) -> CONFIGRET;
1707    pub fn CM_Query_And_Remove_SubTreeW(
1708        dnAncestor: DEVINST,
1709        pVetoType: PPNP_VETO_TYPE,
1710        pszVetoName: LPWSTR,
1711        ulNameLength: ULONG,
1712        ulFlags: ULONG,
1713    ) -> CONFIGRET;
1714    pub fn CM_Query_And_Remove_SubTree_ExW(
1715        dnAncestor: DEVINST,
1716        pVetoType: PPNP_VETO_TYPE,
1717        pszVetoName: LPWSTR,
1718        ulNameLength: ULONG,
1719        ulFlags: ULONG,
1720        hMachine: HMACHINE,
1721    ) -> CONFIGRET;
1722    pub fn CM_Request_Device_EjectA(
1723        dnDevInst: DEVINST,
1724        pVetoType: PPNP_VETO_TYPE,
1725        pszVetoName: LPSTR,
1726        ulNameLength: ULONG,
1727        ulFlags: ULONG,
1728    ) -> CONFIGRET;
1729    pub fn CM_Request_Device_Eject_ExA(
1730        dnDevInst: DEVINST,
1731        pVetoType: PPNP_VETO_TYPE,
1732        pszVetoName: LPSTR,
1733        ulNameLength: ULONG,
1734        ulFlags: ULONG,
1735        hMachine: HMACHINE,
1736    ) -> CONFIGRET;
1737    pub fn CM_Request_Device_EjectW(
1738        dnDevInst: DEVINST,
1739        pVetoType: PPNP_VETO_TYPE,
1740        pszVetoName: LPWSTR,
1741        ulNameLength: ULONG,
1742        ulFlags: ULONG,
1743    ) -> CONFIGRET;
1744    pub fn CM_Request_Device_Eject_ExW(
1745        dnDevInst: DEVINST,
1746        pVetoType: PPNP_VETO_TYPE,
1747        pszVetoName: LPWSTR,
1748        ulNameLength: ULONG,
1749        ulFlags: ULONG,
1750        hMachine: HMACHINE,
1751    ) -> CONFIGRET;
1752    pub fn CM_Reenumerate_DevNode(
1753        dnDevInst: DEVINST,
1754        ulFlags: ULONG,
1755    ) -> CONFIGRET;
1756    pub fn CM_Reenumerate_DevNode_Ex(
1757        dnDevInst: DEVINST,
1758        ulFlags: ULONG,
1759        hMachine: HMACHINE,
1760    ) -> CONFIGRET;
1761    pub fn CM_Register_Device_InterfaceA(
1762        dnDevInst: DEVINST,
1763        InterfaceClassGuid: LPGUID,
1764        pszReference: LPCSTR,
1765        pszDeviceInterface: LPSTR,
1766        pulLength: PULONG,
1767        ulFlags: ULONG,
1768    ) -> CONFIGRET;
1769    pub fn CM_Register_Device_InterfaceW(
1770        dnDevInst: DEVINST,
1771        InterfaceClassGuid: LPGUID,
1772        pszReference: LPCWSTR,
1773        pszDeviceInterface: LPWSTR,
1774        pulLength: PULONG,
1775        ulFlags: ULONG,
1776    ) -> CONFIGRET;
1777    pub fn CM_Register_Device_Interface_ExA(
1778        dnDevInst: DEVINST,
1779        InterfaceClassGuid: LPGUID,
1780        pszReference: LPCSTR,
1781        pszDeviceInterface: LPSTR,
1782        pulLength: PULONG,
1783        ulFlags: ULONG,
1784        hMachine: HMACHINE,
1785    ) -> CONFIGRET;
1786    pub fn CM_Register_Device_Interface_ExW(
1787        dnDevInst: DEVINST,
1788        InterfaceClassGuid: LPGUID,
1789        pszReference: LPCWSTR,
1790        pszDeviceInterface: LPWSTR,
1791        pulLength: PULONG,
1792        ulFlags: ULONG,
1793        hMachine: HMACHINE,
1794    ) -> CONFIGRET;
1795    pub fn CM_Set_DevNode_Problem_Ex(
1796        dnDevInst: DEVINST,
1797        ulProblem: ULONG,
1798        ulFlags: ULONG,
1799        hMachine: HMACHINE,
1800    ) -> CONFIGRET;
1801    pub fn CM_Set_DevNode_Problem(
1802        dnDevInst: DEVINST,
1803        ulProblem: ULONG,
1804        ulFlags: ULONG,
1805    ) -> CONFIGRET;
1806    pub fn CM_Unregister_Device_InterfaceA(
1807        pszDeviceInterface: LPCSTR,
1808        ulFlags: ULONG,
1809    ) -> CONFIGRET;
1810    pub fn CM_Unregister_Device_InterfaceW(
1811        pszDeviceInterface: LPCWSTR,
1812        ulFlags: ULONG,
1813    ) -> CONFIGRET;
1814    pub fn CM_Unregister_Device_Interface_ExA(
1815        pszDeviceInterface: LPCSTR,
1816        ulFlags: ULONG,
1817        hMachine: HMACHINE,
1818    ) -> CONFIGRET;
1819    pub fn CM_Unregister_Device_Interface_ExW(
1820        pszDeviceInterface: LPCWSTR,
1821        ulFlags: ULONG,
1822        hMachine: HMACHINE,
1823    ) -> CONFIGRET;
1824    pub fn CM_Register_Device_Driver(
1825        dnDevInst: DEVINST,
1826        ulFlags: ULONG,
1827    ) -> CONFIGRET;
1828    pub fn CM_Register_Device_Driver_Ex(
1829        dnDevInst: DEVINST,
1830        ulFlags: ULONG,
1831        hMachine: HMACHINE,
1832    ) -> CONFIGRET;
1833    pub fn CM_Remove_SubTree(
1834        dnAncestor: DEVINST,
1835        ulFlags: ULONG,
1836    ) -> CONFIGRET;
1837    pub fn CM_Remove_SubTree_Ex(
1838        dnAncestor: DEVINST,
1839        ulFlags: ULONG,
1840        hMachine: HMACHINE,
1841    ) -> CONFIGRET;
1842    pub fn CM_Set_DevNode_Registry_PropertyA(
1843        dnDevInst: DEVINST,
1844        ulProperty: ULONG,
1845        Buffer: PCVOID,
1846        ulLength: ULONG,
1847        ulFlags: ULONG,
1848    ) -> CONFIGRET;
1849    pub fn CM_Set_DevNode_Registry_PropertyW(
1850        dnDevInst: DEVINST,
1851        ulProperty: ULONG,
1852        Buffer: PCVOID,
1853        ulLength: ULONG,
1854        ulFlags: ULONG,
1855    ) -> CONFIGRET;
1856    pub fn CM_Set_DevNode_Registry_Property_ExA(
1857        dnDevInst: DEVINST,
1858        ulProperty: ULONG,
1859        Buffer: PCVOID,
1860        ulLength: ULONG,
1861        ulFlags: ULONG,
1862        hMachine: HMACHINE,
1863    ) -> CONFIGRET;
1864    pub fn CM_Set_DevNode_Registry_Property_ExW(
1865        dnDevInst: DEVINST,
1866        ulProperty: ULONG,
1867        Buffer: PCVOID,
1868        ulLength: ULONG,
1869        ulFlags: ULONG,
1870        hMachine: HMACHINE,
1871    ) -> CONFIGRET;
1872    pub fn CM_Is_Dock_Station_Present(
1873        pbPresent: PBOOL,
1874    ) -> CONFIGRET;
1875    pub fn CM_Is_Dock_Station_Present_Ex(
1876        pbPresent: PBOOL,
1877        hMachine: HMACHINE,
1878    ) -> CONFIGRET;
1879    pub fn CM_Request_Eject_PC() -> CONFIGRET;
1880    pub fn CM_Request_Eject_PC_Ex(
1881        hMachine: HMACHINE,
1882    ) -> CONFIGRET;
1883    pub fn CM_Set_HW_Prof_FlagsA(
1884        pDeviceID: DEVINSTID_A,
1885        ulConfig: ULONG,
1886        ulValue: ULONG,
1887        ulFlags: ULONG,
1888    ) -> CONFIGRET;
1889    pub fn CM_Set_HW_Prof_FlagsW(
1890        pDeviceID: DEVINSTID_W,
1891        ulConfig: ULONG,
1892        ulValue: ULONG,
1893        ulFlags: ULONG,
1894    ) -> CONFIGRET;
1895    pub fn CM_Set_HW_Prof_Flags_ExA(
1896        pDeviceID: DEVINSTID_A,
1897        ulConfig: ULONG,
1898        ulValue: ULONG,
1899        ulFlags: ULONG,
1900        hMachine: HMACHINE,
1901    ) -> CONFIGRET;
1902    pub fn CM_Set_HW_Prof_Flags_ExW(
1903        pDeviceID: DEVINSTID_A,
1904        ulConfig: ULONG,
1905        ulValue: ULONG,
1906        ulFlags: ULONG,
1907        hMachine: HMACHINE,
1908    ) -> CONFIGRET;
1909    pub fn CM_Setup_DevNode(
1910        dnDevInst: DEVINST,
1911        ulFlags: ULONG,
1912    ) -> CONFIGRET;
1913    pub fn CM_Setup_DevNode_Ex(
1914        dnDevInst: DEVINST,
1915        ulFlags: ULONG,
1916        hMachine: HMACHINE,
1917    ) -> CONFIGRET;
1918    pub fn CM_Test_Range_Available(
1919        ullStartValue: DWORDLONG,
1920        ullEndValue: DWORDLONG,
1921        rlh: RANGE_LIST,
1922        ulFlags: ULONG,
1923    ) -> CONFIGRET;
1924    pub fn CM_Uninstall_DevNode(
1925        dnDevInst: DEVNODE,
1926        ulFlags: ULONG,
1927    ) -> CONFIGRET;
1928    pub fn CM_Uninstall_DevNode_Ex(
1929        dnDevInst: DEVNODE,
1930        ulFlags: ULONG,
1931        hMachine: HMACHINE,
1932    ) -> CONFIGRET;
1933    pub fn CM_Run_Detection(
1934        ulFlags: ULONG,
1935    ) -> CONFIGRET;
1936    pub fn CM_Run_Detection_Ex(
1937        ulFlags: ULONG,
1938        hMachine: HMACHINE,
1939    ) -> CONFIGRET;
1940    pub fn CM_Set_HW_Prof(
1941        ulHardwareProfile: ULONG,
1942        ulFlags: ULONG,
1943    ) -> CONFIGRET;
1944    pub fn CM_Set_HW_Prof_Ex(
1945        ulHardwareProfile: ULONG,
1946        ulFlags: ULONG,
1947        hMachine: HMACHINE,
1948    ) -> CONFIGRET;
1949    pub fn CM_Query_Resource_Conflict_List(
1950        pclConflictList: PCONFLICT_LIST,
1951        dnDevInst: DEVINST,
1952        ResourceID: RESOURCEID,
1953        ResourceData: PCVOID,
1954        ResourceLen: ULONG,
1955        ulFlags: ULONG,
1956        hMachine: HMACHINE,
1957    ) -> CONFIGRET;
1958    pub fn CM_Free_Resource_Conflict_Handle(
1959        clConflictList: CONFLICT_LIST,
1960    ) -> CONFIGRET;
1961    pub fn CM_Get_Resource_Conflict_Count(
1962        clConflictList: CONFLICT_LIST,
1963        pulCount: PULONG,
1964    ) -> CONFIGRET;
1965    pub fn CM_Get_Resource_Conflict_DetailsA(
1966        clConflictList: CONFLICT_LIST,
1967        ulIndex: ULONG,
1968        pConflictDetails: PCONFLICT_DETAILS_A,
1969    ) -> CONFIGRET;
1970    pub fn CM_Get_Resource_Conflict_DetailsW(
1971        clConflictList: CONFLICT_LIST,
1972        ulIndex: ULONG,
1973        pConflictDetails: PCONFLICT_DETAILS_W,
1974    ) -> CONFIGRET;
1975    pub fn CM_Get_Class_Registry_PropertyW(
1976        ClassGuid: LPGUID,
1977        ulProperty: ULONG,
1978        pulRegDataType: PULONG,
1979        Buffer: PVOID,
1980        pulLength: PULONG,
1981        ulFlags: ULONG,
1982        hMachine: HMACHINE,
1983    ) -> CONFIGRET;
1984    pub fn CM_Set_Class_Registry_PropertyW(
1985        ClassGuid: LPGUID,
1986        ulProperty: ULONG,
1987        Buffer: PCVOID,
1988        ulLength: ULONG,
1989        ulFlags: ULONG,
1990        hMachine: HMACHINE,
1991    ) -> CONFIGRET;
1992    pub fn CM_Get_Class_Registry_PropertyA(
1993        ClassGuid: LPGUID,
1994        ulProperty: ULONG,
1995        pulRegDataType: PULONG,
1996        Buffer: PVOID,
1997        pulLength: PULONG,
1998        ulFlags: ULONG,
1999        hMachine: HMACHINE,
2000    ) -> CONFIGRET;
2001    pub fn CM_Set_Class_Registry_PropertyA(
2002        ClassGuid: LPGUID,
2003        ulProperty: ULONG,
2004        Buffer: PCVOID,
2005        ulLength: ULONG,
2006        ulFlags: ULONG,
2007        hMachine: HMACHINE,
2008    ) -> CONFIGRET;
2009    pub fn CMP_WaitNoPendingInstallEvents(
2010        dwTimeout: DWORD,
2011    ) -> DWORD;
2012}
2013pub const CR_SUCCESS: CONFIGRET = 0x00000000;
2014pub const CR_DEFAULT: CONFIGRET = 0x00000001;
2015pub const CR_OUT_OF_MEMORY: CONFIGRET = 0x00000002;
2016pub const CR_INVALID_POINTER: CONFIGRET = 0x00000003;
2017pub const CR_INVALID_FLAG: CONFIGRET = 0x00000004;
2018pub const CR_INVALID_DEVNODE: CONFIGRET = 0x00000005;
2019pub const CR_INVALID_DEVINST: CONFIGRET = CR_INVALID_DEVNODE;
2020pub const CR_INVALID_RES_DES: CONFIGRET = 0x00000006;
2021pub const CR_INVALID_LOG_CONF: CONFIGRET = 0x00000007;
2022pub const CR_INVALID_ARBITRATOR: CONFIGRET = 0x00000008;
2023pub const CR_INVALID_NODELIST: CONFIGRET = 0x00000009;
2024pub const CR_DEVNODE_HAS_REQS: CONFIGRET = 0x0000000A;
2025pub const CR_DEVINST_HAS_REQS: CONFIGRET = CR_DEVNODE_HAS_REQS;
2026pub const CR_INVALID_RESOURCEID: CONFIGRET = 0x0000000B;
2027pub const CR_DLVXD_NOT_FOUND: CONFIGRET = 0x0000000C;
2028pub const CR_NO_SUCH_DEVNODE: CONFIGRET = 0x0000000D;
2029pub const CR_NO_SUCH_DEVINST: CONFIGRET = CR_NO_SUCH_DEVNODE;
2030pub const CR_NO_MORE_LOG_CONF: CONFIGRET = 0x0000000E;
2031pub const CR_NO_MORE_RES_DES: CONFIGRET = 0x0000000F;
2032pub const CR_ALREADY_SUCH_DEVNODE: CONFIGRET = 0x00000010;
2033pub const CR_ALREADY_SUCH_DEVINST: CONFIGRET = CR_ALREADY_SUCH_DEVNODE;
2034pub const CR_INVALID_RANGE_LIST: CONFIGRET = 0x00000011;
2035pub const CR_INVALID_RANGE: CONFIGRET = 0x00000012;
2036pub const CR_FAILURE: CONFIGRET = 0x00000013;
2037pub const CR_NO_SUCH_LOGICAL_DEV: CONFIGRET = 0x00000014;
2038pub const CR_CREATE_BLOCKED: CONFIGRET = 0x00000015;
2039pub const CR_NOT_SYSTEM_VM: CONFIGRET = 0x00000016;
2040pub const CR_REMOVE_VETOED: CONFIGRET = 0x00000017;
2041pub const CR_APM_VETOED: CONFIGRET = 0x00000018;
2042pub const CR_INVALID_LOAD_TYPE: CONFIGRET = 0x00000019;
2043pub const CR_BUFFER_SMALL: CONFIGRET = 0x0000001A;
2044pub const CR_NO_ARBITRATOR: CONFIGRET = 0x0000001B;
2045pub const CR_NO_REGISTRY_HANDLE: CONFIGRET = 0x0000001C;
2046pub const CR_REGISTRY_ERROR: CONFIGRET = 0x0000001D;
2047pub const CR_INVALID_DEVICE_ID: CONFIGRET = 0x0000001E;
2048pub const CR_INVALID_DATA: CONFIGRET = 0x0000001F;
2049pub const CR_INVALID_API: CONFIGRET = 0x00000020;
2050pub const CR_DEVLOADER_NOT_READY: CONFIGRET = 0x00000021;
2051pub const CR_NEED_RESTART: CONFIGRET = 0x00000022;
2052pub const CR_NO_MORE_HW_PROFILES: CONFIGRET = 0x00000023;
2053pub const CR_DEVICE_NOT_THERE: CONFIGRET = 0x00000024;
2054pub const CR_NO_SUCH_VALUE: CONFIGRET = 0x00000025;
2055pub const CR_WRONG_TYPE: CONFIGRET = 0x00000026;
2056pub const CR_INVALID_PRIORITY: CONFIGRET = 0x00000027;
2057pub const CR_NOT_DISABLEABLE: CONFIGRET = 0x00000028;
2058pub const CR_FREE_RESOURCES: CONFIGRET = 0x00000029;
2059pub const CR_QUERY_VETOED: CONFIGRET = 0x0000002A;
2060pub const CR_CANT_SHARE_IRQ: CONFIGRET = 0x0000002B;
2061pub const CR_NO_DEPENDENT: CONFIGRET = 0x0000002C;
2062pub const CR_SAME_RESOURCES: CONFIGRET = 0x0000002D;
2063pub const CR_NO_SUCH_REGISTRY_KEY: CONFIGRET = 0x0000002E;
2064pub const CR_INVALID_MACHINENAME: CONFIGRET = 0x0000002F;
2065pub const CR_REMOTE_COMM_FAILURE: CONFIGRET = 0x00000030;
2066pub const CR_MACHINE_UNAVAILABLE: CONFIGRET = 0x00000031;
2067pub const CR_NO_CM_SERVICES: CONFIGRET = 0x00000032;
2068pub const CR_ACCESS_DENIED: CONFIGRET = 0x00000033;
2069pub const CR_CALL_NOT_IMPLEMENTED: CONFIGRET = 0x00000034;
2070pub const CR_INVALID_PROPERTY: CONFIGRET = 0x00000035;
2071pub const CR_DEVICE_INTERFACE_ACTIVE: CONFIGRET = 0x00000036;
2072pub const CR_NO_SUCH_DEVICE_INTERFACE: CONFIGRET = 0x00000037;
2073pub const CR_INVALID_REFERENCE_STRING: CONFIGRET = 0x00000038;
2074pub const CR_INVALID_CONFLICT_LIST: CONFIGRET = 0x00000039;
2075pub const CR_INVALID_INDEX: CONFIGRET = 0x0000003A;
2076pub const CR_INVALID_STRUCTURE_SIZE: CONFIGRET = 0x0000003B;
2077pub const NUM_CR_RESULTS: CONFIGRET = 0x0000003C;