// Licensed under the Apache License, Version 2.0 // or the MIT license // , 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;