summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winapi/src/um/cfgmgr32.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/rust/winapi/src/um/cfgmgr32.rs
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/winapi/src/um/cfgmgr32.rs')
-rw-r--r--third_party/rust/winapi/src/um/cfgmgr32.rs2077
1 files changed, 2077 insertions, 0 deletions
diff --git a/third_party/rust/winapi/src/um/cfgmgr32.rs b/third_party/rust/winapi/src/um/cfgmgr32.rs
new file mode 100644
index 0000000000..2c4c7f39fe
--- /dev/null
+++ b/third_party/rust/winapi/src/um/cfgmgr32.rs
@@ -0,0 +1,2077 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! user APIs for the Configuration Manager
+use shared::basetsd::{DWORD_PTR, ULONG32, ULONG64, ULONG_PTR};
+use shared::cfg::PPNP_VETO_TYPE;
+use shared::devpropdef::{DEVPROPKEY, DEVPROPTYPE};
+use shared::guiddef::{GUID, LPGUID};
+use shared::minwindef::{BOOL, BYTE, DWORD, MAX_PATH, PBOOL, PBYTE, PHKEY, PULONG, ULONG, WORD};
+use um::winnt::{
+ ANYSIZE_ARRAY, CHAR, DWORDLONG, HANDLE, LARGE_INTEGER, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR,
+ PCHAR, PCSTR, PCWSTR, PDWORDLONG, PSTR, PVOID, PWCHAR, PWSTR, ULONGLONG, VOID, WCHAR
+};
+use um::winreg::REGSAM;
+pub type PCVOID = *const VOID;
+pub const MAX_DEVICE_ID_LEN: usize = 200;
+pub const MAX_DEVNODE_ID_LEN: usize = MAX_DEVICE_ID_LEN;
+pub const MAX_GUID_STRING_LEN: usize = 39;
+pub const MAX_CLASS_NAME_LEN: usize = 32;
+pub const MAX_PROFILE_LEN: usize = 80;
+pub const MAX_CONFIG_VALUE: DWORD = 9999;
+pub const MAX_INSTANCE_VALUE: DWORD = 9999;
+pub const MAX_MEM_REGISTERS: DWORD = 9;
+pub const MAX_IO_PORTS: DWORD = 20;
+pub const MAX_IRQS: DWORD = 7;
+pub const MAX_DMA_CHANNELS: DWORD = 7;
+pub const DWORD_MAX: DWORD = 0xffffffff;
+pub const DWORDLONG_MAX: DWORDLONG = 0xffffffffffffffff;
+pub const CONFIGMG_VERSION: DWORD = 0x0400;
+pub type RETURN_TYPE = DWORD;
+pub type CONFIGRET = RETURN_TYPE;
+pub type DEVNODE = DWORD;
+pub type DEVINST = DWORD;
+pub type PDEVNODE = *mut DEVNODE;
+pub type PDEVINST = *mut DEVNODE;
+pub type DEVNODEID_A = *mut CHAR;
+pub type DEVINSTID_A = *mut CHAR;
+pub type DEVNODEID_W = *mut WCHAR;
+pub type DEVINSTID_W = *mut WCHAR;
+pub type LOG_CONF = DWORD_PTR;
+pub type PLOG_CONF = *mut LOG_CONF;
+pub type RES_DES = DWORD_PTR;
+pub type PRES_DES = *mut RES_DES;
+pub type RESOURCEID = ULONG;
+pub type PRESOURCEID = *mut RESOURCEID;
+pub type PRIORITY = ULONG;
+pub type PPRIORITY = *mut PRIORITY;
+pub type RANGE_LIST = DWORD_PTR;
+pub type PRANGE_LIST = *mut RANGE_LIST;
+pub type RANGE_ELEMENT = DWORD_PTR;
+pub type PRANGE_ELEMENT = *mut RANGE_ELEMENT;
+pub type HMACHINE = HANDLE;
+pub type PHMACHINE = *mut HMACHINE;
+pub type CONFLICT_LIST = ULONG_PTR;
+pub type PCONFLICT_LIST = *mut CONFLICT_LIST;
+STRUCT!{struct CONFLICT_DETAILS_A {
+ CD_ulSize: ULONG,
+ CD_ulMask: ULONG,
+ CD_dnDevInst: DEVINST,
+ CD_rdResDes: RES_DES,
+ CD_ulFlags: ULONG,
+ CD_szDescription: [CHAR; MAX_PATH],
+}}
+pub type PCONFLICT_DETAILS_A = *mut CONFLICT_DETAILS_A;
+STRUCT!{struct CONFLICT_DETAILS_W {
+ CD_ulSize: ULONG,
+ CD_ulMask: ULONG,
+ CD_dnDevInst: DEVINST,
+ CD_rdResDes: RES_DES,
+ CD_ulFlags: ULONG,
+ CD_szDescription: [WCHAR; MAX_PATH],
+}}
+pub type PCONFLICT_DETAILS_W = *mut CONFLICT_DETAILS_W;
+pub const CM_CDMASK_DEVINST: ULONG = 0x00000001;
+pub const CM_CDMASK_RESDES: ULONG = 0x00000002;
+pub const CM_CDMASK_FLAGS: ULONG = 0x00000004;
+pub const CM_CDMASK_DESCRIPTION: ULONG = 0x00000008;
+pub const CM_CDMASK_VALID: ULONG = 0x0000000F;
+pub const CM_CDFLAGS_DRIVER: ULONG = 0x00000001;
+pub const CM_CDFLAGS_ROOT_OWNED: ULONG = 0x00000002;
+pub const CM_CDFLAGS_RESERVED: ULONG = 0x00000004;
+pub type REGDISPOSITION = ULONG;
+pub const mMD_MemoryType: DWORD = 0x1;
+pub const fMD_MemoryType: DWORD = mMD_MemoryType;
+pub const fMD_ROM: DWORD = 0x0;
+pub const fMD_RAM: DWORD = 0x1;
+pub const mMD_32_24: DWORD = 0x2;
+pub const fMD_32_24: DWORD = mMD_32_24;
+pub const fMD_24: DWORD = 0x0;
+pub const fMD_32: DWORD = 0x2;
+pub const mMD_Prefetchable: DWORD = 0x4;
+pub const fMD_Prefetchable: DWORD = mMD_Prefetchable;
+pub const fMD_Pref: DWORD = mMD_Prefetchable;
+pub const fMD_PrefetchDisallowed: DWORD = 0x0;
+pub const fMD_PrefetchAllowed: DWORD = 0x4;
+pub const mMD_Readable: DWORD = 0x8;
+pub const fMD_Readable: DWORD = mMD_Readable;
+pub const fMD_ReadAllowed: DWORD = 0x0;
+pub const fMD_ReadDisallowed: DWORD = 0x8;
+pub const mMD_CombinedWrite: DWORD = 0x10;
+pub const fMD_CombinedWrite: DWORD = mMD_CombinedWrite;
+pub const fMD_CombinedWriteDisallowed: DWORD = 0x0;
+pub const fMD_CombinedWriteAllowed: DWORD = 0x10;
+pub const mMD_Cacheable: DWORD = 0x20;
+pub const fMD_NonCacheable: DWORD = 0x0;
+pub const fMD_Cacheable: DWORD = 0x20;
+pub const fMD_WINDOW_DECODE: DWORD = 0x40;
+pub const fMD_MEMORY_BAR: DWORD = 0x80;
+STRUCT!{#[repr(packed)] struct MEM_RANGE {
+ MR_Align: DWORDLONG,
+ MR_nBytes: ULONG,
+ MR_Min: DWORDLONG,
+ MR_Max: DWORDLONG,
+ MR_Flags: DWORD,
+ MR_Reserved: DWORD,
+}}
+pub type PMEM_RANGE = *mut MEM_RANGE;
+STRUCT!{#[repr(packed)] struct MEM_DES {
+ MD_Count: DWORD,
+ MD_Type: DWORD,
+ MD_Alloc_Base: DWORDLONG,
+ MD_Alloc_End: DWORDLONG,
+ MD_Flags: DWORD,
+ MD_Reserved: DWORD,
+}}
+pub type PMEM_DES = *mut MEM_DES;
+STRUCT!{#[repr(packed)] struct MEM_RESOURCE {
+ MEM_Header: MEM_DES,
+ MEM_Data: [MEM_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PMEM_RESOURCE = *mut MEM_RESOURCE;
+STRUCT!{#[repr(packed)] struct MEM_LARGE_RANGE {
+ MLR_Align: DWORDLONG,
+ MLR_nBytes: ULONGLONG,
+ MLR_Min: DWORDLONG,
+ MLR_Max: DWORDLONG,
+ MLR_Flags: DWORD,
+ MLR_Reserved: DWORD,
+}}
+pub type PMEM_LARGE_RANGE = *mut MEM_LARGE_RANGE;
+STRUCT!{#[repr(packed)] struct MEM_LARGE_DES {
+ MLD_Count: DWORD,
+ MLD_Type: DWORD,
+ MLD_Alloc_Base: DWORDLONG,
+ MLD_Alloc_End: DWORDLONG,
+ MLD_Flags: DWORD,
+ MLD_Reserved: DWORD,
+}}
+pub type PMEM_LARGE_DES = *mut MEM_LARGE_DES;
+STRUCT!{#[repr(packed)] struct MEM_LARGE_RESOURCE {
+ MEM_LARGE_Header: MEM_LARGE_DES,
+ MEM_LARGE_Data: [MEM_LARGE_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PMEM_LARGE_RESOURCE = *mut MEM_LARGE_RESOURCE;
+pub const fIOD_PortType: DWORD = 0x1;
+pub const fIOD_Memory: DWORD = 0x0;
+pub const fIOD_IO: DWORD = 0x1;
+pub const fIOD_DECODE: DWORD = 0x00fc;
+pub const fIOD_10_BIT_DECODE: DWORD = 0x0004;
+pub const fIOD_12_BIT_DECODE: DWORD = 0x0008;
+pub const fIOD_16_BIT_DECODE: DWORD = 0x0010;
+pub const fIOD_POSITIVE_DECODE: DWORD = 0x0020;
+pub const fIOD_PASSIVE_DECODE: DWORD = 0x0040;
+pub const fIOD_WINDOW_DECODE: DWORD = 0x0080;
+pub const fIOD_PORT_BAR: DWORD = 0x0100;
+pub const IO_ALIAS_10_BIT_DECODE: DWORDLONG = 0x00000004;
+pub const IO_ALIAS_12_BIT_DECODE: DWORDLONG = 0x00000010;
+pub const IO_ALIAS_16_BIT_DECODE: DWORDLONG = 0x00000000;
+pub const IO_ALIAS_POSITIVE_DECODE: DWORDLONG = 0x000000FF;
+STRUCT!{#[repr(packed)] struct IO_RANGE {
+ IOR_Align: DWORDLONG,
+ IOR_nPorts: DWORD,
+ IOR_Min: DWORDLONG,
+ IOR_Max: DWORDLONG,
+ IOR_RangeFlags: DWORD,
+ IOR_Alias: DWORDLONG,
+}}
+pub type PIO_RANGE = *mut IO_RANGE;
+STRUCT!{#[repr(packed)] struct IO_DES {
+ IOD_Count: DWORD,
+ IOD_Type: DWORD,
+ IOD_Alloc_Base: DWORDLONG,
+ IOD_Alloc_End: DWORDLONG,
+ IOD_DesFlags: DWORD,
+}}
+pub type PIO_DES = *mut IO_DES;
+STRUCT!{#[repr(packed)] struct IO_RESOURCE {
+ IO_Header: IO_DES,
+ IO_Data: [IO_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PIO_RESOURCE = *mut IO_RESOURCE;
+pub const mDD_Width: ULONG = 0x3;
+pub const fDD_BYTE: ULONG = 0x0;
+pub const fDD_WORD: ULONG = 0x1;
+pub const fDD_DWORD: ULONG = 0x2;
+pub const fDD_BYTE_AND_WORD: ULONG = 0x3;
+pub const mDD_BusMaster: ULONG = 0x4;
+pub const fDD_NoBusMaster: ULONG = 0x0;
+pub const fDD_BusMaster: ULONG = 0x4;
+pub const mDD_Type: ULONG = 0x18;
+pub const fDD_TypeStandard: ULONG = 0x00;
+pub const fDD_TypeA: ULONG = 0x08;
+pub const fDD_TypeB: ULONG = 0x10;
+pub const fDD_TypeF: ULONG = 0x18;
+STRUCT!{#[repr(packed)] struct DMA_RANGE {
+ DR_Min: ULONG,
+ DR_Max: ULONG,
+ DR_Flags: ULONG,
+}}
+pub type PDMA_RANGE = *mut DMA_RANGE;
+STRUCT!{#[repr(packed)] struct DMA_DES {
+ DD_Count: DWORD,
+ DD_Type: DWORD,
+ DD_Flags: DWORD,
+ DD_Alloc_Chan: ULONG,
+}}
+pub type PDMA_DES = *mut DMA_DES;
+STRUCT!{#[repr(packed)] struct DMA_RESOURCE {
+ DMA_Header: DMA_DES,
+ DMA_Data: [DMA_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PDMA_RESOURCE = *mut DMA_RESOURCE;
+pub const mIRQD_Share: ULONG = 0x1;
+pub const fIRQD_Exclusive: ULONG = 0x0;
+pub const fIRQD_Share: ULONG = 0x1;
+pub const fIRQD_Share_Bit: ULONG = 0;
+pub const fIRQD_Level_Bit: ULONG = 1;
+pub const mIRQD_Edge_Level: ULONG = 0x2;
+pub const fIRQD_Level: ULONG = 0x0;
+pub const fIRQD_Edge: ULONG = 0x2;
+STRUCT!{#[repr(packed)] struct IRQ_RANGE {
+ IRQR_Min: ULONG,
+ IRQR_Max: ULONG,
+ IRQR_Flags: ULONG,
+}}
+pub type PIRQ_RANGE = *mut IRQ_RANGE;
+STRUCT!{#[repr(packed)] struct IRQ_DES_32 {
+ IRQD_Count: DWORD,
+ IRQD_Type: DWORD,
+ IRQD_Flags: DWORD,
+ IRQD_Alloc_Num: ULONG,
+ IRQD_Affinity: ULONG32,
+}}
+pub type PIRQ_DES_32 = *mut IRQ_DES_32;
+STRUCT!{#[repr(packed)] struct IRQ_DES_64 {
+ IRQD_Count: DWORD,
+ IRQD_Type: DWORD,
+ IRQD_Flags: DWORD,
+ IRQD_Alloc_Num: ULONG,
+ IRQD_Affinity: ULONG64,
+}}
+pub type PIRQ_DES_64 = *mut IRQ_DES_64;
+STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_32 {
+ IRQ_Header: IRQ_DES_32,
+ IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PIRQ_RESOURCE_32 = *mut IRQ_RESOURCE_32;
+STRUCT!{#[repr(packed)] struct IRQ_RESOURCE_64 {
+ IRQ_Header: IRQ_DES_64,
+ IRQ_Data: [IRQ_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PIRQ_RESOURCE_64 = *mut IRQ_RESOURCE_64;
+STRUCT!{#[repr(packed)] struct DEVPRIVATE_RANGE {
+ PR_Data1: DWORD,
+ PR_Data2: DWORD,
+ PR_Data3: DWORD,
+}}
+pub type PDEVPRIVATE_RANGE = *mut DEVPRIVATE_RANGE;
+STRUCT!{#[repr(packed)] struct DEVPRIVATE_DES {
+ PD_Count: DWORD,
+ PD_Type: DWORD,
+ PD_Data1: DWORD,
+ PD_Data2: DWORD,
+ PD_Data3: DWORD,
+ PD_Flags: DWORD,
+}}
+pub type PDEVPRIVATE_DES = *mut DEVPRIVATE_DES;
+STRUCT!{#[repr(packed)] struct DEVPRIVATE_RESOURCE {
+ PRV_Header: DEVPRIVATE_DES,
+ PRV_Data: [DEVPRIVATE_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PDEVPRIVATE_RESOURCE = *mut DEVPRIVATE_RESOURCE;
+STRUCT!{#[repr(packed)] struct CS_DES {
+ CSD_SignatureLength: DWORD,
+ CSD_LegacyDataOffset: DWORD,
+ CSD_LegacyDataSize: DWORD,
+ CSD_Flags: DWORD,
+ CSD_ClassGuid: GUID,
+ CSD_Signature: [BYTE; ANYSIZE_ARRAY],
+}}
+pub type PCS_DES = *mut CS_DES;
+STRUCT!{#[repr(packed)] struct CS_RESOURCE {
+ CS_Header: CS_DES,
+}}
+pub type PCS_RESOURCE = *mut CS_RESOURCE;
+pub const mPCD_IO_8_16: DWORD = 0x1;
+pub const fPCD_IO_8: DWORD = 0x0;
+pub const fPCD_IO_16: DWORD = 0x1;
+pub const mPCD_MEM_8_16: DWORD = 0x2;
+pub const fPCD_MEM_8: DWORD = 0x0;
+pub const fPCD_MEM_16: DWORD = 0x2;
+pub const mPCD_MEM_A_C: DWORD = 0xC;
+pub const fPCD_MEM1_A: DWORD = 0x4;
+pub const fPCD_MEM2_A: DWORD = 0x8;
+pub const fPCD_IO_ZW_8: DWORD = 0x10;
+pub const fPCD_IO_SRC_16: DWORD = 0x20;
+pub const fPCD_IO_WS_16: DWORD = 0x40;
+pub const mPCD_MEM_WS: DWORD = 0x300;
+pub const fPCD_MEM_WS_ONE: DWORD = 0x100;
+pub const fPCD_MEM_WS_TWO: DWORD = 0x200;
+pub const fPCD_MEM_WS_THREE: DWORD = 0x300;
+pub const fPCD_MEM_A: DWORD = 0x4;
+pub const fPCD_ATTRIBUTES_PER_WINDOW: DWORD = 0x8000;
+pub const fPCD_IO1_16: DWORD = 0x00010000;
+pub const fPCD_IO1_ZW_8: DWORD = 0x00020000;
+pub const fPCD_IO1_SRC_16: DWORD = 0x00040000;
+pub const fPCD_IO1_WS_16: DWORD = 0x00080000;
+pub const fPCD_IO2_16: DWORD = 0x00100000;
+pub const fPCD_IO2_ZW_8: DWORD = 0x00200000;
+pub const fPCD_IO2_SRC_16: DWORD = 0x00400000;
+pub const fPCD_IO2_WS_16: DWORD = 0x00800000;
+pub const mPCD_MEM1_WS: DWORD = 0x03000000;
+pub const fPCD_MEM1_WS_TWO: DWORD = 0x02000000;
+pub const fPCD_MEM1_WS_THREE: DWORD = 0x03000000;
+pub const fPCD_MEM1_16: DWORD = 0x04000000;
+pub const mPCD_MEM2_WS: DWORD = 0x30000000;
+pub const fPCD_MEM2_WS_ONE: DWORD = 0x10000000;
+pub const fPCD_MEM2_WS_TWO: DWORD = 0x20000000;
+pub const fPCD_MEM2_WS_THREE: DWORD = 0x30000000;
+pub const fPCD_MEM2_16: DWORD = 0x40000000;
+pub const PCD_MAX_MEMORY: usize = 2;
+pub const PCD_MAX_IO: usize = 2;
+STRUCT!{#[repr(packed)] struct PCCARD_DES {
+ PCD_Count: DWORD,
+ PCD_Type: DWORD,
+ PCD_Flags: DWORD,
+ PCD_ConfigIndex: BYTE,
+ PCD_Reserved: [BYTE; 3],
+ PCD_MemoryCardBase1: DWORD,
+ PCD_MemoryCardBase2: DWORD,
+ PCD_MemoryCardBase: [DWORD; PCD_MAX_MEMORY],
+ PCD_MemoryFlags: [WORD; PCD_MAX_MEMORY],
+ PCD_IoFlags: [BYTE; PCD_MAX_IO],
+}}
+pub type PPCCARD_DES = *mut PCCARD_DES;
+STRUCT!{#[repr(packed)] struct PCCARD_RESOURCE {
+ PcCard_Header: PCCARD_DES,
+}}
+pub type PPCCARD_RESOURCE = *mut PCCARD_RESOURCE;
+pub const mPMF_AUDIO_ENABLE: DWORD = 0x8;
+pub const fPMF_AUDIO_ENABLE: DWORD = 0x8;
+STRUCT!{#[repr(packed)] struct MFCARD_DES {
+ PMF_Count: DWORD,
+ PMF_Type: DWORD,
+ PMF_Flags: DWORD,
+ PMF_ConfigOptions: BYTE,
+ PMF_IoResourceIndex: BYTE,
+ PMF_Reserved: [BYTE; 2],
+ PMF_ConfigRegisterBase: DWORD,
+}}
+pub type PMFCARD_DES = *mut MFCARD_DES;
+STRUCT!{#[repr(packed)] struct MFCARD_RESOURCE {
+ MfCard_Header: MFCARD_DES,
+}}
+pub type PMFCARD_RESOURCE = *mut MFCARD_RESOURCE;
+STRUCT!{#[repr(packed)] struct BUSNUMBER_RANGE {
+ BUSR_Min: ULONG,
+ BUSR_Max: ULONG,
+ BUSR_nBusNumbers: ULONG,
+ BUSR_Flags: ULONG,
+}}
+pub type PBUSNUMBER_RANGE = *mut BUSNUMBER_RANGE;
+STRUCT!{#[repr(packed)] struct BUSNUMBER_DES {
+ BUSD_Count: DWORD,
+ BUSD_Type: DWORD,
+ BUSD_Flags: DWORD,
+ BUSD_Alloc_Base: ULONG,
+ BUSD_Alloc_End: ULONG,
+}}
+pub type PBUSNUMBER_DES = *mut BUSNUMBER_DES;
+STRUCT!{#[repr(packed)] struct BUSNUMBER_RESOURCE {
+ BusNumber_Header: BUSNUMBER_DES,
+ BusNumber_Data: [BUSNUMBER_RANGE; ANYSIZE_ARRAY],
+}}
+pub type PBUSNUMBER_RESOURCE = *mut BUSNUMBER_RESOURCE;
+STRUCT!{#[repr(packed)] struct CONNECTION_DES {
+ COND_Type: DWORD,
+ COND_Flags: DWORD,
+ COND_Class: BYTE,
+ COND_ClassType: BYTE,
+ COND_Reserved1: BYTE,
+ COND_Reserved2: BYTE,
+ COND_Id: LARGE_INTEGER,
+}}
+pub type PCONNECTION_DES = *mut CONNECTION_DES;
+STRUCT!{#[repr(packed)] struct CONNECTION_RESOURCE {
+ Connection_Header: CONNECTION_DES,
+}}
+pub type PCONNECTION_RESOURCE = *mut CONNECTION_RESOURCE;
+pub const CM_HWPI_NOT_DOCKABLE: DWORD = 0x00000000;
+pub const CM_HWPI_UNDOCKED: DWORD = 0x00000001;
+pub const CM_HWPI_DOCKED: DWORD = 0x00000002;
+STRUCT!{#[repr(packed)] struct HWPROFILEINFO_A {
+ HWPI_ulHWProfile: ULONG,
+ HWPI_szFriendlyName: [CHAR; MAX_PROFILE_LEN],
+ HWPI_dwFlags: DWORD,
+}}
+pub type PHWPROFILEINFO_A = *mut HWPROFILEINFO_A;
+STRUCT!{#[repr(packed)] struct HWPROFILEINFO_W {
+ HWPI_ulHWProfile: ULONG,
+ HWPI_szFriendlyName: [WCHAR; MAX_PROFILE_LEN],
+ HWPI_dwFlags: DWORD,
+}}
+pub type PHWPROFILEINFO_W = *mut HWPROFILEINFO_W;
+pub const ResType_All: RESOURCEID = 0x00000000;
+pub const ResType_None: RESOURCEID = 0x00000000;
+pub const ResType_Mem: RESOURCEID = 0x00000001;
+pub const ResType_IO: RESOURCEID = 0x00000002;
+pub const ResType_DMA: RESOURCEID = 0x00000003;
+pub const ResType_IRQ: RESOURCEID = 0x00000004;
+pub const ResType_DoNotUse: RESOURCEID = 0x00000005;
+pub const ResType_BusNumber: RESOURCEID = 0x00000006;
+pub const ResType_MemLarge: RESOURCEID = 0x00000007;
+pub const ResType_MAX: RESOURCEID = 0x00000007;
+pub const ResType_Ignored_Bit: RESOURCEID = 0x00008000;
+pub const ResType_ClassSpecific: RESOURCEID = 0x0000FFFF;
+pub const ResType_Reserved: RESOURCEID = 0x00008000;
+pub const ResType_DevicePrivate: RESOURCEID = 0x00008001;
+pub const ResType_PcCardConfig: RESOURCEID = 0x00008002;
+pub const ResType_MfCardConfig: RESOURCEID = 0x00008003;
+pub const ResType_Connection: RESOURCEID = 0x00008004;
+pub const CM_ADD_RANGE_ADDIFCONFLICT: ULONG = 0x00000000;
+pub const CM_ADD_RANGE_DONOTADDIFCONFLICT: ULONG = 0x00000001;
+pub const CM_ADD_RANGE_BITS: ULONG = 0x00000001;
+pub const BASIC_LOG_CONF: ULONG = 0x00000000;
+pub const FILTERED_LOG_CONF: ULONG = 0x00000001;
+pub const ALLOC_LOG_CONF: ULONG = 0x00000002;
+pub const BOOT_LOG_CONF: ULONG = 0x00000003;
+pub const FORCED_LOG_CONF: ULONG = 0x00000004;
+pub const OVERRIDE_LOG_CONF: ULONG = 0x00000005;
+pub const NUM_LOG_CONF: ULONG = 0x00000006;
+pub const LOG_CONF_BITS: ULONG = 0x00000007;
+pub const PRIORITY_EQUAL_FIRST: ULONG = 0x00000008;
+pub const PRIORITY_EQUAL_LAST: ULONG = 0x00000000;
+pub const PRIORITY_BIT: ULONG = 0x00000008;
+pub const RegDisposition_OpenAlways: REGDISPOSITION = 0x00000000;
+pub const RegDisposition_OpenExisting: REGDISPOSITION = 0x00000001;
+pub const RegDisposition_Bits: REGDISPOSITION = 0x00000001;
+pub const CM_ADD_ID_HARDWARE: ULONG = 0x00000000;
+pub const CM_ADD_ID_COMPATIBLE: ULONG = 0x00000001;
+pub const CM_ADD_ID_BITS: ULONG = 0x00000001;
+pub const CM_CREATE_DEVNODE_NORMAL: ULONG = 0x00000000;
+pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL: ULONG = 0x00000001;
+pub const CM_CREATE_DEVNODE_PHANTOM: ULONG = 0x00000002;
+pub const CM_CREATE_DEVNODE_GENERATE_ID: ULONG = 0x00000004;
+pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL: ULONG = 0x00000008;
+pub const CM_CREATE_DEVNODE_BITS: ULONG = 0x0000000F;
+pub const CM_CREATE_DEVINST_NORMAL: ULONG = CM_CREATE_DEVNODE_NORMAL;
+pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL: ULONG = CM_CREATE_DEVNODE_NO_WAIT_INSTALL;
+pub const CM_CREATE_DEVINST_PHANTOM: ULONG = CM_CREATE_DEVNODE_PHANTOM;
+pub const CM_CREATE_DEVINST_GENERATE_ID: ULONG = CM_CREATE_DEVNODE_GENERATE_ID;
+pub const CM_CREATE_DEVINST_DO_NOT_INSTALL: ULONG = CM_CREATE_DEVNODE_DO_NOT_INSTALL;
+pub const CM_CREATE_DEVINST_BITS: ULONG = CM_CREATE_DEVNODE_BITS;
+pub const CM_DELETE_CLASS_ONLY: ULONG = 0x00000000;
+pub const CM_DELETE_CLASS_SUBKEYS: ULONG = 0x00000001;
+pub const CM_DELETE_CLASS_INTERFACE: ULONG = 0x00000002;
+pub const CM_DELETE_CLASS_BITS: ULONG = 0x00000003;
+pub const CM_ENUMERATE_CLASSES_INSTALLER: ULONG = 0x00000000;
+pub const CM_ENUMERATE_CLASSES_INTERFACE: ULONG = 0x00000001;
+pub const CM_ENUMERATE_CLASSES_BITS: ULONG = 0x00000001;
+pub const CM_DETECT_NEW_PROFILE: ULONG = 0x00000001;
+pub const CM_DETECT_CRASHED: ULONG = 0x00000002;
+pub const CM_DETECT_HWPROF_FIRST_BOOT: ULONG = 0x00000004;
+pub const CM_DETECT_RUN: ULONG = 0x80000000;
+pub const CM_DETECT_BITS: ULONG = 0x80000007;
+pub const CM_DISABLE_POLITE: ULONG = 0x00000000;
+pub const CM_DISABLE_ABSOLUTE: ULONG = 0x00000001;
+pub const CM_DISABLE_HARDWARE: ULONG = 0x00000002;
+pub const CM_DISABLE_UI_NOT_OK: ULONG = 0x00000004;
+pub const CM_DISABLE_BITS: ULONG = 0x00000007;
+pub const CM_GETIDLIST_FILTER_NONE: ULONG = 0x00000000;
+pub const CM_GETIDLIST_FILTER_ENUMERATOR: ULONG = 0x00000001;
+pub const CM_GETIDLIST_FILTER_SERVICE: ULONG = 0x00000002;
+pub const CM_GETIDLIST_FILTER_EJECTRELATIONS: ULONG = 0x00000004;
+pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS: ULONG = 0x00000008;
+pub const CM_GETIDLIST_FILTER_POWERRELATIONS: ULONG = 0x00000010;
+pub const CM_GETIDLIST_FILTER_BUSRELATIONS: ULONG = 0x00000020;
+pub const CM_GETIDLIST_DONOTGENERATE: ULONG = 0x10000040;
+pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: ULONG = 0x00000080;
+pub const CM_GETIDLIST_FILTER_PRESENT: ULONG = 0x00000100;
+pub const CM_GETIDLIST_FILTER_CLASS: ULONG = 0x00000200;
+pub const CM_GETIDLIST_FILTER_BITS: ULONG = 0x100003FF;
+pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT: ULONG = 0x00000000;
+pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES: ULONG = 0x00000001;
+pub const CM_GET_DEVICE_INTERFACE_LIST_BITS: ULONG = 0x00000001;
+pub const CM_DRP_DEVICEDESC: ULONG = 0x00000001;
+pub const CM_DRP_HARDWAREID: ULONG = 0x00000002;
+pub const CM_DRP_COMPATIBLEIDS: ULONG = 0x00000003;
+pub const CM_DRP_UNUSED0: ULONG = 0x00000004;
+pub const CM_DRP_SERVICE: ULONG = 0x00000005;
+pub const CM_DRP_UNUSED1: ULONG = 0x00000006;
+pub const CM_DRP_UNUSED2: ULONG = 0x00000007;
+pub const CM_DRP_CLASS: ULONG = 0x00000008;
+pub const CM_DRP_CLASSGUID: ULONG = 0x00000009;
+pub const CM_DRP_DRIVER: ULONG = 0x0000000A;
+pub const CM_DRP_CONFIGFLAGS: ULONG = 0x0000000B;
+pub const CM_DRP_MFG: ULONG = 0x0000000C;
+pub const CM_DRP_FRIENDLYNAME: ULONG = 0x0000000D;
+pub const CM_DRP_LOCATION_INFORMATION: ULONG = 0x0000000E;
+pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME: ULONG = 0x0000000F;
+pub const CM_DRP_CAPABILITIES: ULONG = 0x00000010;
+pub const CM_DRP_UI_NUMBER: ULONG = 0x00000011;
+pub const CM_DRP_UPPERFILTERS: ULONG = 0x00000012;
+pub const CM_CRP_UPPERFILTERS: ULONG = CM_DRP_UPPERFILTERS;
+pub const CM_DRP_LOWERFILTERS: ULONG = 0x00000013;
+pub const CM_CRP_LOWERFILTERS: ULONG = CM_DRP_LOWERFILTERS;
+pub const CM_DRP_BUSTYPEGUID: ULONG = 0x00000014;
+pub const CM_DRP_LEGACYBUSTYPE: ULONG = 0x00000015;
+pub const CM_DRP_BUSNUMBER: ULONG = 0x00000016;
+pub const CM_DRP_ENUMERATOR_NAME: ULONG = 0x00000017;
+pub const CM_DRP_SECURITY: ULONG = 0x00000018;
+pub const CM_CRP_SECURITY: ULONG = CM_DRP_SECURITY;
+pub const CM_DRP_SECURITY_SDS: ULONG = 0x00000019;
+pub const CM_CRP_SECURITY_SDS: ULONG = CM_DRP_SECURITY_SDS;
+pub const CM_DRP_DEVTYPE: ULONG = 0x0000001A;
+pub const CM_CRP_DEVTYPE: ULONG = CM_DRP_DEVTYPE;
+pub const CM_DRP_EXCLUSIVE: ULONG = 0x0000001B;
+pub const CM_CRP_EXCLUSIVE: ULONG = CM_DRP_EXCLUSIVE;
+pub const CM_DRP_CHARACTERISTICS: ULONG = 0x0000001C;
+pub const CM_CRP_CHARACTERISTICS: ULONG = CM_DRP_CHARACTERISTICS;
+pub const CM_DRP_ADDRESS: ULONG = 0x0000001D;
+pub const CM_DRP_UI_NUMBER_DESC_FORMAT: ULONG = 0x0000001E;
+pub const CM_DRP_DEVICE_POWER_DATA: ULONG = 0x0000001F;
+pub const CM_DRP_REMOVAL_POLICY: ULONG = 0x00000020;
+pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT: ULONG = 0x00000021;
+pub const CM_DRP_REMOVAL_POLICY_OVERRIDE: ULONG = 0x00000022;
+pub const CM_DRP_INSTALL_STATE: ULONG = 0x00000023;
+pub const CM_DRP_LOCATION_PATHS: ULONG = 0x00000024;
+pub const CM_DRP_BASE_CONTAINERID: ULONG = 0x00000025;
+pub const CM_DRP_MIN: ULONG = 0x00000001;
+pub const CM_CRP_MIN: ULONG = CM_DRP_MIN;
+pub const CM_DRP_MAX: ULONG = 0x00000025;
+pub const CM_CRP_MAX: ULONG = CM_DRP_MAX;
+pub const CM_DEVCAP_LOCKSUPPORTED: ULONG = 0x00000001;
+pub const CM_DEVCAP_EJECTSUPPORTED: ULONG = 0x00000002;
+pub const CM_DEVCAP_REMOVABLE: ULONG = 0x00000004;
+pub const CM_DEVCAP_DOCKDEVICE: ULONG = 0x00000008;
+pub const CM_DEVCAP_UNIQUEID: ULONG = 0x00000010;
+pub const CM_DEVCAP_SILENTINSTALL: ULONG = 0x00000020;
+pub const CM_DEVCAP_RAWDEVICEOK: ULONG = 0x00000040;
+pub const CM_DEVCAP_SURPRISEREMOVALOK: ULONG = 0x00000080;
+pub const CM_DEVCAP_HARDWAREDISABLED: ULONG = 0x00000100;
+pub const CM_DEVCAP_NONDYNAMIC: ULONG = 0x00000200;
+pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL: ULONG = 1;
+pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL: ULONG = 2;
+pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL: ULONG = 3;
+pub const CM_INSTALL_STATE_INSTALLED: ULONG = 0;
+pub const CM_INSTALL_STATE_NEEDS_REINSTALL: ULONG = 1;
+pub const CM_INSTALL_STATE_FAILED_INSTALL: ULONG = 2;
+pub const CM_INSTALL_STATE_FINISH_INSTALL: ULONG = 3;
+pub const CM_LOCATE_DEVNODE_NORMAL: ULONG = 0x00000000;
+pub const CM_LOCATE_DEVNODE_PHANTOM: ULONG = 0x00000001;
+pub const CM_LOCATE_DEVNODE_CANCELREMOVE: ULONG = 0x00000002;
+pub const CM_LOCATE_DEVNODE_NOVALIDATION: ULONG = 0x00000004;
+pub const CM_LOCATE_DEVNODE_BITS: ULONG = 0x00000007;
+pub const CM_LOCATE_DEVINST_NORMAL: ULONG = CM_LOCATE_DEVNODE_NORMAL;
+pub const CM_LOCATE_DEVINST_PHANTOM: ULONG = CM_LOCATE_DEVNODE_PHANTOM;
+pub const CM_LOCATE_DEVINST_CANCELREMOVE: ULONG = CM_LOCATE_DEVNODE_CANCELREMOVE;
+pub const CM_LOCATE_DEVINST_NOVALIDATION: ULONG = CM_LOCATE_DEVNODE_NOVALIDATION;
+pub const CM_LOCATE_DEVINST_BITS: ULONG = CM_LOCATE_DEVNODE_BITS;
+pub const CM_OPEN_CLASS_KEY_INSTALLER: ULONG = 0x00000000;
+pub const CM_OPEN_CLASS_KEY_INTERFACE: ULONG = 0x00000001;
+pub const CM_OPEN_CLASS_KEY_BITS: ULONG = 0x00000001;
+pub const CM_REMOVE_UI_OK: ULONG = 0x00000000;
+pub const CM_REMOVE_UI_NOT_OK: ULONG = 0x00000001;
+pub const CM_REMOVE_NO_RESTART: ULONG = 0x00000002;
+pub const CM_REMOVE_BITS: ULONG = 0x00000003;
+pub const CM_QUERY_REMOVE_UI_OK: ULONG = CM_REMOVE_UI_OK;
+pub const CM_QUERY_REMOVE_UI_NOT_OK: ULONG = CM_REMOVE_UI_NOT_OK;
+pub const CM_QUERY_REMOVE_BITS: ULONG = CM_QUERY_REMOVE_UI_OK | CM_QUERY_REMOVE_UI_NOT_OK;
+pub const CM_REENUMERATE_NORMAL: ULONG = 0x00000000;
+pub const CM_REENUMERATE_SYNCHRONOUS: ULONG = 0x00000001;
+pub const CM_REENUMERATE_RETRY_INSTALLATION: ULONG = 0x00000002;
+pub const CM_REENUMERATE_ASYNCHRONOUS: ULONG = 0x00000004;
+pub const CM_REENUMERATE_BITS: ULONG = 0x00000007;
+pub const CM_REGISTER_DEVICE_DRIVER_STATIC: ULONG = 0x00000000;
+pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE: ULONG = 0x00000001;
+pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE: ULONG = 0x00000002;
+pub const CM_REGISTER_DEVICE_DRIVER_BITS: ULONG = 0x00000003;
+pub const CM_REGISTRY_HARDWARE: ULONG = 0x00000000;
+pub const CM_REGISTRY_SOFTWARE: ULONG = 0x00000001;
+pub const CM_REGISTRY_USER: ULONG = 0x00000100;
+pub const CM_REGISTRY_CONFIG: ULONG = 0x00000200;
+pub const CM_REGISTRY_BITS: ULONG = 0x00000301;
+pub const CM_SET_DEVNODE_PROBLEM_NORMAL: ULONG = 0x00000000;
+pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE: ULONG = 0x00000001;
+pub const CM_SET_DEVNODE_PROBLEM_BITS: ULONG = 0x00000001;
+pub const CM_SET_DEVINST_PROBLEM_NORMAL: ULONG = CM_SET_DEVNODE_PROBLEM_NORMAL;
+pub const CM_SET_DEVINST_PROBLEM_OVERRIDE: ULONG = CM_SET_DEVNODE_PROBLEM_OVERRIDE;
+pub const CM_SET_DEVINST_PROBLEM_BITS: ULONG = CM_SET_DEVNODE_PROBLEM_BITS;
+pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK: ULONG = 0x00000001;
+pub const CM_SET_HW_PROF_FLAGS_BITS: ULONG = 0x00000001;
+pub const CM_SETUP_DEVNODE_READY: ULONG = 0x00000000;
+pub const CM_SETUP_DEVINST_READY: ULONG = CM_SETUP_DEVNODE_READY;
+pub const CM_SETUP_DOWNLOAD: ULONG = 0x00000001;
+pub const CM_SETUP_WRITE_LOG_CONFS: ULONG = 0x00000002;
+pub const CM_SETUP_PROP_CHANGE: ULONG = 0x00000003;
+pub const CM_SETUP_DEVNODE_RESET: ULONG = 0x00000004;
+pub const CM_SETUP_DEVINST_RESET: ULONG = CM_SETUP_DEVNODE_RESET;
+pub const CM_SETUP_DEVNODE_CONFIG: ULONG = 0x00000005;
+pub const CM_SETUP_DEVINST_CONFIG: ULONG = CM_SETUP_DEVNODE_CONFIG;
+pub const CM_SETUP_DEVNODE_CONFIG_CLASS: ULONG = 0x00000006;
+pub const CM_SETUP_DEVINST_CONFIG_CLASS: ULONG = CM_SETUP_DEVNODE_CONFIG_CLASS;
+pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS: ULONG = 0x00000007;
+pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS: ULONG = CM_SETUP_DEVNODE_CONFIG_EXTENSIONS;
+pub const CM_SETUP_BITS: ULONG = 0x00000007;
+pub const CM_QUERY_ARBITRATOR_RAW: ULONG = 0x00000000;
+pub const CM_QUERY_ARBITRATOR_TRANSLATED: ULONG = 0x00000001;
+pub const CM_QUERY_ARBITRATOR_BITS: ULONG = 0x00000001;
+pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ: ULONG = 0x00000001;
+pub const CM_CUSTOMDEVPROP_BITS: ULONG = 0x00000001;
+pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE: ULONG = 0x1;
+pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME: ULONG = 0x2;
+pub const CM_CLASS_PROPERTY_INSTALLER: ULONG = 0x00000000;
+pub const CM_CLASS_PROPERTY_INTERFACE: ULONG = 0x00000001;
+pub const CM_CLASS_PROPERTY_BITS: ULONG = 0x00000001;
+DECLARE_HANDLE!{HCMNOTIFICATION, HCMNOTIFICATION__}
+pub type PHCMNOTIFICATION = *mut HCMNOTIFICATION;
+pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES: ULONG = 0x00000001;
+pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES: ULONG = 0x00000002;
+pub const CM_NOTIFY_FILTER_VALID_FLAGS: ULONG = CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES
+ | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES;
+ENUM!{enum CM_NOTIFY_FILTER_TYPE {
+ CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
+ CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
+ CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
+ CM_NOTIFY_FILTER_TYPE_MAX,
+}}
+pub type PCM_NOTIFY_FILTER_TYPE = *mut CM_NOTIFY_FILTER_TYPE;
+STRUCT!{struct CM_NOTIFY_FILTER_DeviceInterface {
+ ClassGuid: GUID,
+}}
+STRUCT!{struct CM_NOTIFY_FILTER_DeviceHandle {
+ hTarget: HANDLE,
+}}
+STRUCT!{struct CM_NOTIFY_FILTER_DeviceInstance {
+ InstanceId: [WCHAR; MAX_DEVICE_ID_LEN],
+}}
+UNION!{union CM_NOTIFY_FILTER_u {
+ [u32; 100] [u64; 50],
+ DeviceInterface DeviceInterface_mut: CM_NOTIFY_FILTER_DeviceInterface,
+ DeviceHandle DeviceHandle_mut: CM_NOTIFY_FILTER_DeviceHandle,
+ DeviceInstance DeviceInstance_mut: CM_NOTIFY_FILTER_DeviceInstance,
+}}
+STRUCT!{struct CM_NOTIFY_FILTER {
+ cbSize: DWORD,
+ Flags: DWORD,
+ FilterType: CM_NOTIFY_FILTER_TYPE,
+ Reserved: DWORD,
+ u: CM_NOTIFY_FILTER_u,
+}}
+pub type PCM_NOTIFY_FILTER = *mut CM_NOTIFY_FILTER;
+ENUM!{enum CM_NOTIFY_ACTION {
+ CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
+ CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
+ CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
+ CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
+ CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
+ CM_NOTIFY_ACTION_MAX,
+}}
+pub type PCM_NOTIFY_ACTION = *mut CM_NOTIFY_ACTION;
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInterface {
+ ClassGuid: GUID,
+ SymbolicLink: [WCHAR; ANYSIZE_ARRAY],
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceHandle {
+ EventGuid: GUID,
+ NameOffset: LONG,
+ DataSize: DWORD,
+ Data: [BYTE; ANYSIZE_ARRAY],
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInstance {
+ InstanceId: [WCHAR; ANYSIZE_ARRAY],
+}}
+UNION!{union CM_NOTIFY_EVENT_DATA_u {
+ [u32; 7],
+ DeviceInterface DeviceInterface_mut: CM_NOTIFY_EVENT_DATA_DeviceInterface,
+ DeviceHandle DeviceHandle_mut: CM_NOTIFY_EVENT_DATA_DeviceHandle,
+ DeviceInstance DeviceInstance_mut: CM_NOTIFY_EVENT_DATA_DeviceInstance,
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA {
+ FilterType: CM_NOTIFY_FILTER_TYPE,
+ Reserved: DWORD,
+ u: CM_NOTIFY_EVENT_DATA_u,
+}}
+pub type PCM_NOTIFY_EVENT_DATA = *mut CM_NOTIFY_EVENT_DATA;
+FN!{stdcall PCM_NOTIFY_CALLBACK(
+ hNotify: HCMNOTIFICATION,
+ Context: PVOID,
+ Action: CM_NOTIFY_ACTION,
+ EventData: PCM_NOTIFY_EVENT_DATA,
+ EventDataSize: DWORD,
+) -> DWORD}
+extern "system" {
+ pub fn CM_Add_Empty_Log_Conf(
+ plcLogConf: PLOG_CONF,
+ dnDevInst: DEVINST,
+ Priority: PRIORITY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Add_Empty_Log_Conf_Ex(
+ plcLogConf: PLOG_CONF,
+ dnDevInst: DEVINST,
+ Priority: PRIORITY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Add_IDA(
+ dnDevInst: DEVINST,
+ pszID: PSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Add_IDW(
+ dnDevInst: DEVINST,
+ pszID: PWSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Add_ID_ExA(
+ dnDevInst: DEVINST,
+ pszID: PSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Add_ID_ExW(
+ dnDevInst: DEVINST,
+ pszID: PWSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Add_Range(
+ ullStartValue: DWORDLONG,
+ ullEndValue: DWORDLONG,
+ rlh: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Add_Res_Des(
+ prdResDes: PRES_DES,
+ lcLogConf: LOG_CONF,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Add_Res_Des_Ex(
+ prdResDes: PRES_DES,
+ lcLogConf: LOG_CONF,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Connect_MachineA(
+ UNCServerName: PCSTR,
+ phMachine: PHMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Connect_MachineW(
+ UNCServerName: PCWSTR,
+ phMachine: PHMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Create_DevNodeA(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_A,
+ dnParent: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Create_DevNodeW(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_W,
+ dnParent: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Create_DevNode_ExA(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_A,
+ dnParent: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Create_DevNode_ExW(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_W,
+ dnParent: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Create_Range_List(
+ prlh: PRANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Class_Key(
+ ClassGuid: LPGUID,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Class_Key_Ex(
+ ClassGuid: LPGUID,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_DevNode_Key(
+ dnDevNode: DEVNODE,
+ ulHardwareProfile: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_DevNode_Key_Ex(
+ dnDevNode: DEVNODE,
+ ulHardwareProfile: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Range(
+ ullStartValue: DWORDLONG,
+ ullEndValue: DWORDLONG,
+ rlh: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Detect_Resource_Conflict(
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ pbConflictDetected: PBOOL,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Detect_Resource_Conflict_Ex(
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ pbConflictDetected: PBOOL,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Disable_DevNode(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Disable_DevNode_Ex(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Disconnect_Machine(
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Dup_Range_List(
+ rlhOld: RANGE_LIST,
+ rlhNew: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Enable_DevNode(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Enable_DevNode_Ex(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_Classes(
+ ulClassIndex: ULONG,
+ ClassGuid: LPGUID,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_Classes_Ex(
+ ulClassIndex: ULONG,
+ ClassGuid: LPGUID,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_EnumeratorsA(
+ ulEnumIndex: ULONG,
+ Buffer: PSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_EnumeratorsW(
+ ulEnumIndex: ULONG,
+ Buffer: PWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_Enumerators_ExA(
+ ulEnumIndex: ULONG,
+ Buffer: PSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Enumerate_Enumerators_ExW(
+ ulEnumIndex: ULONG,
+ Buffer: PWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Find_Range(
+ pullStart: PDWORDLONG,
+ ullStart: DWORDLONG,
+ ulLength: ULONG,
+ ullAlignment: DWORDLONG,
+ ullEnd: DWORDLONG,
+ rlh: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_First_Range(
+ rlh: RANGE_LIST,
+ pullStart: PDWORDLONG,
+ pullEnd: PDWORDLONG,
+ preElement: PRANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Log_Conf(
+ lcLogConfToBeFreed: LOG_CONF,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Log_Conf_Ex(
+ lcLogConfToBeFreed: LOG_CONF,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Log_Conf_Handle(
+ lcLogConf: LOG_CONF,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Range_List(
+ rlh: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Res_Des(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Res_Des_Ex(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Res_Des_Handle(
+ rdResDes: RES_DES,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Child(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Child_Ex(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Key_NameA(
+ ClassGuid: LPGUID,
+ pszKeyName: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Key_NameW(
+ ClassGuid: LPGUID,
+ pszKeyName: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Key_Name_ExA(
+ ClassGuid: LPGUID,
+ pszKeyName: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Key_Name_ExW(
+ ClassGuid: LPGUID,
+ pszKeyName: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_NameA(
+ ClassGuid: LPGUID,
+ Buffer: PSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_NameW(
+ ClassGuid: LPGUID,
+ Buffer: PWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Name_ExA(
+ ClassGuid: LPGUID,
+ Buffer: PSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Name_ExW(
+ ClassGuid: LPGUID,
+ Buffer: PWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Depth(
+ pulDepth: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Depth_Ex(
+ pulDepth: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_IDA(
+ dnDevInst: DEVINST,
+ Buffer: PSTR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_IDW(
+ dnDevInst: DEVINST,
+ Buffer: PWSTR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_ExA(
+ dnDevInst: DEVINST,
+ Buffer: PSTR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_ExW(
+ dnDevInst: DEVINST,
+ Buffer: PWSTR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_ListA(
+ pszFilter: PCSTR,
+ Buffer: PCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_ListW(
+ pszFilter: PCWSTR,
+ Buffer: PWCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_ExA(
+ pszFilter: PCSTR,
+ Buffer: PCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_ExW(
+ pszFilter: PCWSTR,
+ Buffer: PWCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_SizeA(
+ pulLen: PULONG,
+ pszFilter: PCSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_SizeW(
+ pulLen: PULONG,
+ pszFilter: PCWSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_Size_ExA(
+ pulLen: PULONG,
+ pszFilter: PCSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_List_Size_ExW(
+ pulLen: PULONG,
+ pszFilter: PCWSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_Size(
+ pulLen: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_ID_Size_Ex(
+ pulLen: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_PropertyW(
+ dnDevInst: DEVINST,
+ PropertyKey: *const DEVPROPKEY,
+ PropertyType: *mut DEVPROPTYPE,
+ PropertyBuffer: PBYTE,
+ PropertyBufferSize: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_PropertyExW(
+ dnDevInst: DEVINST,
+ PropertyKey: *const DEVPROPKEY,
+ PropertyType: *mut DEVPROPTYPE,
+ PropertyBuffer: PBYTE,
+ PropertyBufferSize: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Registry_PropertyA(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Registry_PropertyW(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Registry_Property_ExA(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Registry_Property_ExW(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Custom_PropertyA(
+ dnDevInst: DEVINST,
+ pszCustomPropertyName: PCSTR,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Custom_PropertyW(
+ dnDevInst: DEVINST,
+ pszCustomPropertyName: PCWSTR,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Custom_Property_ExA(
+ dnDevInst: DEVINST,
+ pszCustomPropertyName: PCSTR,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Custom_Property_ExW(
+ dnDevInst: DEVINST,
+ pszCustomPropertyName: PCWSTR,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Status(
+ pulStatus: PULONG,
+ pulProblemNumber: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_DevNode_Status_Ex(
+ pulStatus: PULONG,
+ pulProblemNumber: PULONG,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_First_Log_Conf(
+ plcLogConf: PLOG_CONF,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_First_Log_Conf_Ex(
+ plcLogConf: PLOG_CONF,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Global_State(
+ pulState: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Global_State_Ex(
+ pulState: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Hardware_Profile_InfoA(
+ ulIndex: ULONG,
+ pHWProfileInfo: PHWPROFILEINFO_A,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Hardware_Profile_Info_ExA(
+ ulIndex: ULONG,
+ pHWProfileInfo: PHWPROFILEINFO_A,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Hardware_Profile_InfoW(
+ ulIndex: ULONG,
+ pHWProfileInfo: PHWPROFILEINFO_W,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Hardware_Profile_Info_ExW(
+ ulIndex: ULONG,
+ pHWProfileInfo: PHWPROFILEINFO_W,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_HW_Prof_FlagsA(
+ pDeviceID: DEVINSTID_A,
+ ulHardwareProfile: ULONG,
+ pulValue: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_HW_Prof_FlagsW(
+ pDeviceID: DEVINSTID_W,
+ ulHardwareProfile: ULONG,
+ pulValue: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_HW_Prof_Flags_ExA(
+ pDeviceID: DEVINSTID_A,
+ ulHardwareProfile: ULONG,
+ pulValue: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_HW_Prof_Flags_ExW(
+ pDeviceID: DEVINSTID_W,
+ ulHardwareProfile: ULONG,
+ pulValue: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_AliasA(
+ pszDeviceInterface: LPCSTR,
+ AliasInterfaceGuid: LPGUID,
+ pszAliasDeviceInterface: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_AliasW(
+ pszDeviceInterface: LPCWSTR,
+ AliasInterfaceGuid: LPGUID,
+ pszAliasDeviceInterface: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_Alias_ExA(
+ pszDeviceInterface: LPCSTR,
+ AliasInterfaceGuid: LPGUID,
+ pszAliasDeviceInterface: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_Alias_ExW(
+ pszDeviceInterface: LPCWSTR,
+ AliasInterfaceGuid: LPGUID,
+ pszAliasDeviceInterface: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_ListA(
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_A,
+ Buffer: PCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_ListW(
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_W,
+ Buffer: PWCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_ExA(
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_A,
+ Buffer: PCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_ExW(
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_W,
+ Buffer: PWCHAR,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_SizeA(
+ pulLen: PULONG,
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_A,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_SizeW(
+ pulLen: PULONG,
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_W,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_Size_ExA(
+ pulLen: PULONG,
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_A,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_List_Size_ExW(
+ pulLen: PULONG,
+ InterfaceClassGuid: LPGUID,
+ pDeviceID: DEVINSTID_W,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_PropertyW(
+ pszDeviceInterface: LPCWSTR,
+ PropertyKey: *const DEVPROPKEY,
+ PropertyType: *mut DEVPROPTYPE,
+ PropertyBuffer: PBYTE,
+ PropertyBufferSize: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Device_Interface_PropertyExW(
+ pszDeviceInterface: LPCWSTR,
+ PropertyKey: *const DEVPROPKEY,
+ PropertyType: *mut DEVPROPTYPE,
+ PropertyBuffer: PBYTE,
+ PropertyBufferSize: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Log_Conf_Priority(
+ lcLogConf: LOG_CONF,
+ pPriority: PRIORITY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Log_Conf_Priority_Ex(
+ lcLogConf: LOG_CONF,
+ pPriority: PRIORITY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Next_Log_Conf(
+ plcLogConf: PLOG_CONF,
+ lcLogConf: LOG_CONF,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Next_Log_Conf_Ex(
+ plcLogConf: PLOG_CONF,
+ lcLogConf: LOG_CONF,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Parent(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Parent_Ex(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Res_Des_Data(
+ rdResDes: RES_DES,
+ Buffer: PVOID,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Res_Des_Data_Ex(
+ rdResDes: RES_DES,
+ Buffer: PVOID,
+ BufferLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Res_Des_Data_Size(
+ pulSize: PULONG,
+ rdResDes: RES_DES,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Res_Des_Data_Size_Ex(
+ pulSize: PULONG,
+ rdResDes: RES_DES,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Sibling(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Sibling_Ex(
+ pdnDevInst: PDEVINST,
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Version() -> WORD;
+ pub fn CM_Get_Version_Ex(
+ hMachine: HMACHINE,
+ ) -> WORD;
+ pub fn CM_Is_Version_Available(
+ wVersion: WORD,
+ ) -> BOOL;
+ pub fn CM_Is_Version_Available_Ex(
+ wVersion: WORD,
+ hMachine: HMACHINE,
+ ) -> BOOL;
+ pub fn CM_Intersect_Range_List(
+ rlhOld1: RANGE_LIST,
+ rlhOld2: RANGE_LIST,
+ rlhNew: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Invert_Range_List(
+ rlhOld: RANGE_LIST,
+ rlhNew: RANGE_LIST,
+ ullMaxValue: DWORDLONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Locate_DevNodeA(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_A,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Locate_DevNodeW(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_W,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Locate_DevNode_ExA(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_A,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Locate_DevNode_ExW(
+ pdnDevInst: PDEVINST,
+ pDeviceID: DEVINSTID_W,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Merge_Range_List(
+ rlhOld1: RANGE_LIST,
+ rlhOld2: RANGE_LIST,
+ rlhNew: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Modify_Res_Des(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Modify_Res_Des_Ex(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Move_DevNode(
+ dnFromDevInst: DEVINST,
+ dnToDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Move_DevNode_Ex(
+ dnFromDevInst: DEVINST,
+ dnToDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Next_Range(
+ preElement: PRANGE_LIST,
+ pullStart: PDWORDLONG,
+ pullEnd: PDWORDLONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Next_Res_Des(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ForResource: RESOURCEID,
+ pResourceID: PRESOURCEID,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Next_Res_Des_Ex(
+ prdResDes: PRES_DES,
+ rdResDes: RES_DES,
+ ForResource: RESOURCEID,
+ pResourceID: PRESOURCEID,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Class_KeyA(
+ ClassGuid: LPGUID,
+ pszClassName: LPCSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkClass: PHKEY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Class_KeyW(
+ ClassGuid: LPGUID,
+ pszClassName: LPCWSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkClass: PHKEY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Class_Key_ExA(
+ ClassGuid: LPGUID,
+ pszClassName: LPCSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkClass: PHKEY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Class_Key_ExW(
+ ClassGuid: LPGUID,
+ pszClassName: LPCWSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkClass: PHKEY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Open_DevNode_Key(
+ dnDevNode: DEVINST,
+ samDesired: REGSAM,
+ ulHardwareProfile: ULONG,
+ Disposition: REGDISPOSITION,
+ phkDevice: PHKEY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Open_DevNode_Key_Ex(
+ dnDevNode: DEVINST,
+ samDesired: REGSAM,
+ ulHardwareProfile: ULONG,
+ Disposition: REGDISPOSITION,
+ phkDevice: PHKEY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Device_Interface_KeyA(
+ pszDeviceInterface: LPCSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkDeviceInterface: PHKEY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Device_Interface_KeyW(
+ pszDeviceInterface: LPCWSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkDeviceInterface: PHKEY,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Device_Interface_Key_ExA(
+ pszDeviceInterface: LPCSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkDeviceInterface: PHKEY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Open_Device_Interface_Key_ExW(
+ pszDeviceInterface: LPCWSTR,
+ samDesired: REGSAM,
+ Disposition: REGDISPOSITION,
+ phkDeviceInterface: PHKEY,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Device_Interface_KeyA(
+ pszDeviceInterface: LPCSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Device_Interface_KeyW(
+ pszDeviceInterface: LPCWSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Device_Interface_Key_ExA(
+ pszDeviceInterface: LPCSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Delete_Device_Interface_Key_ExW(
+ pszDeviceInterface: LPCWSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Arbitrator_Free_Data(
+ pData: PVOID,
+ DataLen: ULONG,
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Arbitrator_Free_Data_Ex(
+ pData: PVOID,
+ DataLen: ULONG,
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Arbitrator_Free_Size(
+ pulSize: PULONG,
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Arbitrator_Free_Size_Ex(
+ pulSize: PULONG,
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Remove_SubTree(
+ dnAncestor: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Remove_SubTree_Ex(
+ dnAncestor: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_And_Remove_SubTreeA(
+ dnAncestor: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Query_And_Remove_SubTree_ExA(
+ dnAncestor: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_And_Remove_SubTreeW(
+ dnAncestor: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPWSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Query_And_Remove_SubTree_ExW(
+ dnAncestor: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPWSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Request_Device_EjectA(
+ dnDevInst: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Request_Device_Eject_ExA(
+ dnDevInst: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Request_Device_EjectW(
+ dnDevInst: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPWSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Request_Device_Eject_ExW(
+ dnDevInst: DEVINST,
+ pVetoType: PPNP_VETO_TYPE,
+ pszVetoName: LPWSTR,
+ ulNameLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Reenumerate_DevNode(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Reenumerate_DevNode_Ex(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_InterfaceA(
+ dnDevInst: DEVINST,
+ InterfaceClassGuid: LPGUID,
+ pszReference: LPCSTR,
+ pszDeviceInterface: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_InterfaceW(
+ dnDevInst: DEVINST,
+ InterfaceClassGuid: LPGUID,
+ pszReference: LPCWSTR,
+ pszDeviceInterface: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_Interface_ExA(
+ dnDevInst: DEVINST,
+ InterfaceClassGuid: LPGUID,
+ pszReference: LPCSTR,
+ pszDeviceInterface: LPSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_Interface_ExW(
+ dnDevInst: DEVINST,
+ InterfaceClassGuid: LPGUID,
+ pszReference: LPCWSTR,
+ pszDeviceInterface: LPWSTR,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Problem_Ex(
+ dnDevInst: DEVINST,
+ ulProblem: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Problem(
+ dnDevInst: DEVINST,
+ ulProblem: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Unregister_Device_InterfaceA(
+ pszDeviceInterface: LPCSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Unregister_Device_InterfaceW(
+ pszDeviceInterface: LPCWSTR,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Unregister_Device_Interface_ExA(
+ pszDeviceInterface: LPCSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Unregister_Device_Interface_ExW(
+ pszDeviceInterface: LPCWSTR,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_Driver(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Register_Device_Driver_Ex(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Remove_SubTree(
+ dnAncestor: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Remove_SubTree_Ex(
+ dnAncestor: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Registry_PropertyA(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Registry_PropertyW(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Registry_Property_ExA(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_DevNode_Registry_Property_ExW(
+ dnDevInst: DEVINST,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Is_Dock_Station_Present(
+ pbPresent: PBOOL,
+ ) -> CONFIGRET;
+ pub fn CM_Is_Dock_Station_Present_Ex(
+ pbPresent: PBOOL,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Request_Eject_PC() -> CONFIGRET;
+ pub fn CM_Request_Eject_PC_Ex(
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof_FlagsA(
+ pDeviceID: DEVINSTID_A,
+ ulConfig: ULONG,
+ ulValue: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof_FlagsW(
+ pDeviceID: DEVINSTID_W,
+ ulConfig: ULONG,
+ ulValue: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof_Flags_ExA(
+ pDeviceID: DEVINSTID_A,
+ ulConfig: ULONG,
+ ulValue: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof_Flags_ExW(
+ pDeviceID: DEVINSTID_A,
+ ulConfig: ULONG,
+ ulValue: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Setup_DevNode(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Setup_DevNode_Ex(
+ dnDevInst: DEVINST,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Test_Range_Available(
+ ullStartValue: DWORDLONG,
+ ullEndValue: DWORDLONG,
+ rlh: RANGE_LIST,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Uninstall_DevNode(
+ dnDevInst: DEVNODE,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Uninstall_DevNode_Ex(
+ dnDevInst: DEVNODE,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Run_Detection(
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Run_Detection_Ex(
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof(
+ ulHardwareProfile: ULONG,
+ ulFlags: ULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Set_HW_Prof_Ex(
+ ulHardwareProfile: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Query_Resource_Conflict_List(
+ pclConflictList: PCONFLICT_LIST,
+ dnDevInst: DEVINST,
+ ResourceID: RESOURCEID,
+ ResourceData: PCVOID,
+ ResourceLen: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Free_Resource_Conflict_Handle(
+ clConflictList: CONFLICT_LIST,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Resource_Conflict_Count(
+ clConflictList: CONFLICT_LIST,
+ pulCount: PULONG,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Resource_Conflict_DetailsA(
+ clConflictList: CONFLICT_LIST,
+ ulIndex: ULONG,
+ pConflictDetails: PCONFLICT_DETAILS_A,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Resource_Conflict_DetailsW(
+ clConflictList: CONFLICT_LIST,
+ ulIndex: ULONG,
+ pConflictDetails: PCONFLICT_DETAILS_W,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Registry_PropertyW(
+ ClassGuid: LPGUID,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_Class_Registry_PropertyW(
+ ClassGuid: LPGUID,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Get_Class_Registry_PropertyA(
+ ClassGuid: LPGUID,
+ ulProperty: ULONG,
+ pulRegDataType: PULONG,
+ Buffer: PVOID,
+ pulLength: PULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CM_Set_Class_Registry_PropertyA(
+ ClassGuid: LPGUID,
+ ulProperty: ULONG,
+ Buffer: PCVOID,
+ ulLength: ULONG,
+ ulFlags: ULONG,
+ hMachine: HMACHINE,
+ ) -> CONFIGRET;
+ pub fn CMP_WaitNoPendingInstallEvents(
+ dwTimeout: DWORD,
+ ) -> DWORD;
+}
+pub const CR_SUCCESS: CONFIGRET = 0x00000000;
+pub const CR_DEFAULT: CONFIGRET = 0x00000001;
+pub const CR_OUT_OF_MEMORY: CONFIGRET = 0x00000002;
+pub const CR_INVALID_POINTER: CONFIGRET = 0x00000003;
+pub const CR_INVALID_FLAG: CONFIGRET = 0x00000004;
+pub const CR_INVALID_DEVNODE: CONFIGRET = 0x00000005;
+pub const CR_INVALID_DEVINST: CONFIGRET = CR_INVALID_DEVNODE;
+pub const CR_INVALID_RES_DES: CONFIGRET = 0x00000006;
+pub const CR_INVALID_LOG_CONF: CONFIGRET = 0x00000007;
+pub const CR_INVALID_ARBITRATOR: CONFIGRET = 0x00000008;
+pub const CR_INVALID_NODELIST: CONFIGRET = 0x00000009;
+pub const CR_DEVNODE_HAS_REQS: CONFIGRET = 0x0000000A;
+pub const CR_DEVINST_HAS_REQS: CONFIGRET = CR_DEVNODE_HAS_REQS;
+pub const CR_INVALID_RESOURCEID: CONFIGRET = 0x0000000B;
+pub const CR_DLVXD_NOT_FOUND: CONFIGRET = 0x0000000C;
+pub const CR_NO_SUCH_DEVNODE: CONFIGRET = 0x0000000D;
+pub const CR_NO_SUCH_DEVINST: CONFIGRET = CR_NO_SUCH_DEVNODE;
+pub const CR_NO_MORE_LOG_CONF: CONFIGRET = 0x0000000E;
+pub const CR_NO_MORE_RES_DES: CONFIGRET = 0x0000000F;
+pub const CR_ALREADY_SUCH_DEVNODE: CONFIGRET = 0x00000010;
+pub const CR_ALREADY_SUCH_DEVINST: CONFIGRET = CR_ALREADY_SUCH_DEVNODE;
+pub const CR_INVALID_RANGE_LIST: CONFIGRET = 0x00000011;
+pub const CR_INVALID_RANGE: CONFIGRET = 0x00000012;
+pub const CR_FAILURE: CONFIGRET = 0x00000013;
+pub const CR_NO_SUCH_LOGICAL_DEV: CONFIGRET = 0x00000014;
+pub const CR_CREATE_BLOCKED: CONFIGRET = 0x00000015;
+pub const CR_NOT_SYSTEM_VM: CONFIGRET = 0x00000016;
+pub const CR_REMOVE_VETOED: CONFIGRET = 0x00000017;
+pub const CR_APM_VETOED: CONFIGRET = 0x00000018;
+pub const CR_INVALID_LOAD_TYPE: CONFIGRET = 0x00000019;
+pub const CR_BUFFER_SMALL: CONFIGRET = 0x0000001A;
+pub const CR_NO_ARBITRATOR: CONFIGRET = 0x0000001B;
+pub const CR_NO_REGISTRY_HANDLE: CONFIGRET = 0x0000001C;
+pub const CR_REGISTRY_ERROR: CONFIGRET = 0x0000001D;
+pub const CR_INVALID_DEVICE_ID: CONFIGRET = 0x0000001E;
+pub const CR_INVALID_DATA: CONFIGRET = 0x0000001F;
+pub const CR_INVALID_API: CONFIGRET = 0x00000020;
+pub const CR_DEVLOADER_NOT_READY: CONFIGRET = 0x00000021;
+pub const CR_NEED_RESTART: CONFIGRET = 0x00000022;
+pub const CR_NO_MORE_HW_PROFILES: CONFIGRET = 0x00000023;
+pub const CR_DEVICE_NOT_THERE: CONFIGRET = 0x00000024;
+pub const CR_NO_SUCH_VALUE: CONFIGRET = 0x00000025;
+pub const CR_WRONG_TYPE: CONFIGRET = 0x00000026;
+pub const CR_INVALID_PRIORITY: CONFIGRET = 0x00000027;
+pub const CR_NOT_DISABLEABLE: CONFIGRET = 0x00000028;
+pub const CR_FREE_RESOURCES: CONFIGRET = 0x00000029;
+pub const CR_QUERY_VETOED: CONFIGRET = 0x0000002A;
+pub const CR_CANT_SHARE_IRQ: CONFIGRET = 0x0000002B;
+pub const CR_NO_DEPENDENT: CONFIGRET = 0x0000002C;
+pub const CR_SAME_RESOURCES: CONFIGRET = 0x0000002D;
+pub const CR_NO_SUCH_REGISTRY_KEY: CONFIGRET = 0x0000002E;
+pub const CR_INVALID_MACHINENAME: CONFIGRET = 0x0000002F;
+pub const CR_REMOTE_COMM_FAILURE: CONFIGRET = 0x00000030;
+pub const CR_MACHINE_UNAVAILABLE: CONFIGRET = 0x00000031;
+pub const CR_NO_CM_SERVICES: CONFIGRET = 0x00000032;
+pub const CR_ACCESS_DENIED: CONFIGRET = 0x00000033;
+pub const CR_CALL_NOT_IMPLEMENTED: CONFIGRET = 0x00000034;
+pub const CR_INVALID_PROPERTY: CONFIGRET = 0x00000035;
+pub const CR_DEVICE_INTERFACE_ACTIVE: CONFIGRET = 0x00000036;
+pub const CR_NO_SUCH_DEVICE_INTERFACE: CONFIGRET = 0x00000037;
+pub const CR_INVALID_REFERENCE_STRING: CONFIGRET = 0x00000038;
+pub const CR_INVALID_CONFLICT_LIST: CONFIGRET = 0x00000039;
+pub const CR_INVALID_INDEX: CONFIGRET = 0x0000003A;
+pub const CR_INVALID_STRUCTURE_SIZE: CONFIGRET = 0x0000003B;
+pub const NUM_CR_RESULTS: CONFIGRET = 0x0000003C;