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
7 use shared::basetsd::{DWORD_PTR, ULONG32, ULONG64, ULONG_PTR};
8 use shared::cfg::PPNP_VETO_TYPE;
9 use shared::devpropdef::{DEVPROPKEY, DEVPROPTYPE};
10 use shared::guiddef::{GUID, LPGUID};
11 use shared::minwindef::{BOOL, BYTE, DWORD, MAX_PATH, PBOOL, PBYTE, PHKEY, PULONG, ULONG, WORD};
12 use 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 };
16 use um::winreg::REGSAM;
17 pub type PCVOID = *const VOID;
18 pub const MAX_DEVICE_ID_LEN: usize = 200;
19 pub const MAX_DEVNODE_ID_LEN: usize = MAX_DEVICE_ID_LEN;
20 pub const MAX_GUID_STRING_LEN: usize = 39;
21 pub const MAX_CLASS_NAME_LEN: usize = 32;
22 pub const MAX_PROFILE_LEN: usize = 80;
23 pub const MAX_CONFIG_VALUE: DWORD = 9999;
24 pub const MAX_INSTANCE_VALUE: DWORD = 9999;
25 pub const MAX_MEM_REGISTERS: DWORD = 9;
26 pub const MAX_IO_PORTS: DWORD = 20;
27 pub const MAX_IRQS: DWORD = 7;
28 pub const MAX_DMA_CHANNELS: DWORD = 7;
29 pub const DWORD_MAX: DWORD = 0xffffffff;
30 pub const DWORDLONG_MAX: DWORDLONG = 0xffffffffffffffff;
31 pub const CONFIGMG_VERSION: DWORD = 0x0400;
32 pub type RETURN_TYPE = DWORD;
33 pub type CONFIGRET = RETURN_TYPE;
34 pub type DEVNODE = DWORD;
35 pub type DEVINST = DWORD;
36 pub type PDEVNODE = *mut DEVNODE;
37 pub type PDEVINST = *mut DEVNODE;
38 pub type DEVNODEID_A = *mut CHAR;
39 pub type DEVINSTID_A = *mut CHAR;
40 pub type DEVNODEID_W = *mut WCHAR;
41 pub type DEVINSTID_W = *mut WCHAR;
42 pub type LOG_CONF = DWORD_PTR;
43 pub type PLOG_CONF = *mut LOG_CONF;
remove_trailing_zeroes<T: From<u8> + PartialEq>(input: &[T], min_length: usize) -> &[T]44 pub type RES_DES = DWORD_PTR;
45 pub type PRES_DES = *mut RES_DES;
46 pub type RESOURCEID = ULONG;
47 pub type PRESOURCEID = *mut RESOURCEID;
48 pub type PRIORITY = ULONG;
49 pub type PPRIORITY = *mut PRIORITY;
extra_bits_for_huffman_length_code(code: u8) -> u850 pub type RANGE_LIST = DWORD_PTR;
51 pub type PRANGE_LIST = *mut RANGE_LIST;
52 pub type RANGE_ELEMENT = DWORD_PTR;
53 pub type PRANGE_ELEMENT = *mut RANGE_ELEMENT;
54 pub type HMACHINE = HANDLE;
55 pub type PHMACHINE = *mut HMACHINE;
56 pub type CONFLICT_LIST = ULONG_PTR;
57 pub type PCONFLICT_LIST = *mut CONFLICT_LIST;
58 STRUCT!{struct CONFLICT_DETAILS_A {
calculate_huffman_length(frequencies: &[FrequencyType], code_lengths: &[u8]) -> u6459 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 }}
66 pub type PCONFLICT_DETAILS_A = *mut CONFLICT_DETAILS_A;
67 STRUCT!{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 }}
75 pub type PCONFLICT_DETAILS_W = *mut CONFLICT_DETAILS_W;
calculate_block_length<F>( frequencies: &[FrequencyType], dyn_code_lengths: &[u8], get_num_extra_bits: &F, ) -> (u64, u64) where F: Fn(usize) -> u64,76 pub const CM_CDMASK_DEVINST: ULONG = 0x00000001;
77 pub const CM_CDMASK_RESDES: ULONG = 0x00000002;
78 pub const CM_CDMASK_FLAGS: ULONG = 0x00000004;
79 pub const CM_CDMASK_DESCRIPTION: ULONG = 0x00000008;
80 pub const CM_CDMASK_VALID: ULONG = 0x0000000F;
81 pub const CM_CDFLAGS_DRIVER: ULONG = 0x00000001;
82 pub const CM_CDFLAGS_ROOT_OWNED: ULONG = 0x00000002;
83 pub const CM_CDFLAGS_RESERVED: ULONG = 0x00000004;
84 pub type REGDISPOSITION = ULONG;
85 pub const mMD_MemoryType: DWORD = 0x1;
86 pub const fMD_MemoryType: DWORD = mMD_MemoryType;
87 pub const fMD_ROM: DWORD = 0x0;
88 pub const fMD_RAM: DWORD = 0x1;
89 pub const mMD_32_24: DWORD = 0x2;
90 pub const fMD_32_24: DWORD = mMD_32_24;
91 pub const fMD_24: DWORD = 0x0;
92 pub const fMD_32: DWORD = 0x2;
93 pub const mMD_Prefetchable: DWORD = 0x4;
94 pub const fMD_Prefetchable: DWORD = mMD_Prefetchable;
95 pub const fMD_Pref: DWORD = mMD_Prefetchable;
96 pub const fMD_PrefetchDisallowed: DWORD = 0x0;
97 pub const fMD_PrefetchAllowed: DWORD = 0x4;
98 pub const mMD_Readable: DWORD = 0x8;
99 pub const fMD_Readable: DWORD = mMD_Readable;
100 pub const fMD_ReadAllowed: DWORD = 0x0;
101 pub const fMD_ReadDisallowed: DWORD = 0x8;
102 pub const mMD_CombinedWrite: DWORD = 0x10;
103 pub const fMD_CombinedWrite: DWORD = mMD_CombinedWrite;
104 pub const fMD_CombinedWriteDisallowed: DWORD = 0x0;
105 pub const fMD_CombinedWriteAllowed: DWORD = 0x10;
106 pub const mMD_Cacheable: DWORD = 0x20;
107 pub const fMD_NonCacheable: DWORD = 0x0;
108 pub const fMD_Cacheable: DWORD = 0x20;
109 pub const fMD_WINDOW_DECODE: DWORD = 0x40;
110 pub const fMD_MEMORY_BAR: DWORD = 0x80;
111 STRUCT!{#[repr(packed)] struct MEM_RANGE {
112 MR_Align: DWORDLONG,
stored_padding(pending_bits: u8) -> u64113 MR_nBytes: ULONG,
114 MR_Min: DWORDLONG,
115 MR_Max: DWORDLONG,
116 MR_Flags: DWORD,
117 MR_Reserved: DWORD,
118 }}
119 pub type PMEM_RANGE = *mut MEM_RANGE;
120 STRUCT!{#[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 }}
128 pub type PMEM_DES = *mut MEM_DES;
129 STRUCT!{#[repr(packed)] struct MEM_RESOURCE {
130 MEM_Header: MEM_DES,
131 MEM_Data: [MEM_RANGE; ANYSIZE_ARRAY],
stored_length(input_bytes: u64) -> u64132 }}
133 pub type PMEM_RESOURCE = *mut MEM_RESOURCE;
134 STRUCT!{#[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 }}
142 pub type PMEM_LARGE_RANGE = *mut MEM_LARGE_RANGE;
143 STRUCT!{#[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 }}
151 pub type PMEM_LARGE_DES = *mut MEM_LARGE_DES;
152 STRUCT!{#[repr(packed)] struct MEM_LARGE_RESOURCE {
153 MEM_LARGE_Header: MEM_LARGE_DES,
154 MEM_LARGE_Data: [MEM_LARGE_RANGE; ANYSIZE_ARRAY],
155 }}
156 pub type PMEM_LARGE_RESOURCE = *mut MEM_LARGE_RESOURCE;
157 pub const fIOD_PortType: DWORD = 0x1;
158 pub const fIOD_Memory: DWORD = 0x0;
159 pub const fIOD_IO: DWORD = 0x1;
160 pub const fIOD_DECODE: DWORD = 0x00fc;
161 pub const fIOD_10_BIT_DECODE: DWORD = 0x0004;
162 pub const fIOD_12_BIT_DECODE: DWORD = 0x0008;
163 pub const fIOD_16_BIT_DECODE: DWORD = 0x0010;
164 pub const fIOD_POSITIVE_DECODE: DWORD = 0x0020;
165 pub const fIOD_PASSIVE_DECODE: DWORD = 0x0040;
166 pub const fIOD_WINDOW_DECODE: DWORD = 0x0080;
gen_huffman_lengths( l_freqs: &[FrequencyType], d_freqs: &[FrequencyType], num_input_bytes: u64, pending_bits: u8, l_lengths: &mut [u8; 288], d_lengths: &mut [u8; 32], length_buffers: &mut LengthBuffers, ) -> BlockType167 pub const fIOD_PORT_BAR: DWORD = 0x0100;
168 pub const IO_ALIAS_10_BIT_DECODE: DWORDLONG = 0x00000004;
169 pub const IO_ALIAS_12_BIT_DECODE: DWORDLONG = 0x00000010;
170 pub const IO_ALIAS_16_BIT_DECODE: DWORDLONG = 0x00000000;
171 pub const IO_ALIAS_POSITIVE_DECODE: DWORDLONG = 0x000000FF;
172 STRUCT!{#[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 }}
180 pub type PIO_RANGE = *mut IO_RANGE;
181 STRUCT!{#[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 }}
188 pub type PIO_DES = *mut IO_DES;
189 STRUCT!{#[repr(packed)] struct IO_RESOURCE {
190 IO_Header: IO_DES,
191 IO_Data: [IO_RANGE; ANYSIZE_ARRAY],
192 }}
193 pub type PIO_RESOURCE = *mut IO_RESOURCE;
194 pub const mDD_Width: ULONG = 0x3;
195 pub const fDD_BYTE: ULONG = 0x0;
196 pub const fDD_WORD: ULONG = 0x1;
197 pub const fDD_DWORD: ULONG = 0x2;
198 pub const fDD_BYTE_AND_WORD: ULONG = 0x3;
199 pub const mDD_BusMaster: ULONG = 0x4;
200 pub const fDD_NoBusMaster: ULONG = 0x0;
201 pub const fDD_BusMaster: ULONG = 0x4;
202 pub const mDD_Type: ULONG = 0x18;
203 pub const fDD_TypeStandard: ULONG = 0x00;
204 pub const fDD_TypeA: ULONG = 0x08;
205 pub const fDD_TypeB: ULONG = 0x10;
206 pub const fDD_TypeF: ULONG = 0x18;
207 STRUCT!{#[repr(packed)] struct DMA_RANGE {
208 DR_Min: ULONG,
209 DR_Max: ULONG,
210 DR_Flags: ULONG,
211 }}
212 pub type PDMA_RANGE = *mut DMA_RANGE;
213 STRUCT!{#[repr(packed)] struct DMA_DES {
214 DD_Count: DWORD,
215 DD_Type: DWORD,
216 DD_Flags: DWORD,
217 DD_Alloc_Chan: ULONG,
218 }}
219 pub type PDMA_DES = *mut DMA_DES;
220 STRUCT!{#[repr(packed)] struct DMA_RESOURCE {
221 DMA_Header: DMA_DES,
222 DMA_Data: [DMA_RANGE; ANYSIZE_ARRAY],
223 }}
224 pub type PDMA_RESOURCE = *mut DMA_RESOURCE;
225 pub const mIRQD_Share: ULONG = 0x1;
226 pub const fIRQD_Exclusive: ULONG = 0x0;
227 pub const fIRQD_Share: ULONG = 0x1;
228 pub const fIRQD_Share_Bit: ULONG = 0;
229 pub const fIRQD_Level_Bit: ULONG = 1;
230 pub const mIRQD_Edge_Level: ULONG = 0x2;
231 pub const fIRQD_Level: ULONG = 0x0;
232 pub const fIRQD_Edge: ULONG = 0x2;
233 STRUCT!{#[repr(packed)] struct IRQ_RANGE {
234 IRQR_Min: ULONG,
235 IRQR_Max: ULONG,
236 IRQR_Flags: ULONG,
237 }}
238 pub type PIRQ_RANGE = *mut IRQ_RANGE;
239 STRUCT!{#[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 }}
246 pub type PIRQ_DES_32 = *mut IRQ_DES_32;
247 STRUCT!{#[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 }}
254 pub type PIRQ_DES_64 = *mut IRQ_DES_64;
255 STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_32 {
256 IRQ_Header: IRQ_DES_32,
257 IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
258 }}
259 pub type PIRQ_RESOURCE_32 = *mut IRQ_RESOURCE_32;
260 STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_64 {
261 IRQ_Header: IRQ_DES_64,
262 IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
263 }}
264 pub type PIRQ_RESOURCE_64 = *mut IRQ_RESOURCE_64;
265 STRUCT!{#[repr(packed)] struct DEVPRIVATE_RANGE {
266 PR_Data1: DWORD,
267 PR_Data2: DWORD,
268 PR_Data3: DWORD,
269 }}
270 pub type PDEVPRIVATE_RANGE = *mut DEVPRIVATE_RANGE;
271 STRUCT!{#[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 }}
279 pub type PDEVPRIVATE_DES = *mut DEVPRIVATE_DES;
280 STRUCT!{#[repr(packed)] struct DEVPRIVATE_RESOURCE {
281 PRV_Header: DEVPRIVATE_DES,
282 PRV_Data: [DEVPRIVATE_RANGE; ANYSIZE_ARRAY],
283 }}
284 pub type PDEVPRIVATE_RESOURCE = *mut DEVPRIVATE_RESOURCE;
285 STRUCT!{#[repr(packed)] struct CS_DES {
286 CSD_SignatureLength: DWORD,
287 CSD_LegacyDataOffset: DWORD,
288 CSD_LegacyDataSize: DWORD,
289 CSD_Flags: DWORD,
write_huffman_lengths( header: &DynamicBlockHeader, huffman_table: &HuffmanTable, encoded_lengths: &[EncodedLength], writer: &mut LsbWriter, )290 CSD_ClassGuid: GUID,
291 CSD_Signature: [BYTE; ANYSIZE_ARRAY],
292 }}
293 pub type PCS_DES = *mut CS_DES;
294 STRUCT!{#[repr(packed)] struct CS_RESOURCE {
295 CS_Header: CS_DES,
296 }}
297 pub type PCS_RESOURCE = *mut CS_RESOURCE;
298 pub const mPCD_IO_8_16: DWORD = 0x1;
299 pub const fPCD_IO_8: DWORD = 0x0;
300 pub const fPCD_IO_16: DWORD = 0x1;
301 pub const mPCD_MEM_8_16: DWORD = 0x2;
302 pub const fPCD_MEM_8: DWORD = 0x0;
303 pub const fPCD_MEM_16: DWORD = 0x2;
304 pub const mPCD_MEM_A_C: DWORD = 0xC;
305 pub const fPCD_MEM1_A: DWORD = 0x4;
306 pub const fPCD_MEM2_A: DWORD = 0x8;
307 pub const fPCD_IO_ZW_8: DWORD = 0x10;
308 pub const fPCD_IO_SRC_16: DWORD = 0x20;
309 pub const fPCD_IO_WS_16: DWORD = 0x40;
310 pub const mPCD_MEM_WS: DWORD = 0x300;
311 pub const fPCD_MEM_WS_ONE: DWORD = 0x100;
312 pub const fPCD_MEM_WS_TWO: DWORD = 0x200;
313 pub const fPCD_MEM_WS_THREE: DWORD = 0x300;
314 pub const fPCD_MEM_A: DWORD = 0x4;
315 pub const fPCD_ATTRIBUTES_PER_WINDOW: DWORD = 0x8000;
316 pub const fPCD_IO1_16: DWORD = 0x00010000;
317 pub const fPCD_IO1_ZW_8: DWORD = 0x00020000;
318 pub const fPCD_IO1_SRC_16: DWORD = 0x00040000;
319 pub const fPCD_IO1_WS_16: DWORD = 0x00080000;
320 pub const fPCD_IO2_16: DWORD = 0x00100000;
321 pub const fPCD_IO2_ZW_8: DWORD = 0x00200000;
322 pub const fPCD_IO2_SRC_16: DWORD = 0x00400000;
323 pub const fPCD_IO2_WS_16: DWORD = 0x00800000;
324 pub const mPCD_MEM1_WS: DWORD = 0x03000000;
325 pub const fPCD_MEM1_WS_TWO: DWORD = 0x02000000;
326 pub const fPCD_MEM1_WS_THREE: DWORD = 0x03000000;
327 pub const fPCD_MEM1_16: DWORD = 0x04000000;
328 pub const mPCD_MEM2_WS: DWORD = 0x30000000;
329 pub const fPCD_MEM2_WS_ONE: DWORD = 0x10000000;
330 pub const fPCD_MEM2_WS_TWO: DWORD = 0x20000000;
331 pub const fPCD_MEM2_WS_THREE: DWORD = 0x30000000;
332 pub const fPCD_MEM2_16: DWORD = 0x40000000;
333 pub const PCD_MAX_MEMORY: usize = 2;
334 pub const PCD_MAX_IO: usize = 2;
335 STRUCT!{#[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 }}
347 pub type PPCCARD_DES = *mut PCCARD_DES;
348 STRUCT!{#[repr(packed)] struct PCCARD_RESOURCE {
349 PcCard_Header: PCCARD_DES,
350 }}
351 pub type PPCCARD_RESOURCE = *mut PCCARD_RESOURCE;
352 pub const mPMF_AUDIO_ENABLE: DWORD = 0x8;
353 pub const fPMF_AUDIO_ENABLE: DWORD = 0x8;
354 STRUCT!{#[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 }}
363 pub type PMFCARD_DES = *mut MFCARD_DES;
364 STRUCT!{#[repr(packed)] struct MFCARD_RESOURCE {
365 MfCard_Header: MFCARD_DES,
366 }}
367 pub type PMFCARD_RESOURCE = *mut MFCARD_RESOURCE;
368 STRUCT!{#[repr(packed)] struct BUSNUMBER_RANGE {
369 BUSR_Min: ULONG,
370 BUSR_Max: ULONG,
371 BUSR_nBusNumbers: ULONG,
372 BUSR_Flags: ULONG,
373 }}
374 pub type PBUSNUMBER_RANGE = *mut BUSNUMBER_RANGE;
padding()375 STRUCT!{#[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 }}
382 pub type PBUSNUMBER_DES = *mut BUSNUMBER_DES;
383 STRUCT!{#[repr(packed)] struct BUSNUMBER_RESOURCE {
384 BusNumber_Header: BUSNUMBER_DES,
385 BusNumber_Data: [BUSNUMBER_RANGE; ANYSIZE_ARRAY],
386 }}
387 pub type PBUSNUMBER_RESOURCE = *mut BUSNUMBER_RESOURCE;
388 STRUCT!{#[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 }}
397 pub type PCONNECTION_DES = *mut CONNECTION_DES;
398 STRUCT!{#[repr(packed)] struct CONNECTION_RESOURCE {
399 Connection_Header: CONNECTION_DES,
400 }}
401 pub type PCONNECTION_RESOURCE = *mut CONNECTION_RESOURCE;
402 pub const CM_HWPI_NOT_DOCKABLE: DWORD = 0x00000000;
403 pub const CM_HWPI_UNDOCKED: DWORD = 0x00000001;
404 pub const CM_HWPI_DOCKED: DWORD = 0x00000002;
405 STRUCT!{#[repr(packed)] struct HWPROFILEINFO_A {
406 HWPI_ulHWProfile: ULONG,
407 HWPI_szFriendlyName: [CHAR; MAX_PROFILE_LEN],
408 HWPI_dwFlags: DWORD,
409 }}
410 pub type PHWPROFILEINFO_A = *mut HWPROFILEINFO_A;
411 STRUCT!{#[repr(packed)] struct HWPROFILEINFO_W {
412 HWPI_ulHWProfile: ULONG,
413 HWPI_szFriendlyName: [WCHAR; MAX_PROFILE_LEN],
414 HWPI_dwFlags: DWORD,
415 }}
416 pub type PHWPROFILEINFO_W = *mut HWPROFILEINFO_W;
417 pub const ResType_All: RESOURCEID = 0x00000000;
418 pub const ResType_None: RESOURCEID = 0x00000000;
419 pub const ResType_Mem: RESOURCEID = 0x00000001;
420 pub const ResType_IO: RESOURCEID = 0x00000002;
421 pub const ResType_DMA: RESOURCEID = 0x00000003;
422 pub const ResType_IRQ: RESOURCEID = 0x00000004;
423 pub const ResType_DoNotUse: RESOURCEID = 0x00000005;
424 pub const ResType_BusNumber: RESOURCEID = 0x00000006;
425 pub const ResType_MemLarge: RESOURCEID = 0x00000007;
426 pub const ResType_MAX: RESOURCEID = 0x00000007;
427 pub const ResType_Ignored_Bit: RESOURCEID = 0x00008000;
428 pub const ResType_ClassSpecific: RESOURCEID = 0x0000FFFF;
429 pub const ResType_Reserved: RESOURCEID = 0x00008000;
430 pub const ResType_DevicePrivate: RESOURCEID = 0x00008001;
431 pub const ResType_PcCardConfig: RESOURCEID = 0x00008002;
432 pub const ResType_MfCardConfig: RESOURCEID = 0x00008003;
433 pub const ResType_Connection: RESOURCEID = 0x00008004;
434 pub const CM_ADD_RANGE_ADDIFCONFLICT: ULONG = 0x00000000;
435 pub const CM_ADD_RANGE_DONOTADDIFCONFLICT: ULONG = 0x00000001;
436 pub const CM_ADD_RANGE_BITS: ULONG = 0x00000001;
437 pub const BASIC_LOG_CONF: ULONG = 0x00000000;
438 pub const FILTERED_LOG_CONF: ULONG = 0x00000001;
439 pub const ALLOC_LOG_CONF: ULONG = 0x00000002;
440 pub const BOOT_LOG_CONF: ULONG = 0x00000003;
441 pub const FORCED_LOG_CONF: ULONG = 0x00000004;
442 pub const OVERRIDE_LOG_CONF: ULONG = 0x00000005;
443 pub const NUM_LOG_CONF: ULONG = 0x00000006;
444 pub const LOG_CONF_BITS: ULONG = 0x00000007;
445 pub const PRIORITY_EQUAL_FIRST: ULONG = 0x00000008;
446 pub const PRIORITY_EQUAL_LAST: ULONG = 0x00000000;
447 pub const PRIORITY_BIT: ULONG = 0x00000008;
448 pub const RegDisposition_OpenAlways: REGDISPOSITION = 0x00000000;
449 pub const RegDisposition_OpenExisting: REGDISPOSITION = 0x00000001;
450 pub const RegDisposition_Bits: REGDISPOSITION = 0x00000001;
451 pub const CM_ADD_ID_HARDWARE: ULONG = 0x00000000;
452 pub const CM_ADD_ID_COMPATIBLE: ULONG = 0x00000001;
453 pub const CM_ADD_ID_BITS: ULONG = 0x00000001;
454 pub const CM_CREATE_DEVNODE_NORMAL: ULONG = 0x00000000;
455 pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL: ULONG = 0x00000001;
456 pub const CM_CREATE_DEVNODE_PHANTOM: ULONG = 0x00000002;
457 pub const CM_CREATE_DEVNODE_GENERATE_ID: ULONG = 0x00000004;
458 pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL: ULONG = 0x00000008;
459 pub const CM_CREATE_DEVNODE_BITS: ULONG = 0x0000000F;
460 pub const CM_CREATE_DEVINST_NORMAL: ULONG = CM_CREATE_DEVNODE_NORMAL;
461 pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL: ULONG = CM_CREATE_DEVNODE_NO_WAIT_INSTALL;
462 pub const CM_CREATE_DEVINST_PHANTOM: ULONG = CM_CREATE_DEVNODE_PHANTOM;
463 pub const CM_CREATE_DEVINST_GENERATE_ID: ULONG = CM_CREATE_DEVNODE_GENERATE_ID;
464 pub const CM_CREATE_DEVINST_DO_NOT_INSTALL: ULONG = CM_CREATE_DEVNODE_DO_NOT_INSTALL;
465 pub const CM_CREATE_DEVINST_BITS: ULONG = CM_CREATE_DEVNODE_BITS;
466 pub const CM_DELETE_CLASS_ONLY: ULONG = 0x00000000;
467 pub const CM_DELETE_CLASS_SUBKEYS: ULONG = 0x00000001;
468 pub const CM_DELETE_CLASS_INTERFACE: ULONG = 0x00000002;
469 pub const CM_DELETE_CLASS_BITS: ULONG = 0x00000003;
470 pub const CM_ENUMERATE_CLASSES_INSTALLER: ULONG = 0x00000000;
471 pub const CM_ENUMERATE_CLASSES_INTERFACE: ULONG = 0x00000001;
472 pub const CM_ENUMERATE_CLASSES_BITS: ULONG = 0x00000001;
473 pub const CM_DETECT_NEW_PROFILE: ULONG = 0x00000001;
474 pub const CM_DETECT_CRASHED: ULONG = 0x00000002;
475 pub const CM_DETECT_HWPROF_FIRST_BOOT: ULONG = 0x00000004;
476 pub const CM_DETECT_RUN: ULONG = 0x80000000;
477 pub const CM_DETECT_BITS: ULONG = 0x80000007;
478 pub const CM_DISABLE_POLITE: ULONG = 0x00000000;
479 pub const CM_DISABLE_ABSOLUTE: ULONG = 0x00000001;
480 pub const CM_DISABLE_HARDWARE: ULONG = 0x00000002;
481 pub const CM_DISABLE_UI_NOT_OK: ULONG = 0x00000004;
482 pub const CM_DISABLE_BITS: ULONG = 0x00000007;
483 pub const CM_GETIDLIST_FILTER_NONE: ULONG = 0x00000000;
484 pub const CM_GETIDLIST_FILTER_ENUMERATOR: ULONG = 0x00000001;
485 pub const CM_GETIDLIST_FILTER_SERVICE: ULONG = 0x00000002;
486 pub const CM_GETIDLIST_FILTER_EJECTRELATIONS: ULONG = 0x00000004;
487 pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS: ULONG = 0x00000008;
488 pub const CM_GETIDLIST_FILTER_POWERRELATIONS: ULONG = 0x00000010;
489 pub const CM_GETIDLIST_FILTER_BUSRELATIONS: ULONG = 0x00000020;
490 pub const CM_GETIDLIST_DONOTGENERATE: ULONG = 0x10000040;
491 pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: ULONG = 0x00000080;
492 pub const CM_GETIDLIST_FILTER_PRESENT: ULONG = 0x00000100;
493 pub const CM_GETIDLIST_FILTER_CLASS: ULONG = 0x00000200;
494 pub const CM_GETIDLIST_FILTER_BITS: ULONG = 0x100003FF;
495 pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT: ULONG = 0x00000000;
496 pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES: ULONG = 0x00000001;
497 pub const CM_GET_DEVICE_INTERFACE_LIST_BITS: ULONG = 0x00000001;
498 pub const CM_DRP_DEVICEDESC: ULONG = 0x00000001;
499 pub const CM_DRP_HARDWAREID: ULONG = 0x00000002;
500 pub const CM_DRP_COMPATIBLEIDS: ULONG = 0x00000003;
501 pub const CM_DRP_UNUSED0: ULONG = 0x00000004;
502 pub const CM_DRP_SERVICE: ULONG = 0x00000005;
503 pub const CM_DRP_UNUSED1: ULONG = 0x00000006;
504 pub const CM_DRP_UNUSED2: ULONG = 0x00000007;
505 pub const CM_DRP_CLASS: ULONG = 0x00000008;
506 pub const CM_DRP_CLASSGUID: ULONG = 0x00000009;
507 pub const CM_DRP_DRIVER: ULONG = 0x0000000A;
508 pub const CM_DRP_CONFIGFLAGS: ULONG = 0x0000000B;
509 pub const CM_DRP_MFG: ULONG = 0x0000000C;
510 pub const CM_DRP_FRIENDLYNAME: ULONG = 0x0000000D;
511 pub const CM_DRP_LOCATION_INFORMATION: ULONG = 0x0000000E;
512 pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME: ULONG = 0x0000000F;
513 pub const CM_DRP_CAPABILITIES: ULONG = 0x00000010;
514 pub const CM_DRP_UI_NUMBER: ULONG = 0x00000011;
515 pub const CM_DRP_UPPERFILTERS: ULONG = 0x00000012;
516 pub const CM_CRP_UPPERFILTERS: ULONG = CM_DRP_UPPERFILTERS;
517 pub const CM_DRP_LOWERFILTERS: ULONG = 0x00000013;
518 pub const CM_CRP_LOWERFILTERS: ULONG = CM_DRP_LOWERFILTERS;
519 pub const CM_DRP_BUSTYPEGUID: ULONG = 0x00000014;
520 pub const CM_DRP_LEGACYBUSTYPE: ULONG = 0x00000015;
521 pub const CM_DRP_BUSNUMBER: ULONG = 0x00000016;
522 pub const CM_DRP_ENUMERATOR_NAME: ULONG = 0x00000017;
523 pub const CM_DRP_SECURITY: ULONG = 0x00000018;
524 pub const CM_CRP_SECURITY: ULONG = CM_DRP_SECURITY;
525 pub const CM_DRP_SECURITY_SDS: ULONG = 0x00000019;
526 pub const CM_CRP_SECURITY_SDS: ULONG = CM_DRP_SECURITY_SDS;
527 pub const CM_DRP_DEVTYPE: ULONG = 0x0000001A;
528 pub const CM_CRP_DEVTYPE: ULONG = CM_DRP_DEVTYPE;
529 pub const CM_DRP_EXCLUSIVE: ULONG = 0x0000001B;
530 pub const CM_CRP_EXCLUSIVE: ULONG = CM_DRP_EXCLUSIVE;
531 pub const CM_DRP_CHARACTERISTICS: ULONG = 0x0000001C;
532 pub const CM_CRP_CHARACTERISTICS: ULONG = CM_DRP_CHARACTERISTICS;
533 pub const CM_DRP_ADDRESS: ULONG = 0x0000001D;
534 pub const CM_DRP_UI_NUMBER_DESC_FORMAT: ULONG = 0x0000001E;
535 pub const CM_DRP_DEVICE_POWER_DATA: ULONG = 0x0000001F;
536 pub const CM_DRP_REMOVAL_POLICY: ULONG = 0x00000020;
537 pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT: ULONG = 0x00000021;
538 pub const CM_DRP_REMOVAL_POLICY_OVERRIDE: ULONG = 0x00000022;
539 pub const CM_DRP_INSTALL_STATE: ULONG = 0x00000023;
540 pub const CM_DRP_LOCATION_PATHS: ULONG = 0x00000024;
541 pub const CM_DRP_BASE_CONTAINERID: ULONG = 0x00000025;
542 pub const CM_DRP_MIN: ULONG = 0x00000001;
543 pub const CM_CRP_MIN: ULONG = CM_DRP_MIN;
544 pub const CM_DRP_MAX: ULONG = 0x00000025;
545 pub const CM_CRP_MAX: ULONG = CM_DRP_MAX;
546 pub const CM_DEVCAP_LOCKSUPPORTED: ULONG = 0x00000001;
547 pub const CM_DEVCAP_EJECTSUPPORTED: ULONG = 0x00000002;
548 pub const CM_DEVCAP_REMOVABLE: ULONG = 0x00000004;
549 pub const CM_DEVCAP_DOCKDEVICE: ULONG = 0x00000008;
550 pub const CM_DEVCAP_UNIQUEID: ULONG = 0x00000010;
551 pub const CM_DEVCAP_SILENTINSTALL: ULONG = 0x00000020;
552 pub const CM_DEVCAP_RAWDEVICEOK: ULONG = 0x00000040;
553 pub const CM_DEVCAP_SURPRISEREMOVALOK: ULONG = 0x00000080;
554 pub const CM_DEVCAP_HARDWAREDISABLED: ULONG = 0x00000100;
555 pub const CM_DEVCAP_NONDYNAMIC: ULONG = 0x00000200;
556 pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL: ULONG = 1;
557 pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL: ULONG = 2;
558 pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL: ULONG = 3;
559 pub const CM_INSTALL_STATE_INSTALLED: ULONG = 0;
560 pub const CM_INSTALL_STATE_NEEDS_REINSTALL: ULONG = 1;
561 pub const CM_INSTALL_STATE_FAILED_INSTALL: ULONG = 2;
562 pub const CM_INSTALL_STATE_FINISH_INSTALL: ULONG = 3;
563 pub const CM_LOCATE_DEVNODE_NORMAL: ULONG = 0x00000000;
564 pub const CM_LOCATE_DEVNODE_PHANTOM: ULONG = 0x00000001;
565 pub const CM_LOCATE_DEVNODE_CANCELREMOVE: ULONG = 0x00000002;
566 pub const CM_LOCATE_DEVNODE_NOVALIDATION: ULONG = 0x00000004;
567 pub const CM_LOCATE_DEVNODE_BITS: ULONG = 0x00000007;
568 pub const CM_LOCATE_DEVINST_NORMAL: ULONG = CM_LOCATE_DEVNODE_NORMAL;
569 pub const CM_LOCATE_DEVINST_PHANTOM: ULONG = CM_LOCATE_DEVNODE_PHANTOM;
570 pub const CM_LOCATE_DEVINST_CANCELREMOVE: ULONG = CM_LOCATE_DEVNODE_CANCELREMOVE;
571 pub const CM_LOCATE_DEVINST_NOVALIDATION: ULONG = CM_LOCATE_DEVNODE_NOVALIDATION;
572 pub const CM_LOCATE_DEVINST_BITS: ULONG = CM_LOCATE_DEVNODE_BITS;
573 pub const CM_OPEN_CLASS_KEY_INSTALLER: ULONG = 0x00000000;
574 pub const CM_OPEN_CLASS_KEY_INTERFACE: ULONG = 0x00000001;
575 pub const CM_OPEN_CLASS_KEY_BITS: ULONG = 0x00000001;
576 pub const CM_REMOVE_UI_OK: ULONG = 0x00000000;
577 pub const CM_REMOVE_UI_NOT_OK: ULONG = 0x00000001;
578 pub const CM_REMOVE_NO_RESTART: ULONG = 0x00000002;
579 pub const CM_REMOVE_BITS: ULONG = 0x00000003;
580 pub const CM_QUERY_REMOVE_UI_OK: ULONG = CM_REMOVE_UI_OK;
581 pub const CM_QUERY_REMOVE_UI_NOT_OK: ULONG = CM_REMOVE_UI_NOT_OK;
582 pub const CM_QUERY_REMOVE_BITS: ULONG = CM_QUERY_REMOVE_UI_OK | CM_QUERY_REMOVE_UI_NOT_OK;
583 pub const CM_REENUMERATE_NORMAL: ULONG = 0x00000000;
584 pub const CM_REENUMERATE_SYNCHRONOUS: ULONG = 0x00000001;
585 pub const CM_REENUMERATE_RETRY_INSTALLATION: ULONG = 0x00000002;
586 pub const CM_REENUMERATE_ASYNCHRONOUS: ULONG = 0x00000004;
587 pub const CM_REENUMERATE_BITS: ULONG = 0x00000007;
588 pub const CM_REGISTER_DEVICE_DRIVER_STATIC: ULONG = 0x00000000;
589 pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE: ULONG = 0x00000001;
590 pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE: ULONG = 0x00000002;
591 pub const CM_REGISTER_DEVICE_DRIVER_BITS: ULONG = 0x00000003;
592 pub const CM_REGISTRY_HARDWARE: ULONG = 0x00000000;
593 pub const CM_REGISTRY_SOFTWARE: ULONG = 0x00000001;
594 pub const CM_REGISTRY_USER: ULONG = 0x00000100;
595 pub const CM_REGISTRY_CONFIG: ULONG = 0x00000200;
596 pub const CM_REGISTRY_BITS: ULONG = 0x00000301;
597 pub const CM_SET_DEVNODE_PROBLEM_NORMAL: ULONG = 0x00000000;
598 pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE: ULONG = 0x00000001;
599 pub const CM_SET_DEVNODE_PROBLEM_BITS: ULONG = 0x00000001;
600 pub const CM_SET_DEVINST_PROBLEM_NORMAL: ULONG = CM_SET_DEVNODE_PROBLEM_NORMAL;
601 pub const CM_SET_DEVINST_PROBLEM_OVERRIDE: ULONG = CM_SET_DEVNODE_PROBLEM_OVERRIDE;
602 pub const CM_SET_DEVINST_PROBLEM_BITS: ULONG = CM_SET_DEVNODE_PROBLEM_BITS;
603 pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK: ULONG = 0x00000001;
604 pub const CM_SET_HW_PROF_FLAGS_BITS: ULONG = 0x00000001;
605 pub const CM_SETUP_DEVNODE_READY: ULONG = 0x00000000;
606 pub const CM_SETUP_DEVINST_READY: ULONG = CM_SETUP_DEVNODE_READY;
607 pub const CM_SETUP_DOWNLOAD: ULONG = 0x00000001;
608 pub const CM_SETUP_WRITE_LOG_CONFS: ULONG = 0x00000002;
609 pub const CM_SETUP_PROP_CHANGE: ULONG = 0x00000003;
610 pub const CM_SETUP_DEVNODE_RESET: ULONG = 0x00000004;
611 pub const CM_SETUP_DEVINST_RESET: ULONG = CM_SETUP_DEVNODE_RESET;
612 pub const CM_SETUP_DEVNODE_CONFIG: ULONG = 0x00000005;
613 pub const CM_SETUP_DEVINST_CONFIG: ULONG = CM_SETUP_DEVNODE_CONFIG;
614 pub const CM_SETUP_DEVNODE_CONFIG_CLASS: ULONG = 0x00000006;
615 pub const CM_SETUP_DEVINST_CONFIG_CLASS: ULONG = CM_SETUP_DEVNODE_CONFIG_CLASS;
616 pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS: ULONG = 0x00000007;
617 pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS: ULONG = CM_SETUP_DEVNODE_CONFIG_EXTENSIONS;
618 pub const CM_SETUP_BITS: ULONG = 0x00000007;
619 pub const CM_QUERY_ARBITRATOR_RAW: ULONG = 0x00000000;
620 pub const CM_QUERY_ARBITRATOR_TRANSLATED: ULONG = 0x00000001;
621 pub const CM_QUERY_ARBITRATOR_BITS: ULONG = 0x00000001;
622 pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ: ULONG = 0x00000001;
623 pub const CM_CUSTOMDEVPROP_BITS: ULONG = 0x00000001;
624 pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE: ULONG = 0x1;
625 pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME: ULONG = 0x2;
626 pub const CM_CLASS_PROPERTY_INSTALLER: ULONG = 0x00000000;
627 pub const CM_CLASS_PROPERTY_INTERFACE: ULONG = 0x00000001;
628 pub const CM_CLASS_PROPERTY_BITS: ULONG = 0x00000001;
629 DECLARE_HANDLE!{HCMNOTIFICATION, HCMNOTIFICATION__}
630 pub type PHCMNOTIFICATION = *mut HCMNOTIFICATION;
631 pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES: ULONG = 0x00000001;
632 pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES: ULONG = 0x00000002;
633 pub const CM_NOTIFY_FILTER_VALID_FLAGS: ULONG = CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES
634 | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES;
635 ENUM!{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 }}
641 pub type PCM_NOTIFY_FILTER_TYPE = *mut CM_NOTIFY_FILTER_TYPE;
642 STRUCT!{struct CM_NOTIFY_FILTER_DeviceInterface {
643 ClassGuid: GUID,
644 }}
645 STRUCT!{struct CM_NOTIFY_FILTER_DeviceHandle {
646 hTarget: HANDLE,
647 }}
648 STRUCT!{struct CM_NOTIFY_FILTER_DeviceInstance {
649 InstanceId: [WCHAR; MAX_DEVICE_ID_LEN],
650 }}
651 UNION!{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 }}
657 STRUCT!{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 }}
664 pub type PCM_NOTIFY_FILTER = *mut CM_NOTIFY_FILTER;
665 ENUM!{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 }}
678 pub type PCM_NOTIFY_ACTION = *mut CM_NOTIFY_ACTION;
679 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInterface {
680 ClassGuid: GUID,
681 SymbolicLink: [WCHAR; ANYSIZE_ARRAY],
682 }}
683 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceHandle {
684 EventGuid: GUID,
685 NameOffset: LONG,
686 DataSize: DWORD,
687 Data: [BYTE; ANYSIZE_ARRAY],
688 }}
689 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInstance {
690 InstanceId: [WCHAR; ANYSIZE_ARRAY],
691 }}
692 UNION!{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 }}
698 STRUCT!{struct CM_NOTIFY_EVENT_DATA {
699 FilterType: CM_NOTIFY_FILTER_TYPE,
700 Reserved: DWORD,
701 u: CM_NOTIFY_EVENT_DATA_u,
702 }}
703 pub type PCM_NOTIFY_EVENT_DATA = *mut CM_NOTIFY_EVENT_DATA;
704 FN!{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}
711 extern "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 }
2013 pub const CR_SUCCESS: CONFIGRET = 0x00000000;
2014 pub const CR_DEFAULT: CONFIGRET = 0x00000001;
2015 pub const CR_OUT_OF_MEMORY: CONFIGRET = 0x00000002;
2016 pub const CR_INVALID_POINTER: CONFIGRET = 0x00000003;
2017 pub const CR_INVALID_FLAG: CONFIGRET = 0x00000004;
2018 pub const CR_INVALID_DEVNODE: CONFIGRET = 0x00000005;
2019 pub const CR_INVALID_DEVINST: CONFIGRET = CR_INVALID_DEVNODE;
2020 pub const CR_INVALID_RES_DES: CONFIGRET = 0x00000006;
2021 pub const CR_INVALID_LOG_CONF: CONFIGRET = 0x00000007;
2022 pub const CR_INVALID_ARBITRATOR: CONFIGRET = 0x00000008;
2023 pub const CR_INVALID_NODELIST: CONFIGRET = 0x00000009;
2024 pub const CR_DEVNODE_HAS_REQS: CONFIGRET = 0x0000000A;
2025 pub const CR_DEVINST_HAS_REQS: CONFIGRET = CR_DEVNODE_HAS_REQS;
2026 pub const CR_INVALID_RESOURCEID: CONFIGRET = 0x0000000B;
2027 pub const CR_DLVXD_NOT_FOUND: CONFIGRET = 0x0000000C;
2028 pub const CR_NO_SUCH_DEVNODE: CONFIGRET = 0x0000000D;
2029 pub const CR_NO_SUCH_DEVINST: CONFIGRET = CR_NO_SUCH_DEVNODE;
2030 pub const CR_NO_MORE_LOG_CONF: CONFIGRET = 0x0000000E;
2031 pub const CR_NO_MORE_RES_DES: CONFIGRET = 0x0000000F;
2032 pub const CR_ALREADY_SUCH_DEVNODE: CONFIGRET = 0x00000010;
2033 pub const CR_ALREADY_SUCH_DEVINST: CONFIGRET = CR_ALREADY_SUCH_DEVNODE;
2034 pub const CR_INVALID_RANGE_LIST: CONFIGRET = 0x00000011;
2035 pub const CR_INVALID_RANGE: CONFIGRET = 0x00000012;
2036 pub const CR_FAILURE: CONFIGRET = 0x00000013;
2037 pub const CR_NO_SUCH_LOGICAL_DEV: CONFIGRET = 0x00000014;
2038 pub const CR_CREATE_BLOCKED: CONFIGRET = 0x00000015;
2039 pub const CR_NOT_SYSTEM_VM: CONFIGRET = 0x00000016;
2040 pub const CR_REMOVE_VETOED: CONFIGRET = 0x00000017;
2041 pub const CR_APM_VETOED: CONFIGRET = 0x00000018;
2042 pub const CR_INVALID_LOAD_TYPE: CONFIGRET = 0x00000019;
2043 pub const CR_BUFFER_SMALL: CONFIGRET = 0x0000001A;
2044 pub const CR_NO_ARBITRATOR: CONFIGRET = 0x0000001B;
2045 pub const CR_NO_REGISTRY_HANDLE: CONFIGRET = 0x0000001C;
2046 pub const CR_REGISTRY_ERROR: CONFIGRET = 0x0000001D;
2047 pub const CR_INVALID_DEVICE_ID: CONFIGRET = 0x0000001E;
2048 pub const CR_INVALID_DATA: CONFIGRET = 0x0000001F;
2049 pub const CR_INVALID_API: CONFIGRET = 0x00000020;
2050 pub const CR_DEVLOADER_NOT_READY: CONFIGRET = 0x00000021;
2051 pub const CR_NEED_RESTART: CONFIGRET = 0x00000022;
2052 pub const CR_NO_MORE_HW_PROFILES: CONFIGRET = 0x00000023;
2053 pub const CR_DEVICE_NOT_THERE: CONFIGRET = 0x00000024;
2054 pub const CR_NO_SUCH_VALUE: CONFIGRET = 0x00000025;
2055 pub const CR_WRONG_TYPE: CONFIGRET = 0x00000026;
2056 pub const CR_INVALID_PRIORITY: CONFIGRET = 0x00000027;
2057 pub const CR_NOT_DISABLEABLE: CONFIGRET = 0x00000028;
2058 pub const CR_FREE_RESOURCES: CONFIGRET = 0x00000029;
2059 pub const CR_QUERY_VETOED: CONFIGRET = 0x0000002A;
2060 pub const CR_CANT_SHARE_IRQ: CONFIGRET = 0x0000002B;
2061 pub const CR_NO_DEPENDENT: CONFIGRET = 0x0000002C;
2062 pub const CR_SAME_RESOURCES: CONFIGRET = 0x0000002D;
2063 pub const CR_NO_SUCH_REGISTRY_KEY: CONFIGRET = 0x0000002E;
2064 pub const CR_INVALID_MACHINENAME: CONFIGRET = 0x0000002F;
2065 pub const CR_REMOTE_COMM_FAILURE: CONFIGRET = 0x00000030;
2066 pub const CR_MACHINE_UNAVAILABLE: CONFIGRET = 0x00000031;
2067 pub const CR_NO_CM_SERVICES: CONFIGRET = 0x00000032;
2068 pub const CR_ACCESS_DENIED: CONFIGRET = 0x00000033;
2069 pub const CR_CALL_NOT_IMPLEMENTED: CONFIGRET = 0x00000034;
2070 pub const CR_INVALID_PROPERTY: CONFIGRET = 0x00000035;
2071 pub const CR_DEVICE_INTERFACE_ACTIVE: CONFIGRET = 0x00000036;
2072 pub const CR_NO_SUCH_DEVICE_INTERFACE: CONFIGRET = 0x00000037;
2073 pub const CR_INVALID_REFERENCE_STRING: CONFIGRET = 0x00000038;
2074 pub const CR_INVALID_CONFLICT_LIST: CONFIGRET = 0x00000039;
2075 pub const CR_INVALID_INDEX: CONFIGRET = 0x0000003A;
2076 pub const CR_INVALID_STRUCTURE_SIZE: CONFIGRET = 0x0000003B;
2077 pub const NUM_CR_RESULTS: CONFIGRET = 0x0000003C;
2078