1 // Copyright © 2015, skdltmxn 2 // Licensed under the MIT License <LICENSE.md> 3 //! user APIs for the Configuration Manager 4 pub type PCVOID = *const ::VOID; 5 pub const MAX_DEVICE_ID_LEN: usize = 200; 6 pub const MAX_DEVNODE_ID_LEN: usize = MAX_DEVICE_ID_LEN; 7 pub const MAX_GUID_STRING_LEN: usize = 39; 8 pub const MAX_CLASS_NAME_LEN: usize = 32; 9 pub const MAX_PROFILE_LEN: usize = 80; 10 pub const MAX_CONFIG_VALUE: ::DWORD = 9999; 11 pub const MAX_INSTANCE_VALUE: ::DWORD = 9999; 12 pub const MAX_MEM_REGISTERS: ::DWORD = 9; 13 pub const MAX_IO_PORTS: ::DWORD = 20; 14 pub const MAX_IRQS: ::DWORD = 7; 15 pub const MAX_DMA_CHANNELS: ::DWORD = 7; 16 pub const DWORD_MAX: ::DWORD = 0xffffffff; 17 pub const DWORDLONG_MAX: ::DWORDLONG = 0xffffffffffffffff; 18 pub const CONFIGMG_VERSION: ::DWORD = 0x0400; 19 pub type RETURN_TYPE = ::DWORD; 20 pub type CONFIGRET = RETURN_TYPE; 21 pub type DEVNODE = ::DWORD; 22 pub type DEVINST = ::DWORD; 23 pub type PDEVNODE = *mut DEVNODE; 24 pub type PDEVINST = *mut DEVNODE; 25 pub type DEVNODEID_A = *mut ::CHAR; 26 pub type DEVINSTID_A = *mut ::CHAR; 27 pub type DEVNODEID_W = *mut ::WCHAR; 28 pub type DEVINSTID_W = *mut ::WCHAR; 29 pub type LOG_CONF = ::DWORD_PTR; 30 pub type PLOG_CONF = *mut LOG_CONF; 31 pub type RES_DES = ::DWORD_PTR; 32 pub type PRES_DES = *mut RES_DES; 33 pub type RESOURCEID = ::ULONG; 34 pub type PRESOURCEID = *mut RESOURCEID; 35 pub type PRIORITY = ::ULONG; 36 pub type PPRIORITY = *mut PRIORITY; 37 pub type RANGE_LIST = ::DWORD_PTR; 38 pub type PRANGE_LIST = *mut RANGE_LIST; 39 pub type RANGE_ELEMENT = ::DWORD_PTR; 40 pub type PRANGE_ELEMENT = *mut RANGE_ELEMENT; 41 pub type HMACHINE = ::HANDLE; 42 pub type PHMACHINE = *mut HMACHINE; 43 pub type CONFLICT_LIST = ::ULONG_PTR; 44 pub type PCONFLICT_LIST = *mut CONFLICT_LIST; 45 STRUCT!{nodebug struct CONFLICT_DETAILS_A { 46 CD_ulSize: ::ULONG, 47 CD_ulMask: ::ULONG, 48 CD_dnDevInst: DEVINST, 49 CD_rdResDes: RES_DES, 50 CD_ulFlags: ::ULONG, 51 CD_szDescription: [::CHAR; ::MAX_PATH], 52 }} 53 pub type PCONFLICT_DETAILS_A = *mut CONFLICT_DETAILS_A; 54 STRUCT!{nodebug struct CONFLICT_DETAILS_W { 55 CD_ulSize: ::ULONG, 56 CD_ulMask: ::ULONG, 57 CD_dnDevInst: DEVINST, 58 CD_rdResDes: RES_DES, 59 CD_ulFlags: ::ULONG, 60 CD_szDescription: [::WCHAR; ::MAX_PATH], 61 }} 62 pub type PCONFLICT_DETAILS_W = *mut CONFLICT_DETAILS_W; 63 pub const CM_CDMASK_DEVINST: ::ULONG = 0x00000001; 64 pub const CM_CDMASK_RESDES: ::ULONG = 0x00000002; 65 pub const CM_CDMASK_FLAGS: ::ULONG = 0x00000004; 66 pub const CM_CDMASK_DESCRIPTION: ::ULONG = 0x00000008; 67 pub const CM_CDMASK_VALID: ::ULONG = 0x0000000F; 68 pub const CM_CDFLAGS_DRIVER: ::ULONG = 0x00000001; 69 pub const CM_CDFLAGS_ROOT_OWNED: ::ULONG = 0x00000002; 70 pub const CM_CDFLAGS_RESERVED: ::ULONG = 0x00000004; 71 pub type REGDISPOSITION = ::ULONG; 72 pub const mMD_MemoryType: ::DWORD = 0x1; 73 pub const fMD_MemoryType: ::DWORD = mMD_MemoryType; 74 pub const fMD_ROM: ::DWORD = 0x0; 75 pub const fMD_RAM: ::DWORD = 0x1; 76 pub const mMD_32_24: ::DWORD = 0x2; 77 pub const fMD_32_24: ::DWORD = mMD_32_24; 78 pub const fMD_24: ::DWORD = 0x0; 79 pub const fMD_32: ::DWORD = 0x2; 80 pub const mMD_Prefetchable: ::DWORD = 0x4; 81 pub const fMD_Prefetchable: ::DWORD = mMD_Prefetchable; 82 pub const fMD_Pref: ::DWORD = mMD_Prefetchable; 83 pub const fMD_PrefetchDisallowed: ::DWORD = 0x0; 84 pub const fMD_PrefetchAllowed: ::DWORD = 0x4; 85 pub const mMD_Readable: ::DWORD = 0x8; 86 pub const fMD_Readable: ::DWORD = mMD_Readable; 87 pub const fMD_ReadAllowed: ::DWORD = 0x0; 88 pub const fMD_ReadDisallowed: ::DWORD = 0x8; 89 pub const mMD_CombinedWrite: ::DWORD = 0x10; 90 pub const fMD_CombinedWrite: ::DWORD = mMD_CombinedWrite; 91 pub const fMD_CombinedWriteDisallowed: ::DWORD = 0x0; 92 pub const fMD_CombinedWriteAllowed: ::DWORD = 0x10; 93 pub const mMD_Cacheable: ::DWORD = 0x20; 94 pub const fMD_NonCacheable: ::DWORD = 0x0; 95 pub const fMD_Cacheable: ::DWORD = 0x20; 96 pub const fMD_WINDOW_DECODE: ::DWORD = 0x40; 97 pub const fMD_MEMORY_BAR: ::DWORD = 0x80; 98 STRUCT!{struct MEM_RANGE { 99 MR_Align: ::DWORDLONG, 100 MR_nBytes: ::ULONG, 101 MR_Min: ::DWORDLONG, 102 MR_Max: ::DWORDLONG, 103 MR_Flags: ::DWORD, 104 MR_Reserved: ::DWORD, 105 }} 106 pub type PMEM_RANGE = *mut MEM_RANGE; 107 STRUCT!{struct MEM_DES { 108 MD_Count: ::DWORD, 109 MD_Type: ::DWORD, 110 MD_Alloc_Base: ::DWORDLONG, 111 MD_Alloc_End: ::DWORDLONG, 112 MD_Flags: ::DWORD, 113 MD_Reserved: ::DWORD, 114 }} 115 pub type PMEM_DES = *mut MEM_DES; 116 STRUCT!{struct MEM_RESOURCE { 117 MEM_Header: MEM_DES, 118 MEM_Data: [MEM_RANGE; ::ANYSIZE_ARRAY], 119 }} 120 pub type PMEM_RESOURCE = *mut MEM_RESOURCE; 121 STRUCT!{struct MEM_LARGE_RANGE { 122 MLR_Align: ::DWORDLONG, 123 MLR_nBytes: ::ULONGLONG, 124 MLR_Min: ::DWORDLONG, 125 MLR_Max: ::DWORDLONG, 126 MLR_Flags: ::DWORD, 127 MLR_Reserved: ::DWORD, 128 }} 129 pub type PMEM_LARGE_RANGE = *mut MEM_LARGE_RANGE; 130 STRUCT!{struct MEM_LARGE_DES { 131 MLD_Count: ::DWORD, 132 MLD_Type: ::DWORD, 133 MLD_Alloc_Base: ::DWORDLONG, 134 MLD_Alloc_End: ::DWORDLONG, 135 MLD_Flags: ::DWORD, 136 MLD_Reserved: ::DWORD, 137 }} 138 pub type PMEM_LARGE_DES = *mut MEM_LARGE_DES; 139 STRUCT!{struct MEM_LARGE_RESOURCE { 140 MEM_LARGE_Header: MEM_LARGE_DES, 141 MEM_LARGE_Data: [MEM_LARGE_RANGE; ::ANYSIZE_ARRAY], 142 }} 143 pub type PMEM_LARGE_RESOURCE = *mut MEM_LARGE_RESOURCE; 144 pub const fIOD_PortType: ::DWORD = 0x1; 145 pub const fIOD_Memory: ::DWORD = 0x0; 146 pub const fIOD_IO: ::DWORD = 0x1; 147 pub const fIOD_DECODE: ::DWORD = 0x00fc; 148 pub const fIOD_10_BIT_DECODE: ::DWORD = 0x0004; 149 pub const fIOD_12_BIT_DECODE: ::DWORD = 0x0008; 150 pub const fIOD_16_BIT_DECODE: ::DWORD = 0x0010; 151 pub const fIOD_POSITIVE_DECODE: ::DWORD = 0x0020; 152 pub const fIOD_PASSIVE_DECODE: ::DWORD = 0x0040; 153 pub const fIOD_WINDOW_DECODE: ::DWORD = 0x0080; 154 pub const fIOD_PORT_BAR: ::DWORD = 0x0100; 155 pub const IO_ALIAS_10_BIT_DECODE: ::DWORDLONG = 0x00000004; 156 pub const IO_ALIAS_12_BIT_DECODE: ::DWORDLONG = 0x00000010; 157 pub const IO_ALIAS_16_BIT_DECODE: ::DWORDLONG = 0x00000000; 158 pub const IO_ALIAS_POSITIVE_DECODE: ::DWORDLONG = 0x000000FF; 159 STRUCT!{struct IO_RANGE { 160 IOR_Align: ::DWORDLONG, 161 IOR_nPorts: ::DWORD, 162 IOR_Min: ::DWORDLONG, 163 IOR_Max: ::DWORDLONG, 164 IOR_RangeFlags: ::DWORD, 165 IOR_Alias: ::DWORDLONG, 166 }} 167 pub type PIO_RANGE = *mut IO_RANGE; 168 STRUCT!{struct IO_DES { 169 IOD_Count: ::DWORD, 170 IOD_Type: ::DWORD, 171 IOD_Alloc_Base: ::DWORDLONG, 172 IOD_Alloc_End: ::DWORDLONG, 173 IOD_DesFlags: ::DWORD, 174 }} 175 pub type PIO_DES = *mut IO_DES; 176 STRUCT!{struct IO_RESOURCE { 177 IO_Header: IO_DES, 178 IO_Data: [IO_RANGE; ::ANYSIZE_ARRAY], 179 }} 180 pub type PIO_RESOURCE = *mut IO_RESOURCE; 181 pub const mDD_Width: ::ULONG = 0x3; 182 pub const fDD_BYTE: ::ULONG = 0x0; 183 pub const fDD_WORD: ::ULONG = 0x1; 184 pub const fDD_DWORD: ::ULONG = 0x2; 185 pub const fDD_BYTE_AND_WORD: ::ULONG = 0x3; 186 pub const mDD_BusMaster: ::ULONG = 0x4; 187 pub const fDD_NoBusMaster: ::ULONG = 0x0; 188 pub const fDD_BusMaster: ::ULONG = 0x4; 189 pub const mDD_Type: ::ULONG = 0x18; 190 pub const fDD_TypeStandard: ::ULONG = 0x00; 191 pub const fDD_TypeA: ::ULONG = 0x08; 192 pub const fDD_TypeB: ::ULONG = 0x10; 193 pub const fDD_TypeF: ::ULONG = 0x18; 194 STRUCT!{struct DMA_RANGE { 195 DR_Min: ::ULONG, 196 DR_Max: ::ULONG, 197 DR_Flags: ::ULONG, 198 }} 199 pub type PDMA_RANGE = *mut DMA_RANGE; 200 STRUCT!{struct DMA_DES { 201 DD_Count: ::DWORD, 202 DD_Type: ::DWORD, 203 DD_Flags: ::DWORD, 204 DD_Alloc_Chan: ::ULONG, 205 }} 206 pub type PDMA_DES = *mut DMA_DES; 207 STRUCT!{struct DMA_RESOURCE { 208 DMA_Header: DMA_DES, 209 DMA_Data: [DMA_RANGE; ::ANYSIZE_ARRAY], 210 }} 211 pub type PDMA_RESOURCE = *mut DMA_RESOURCE; 212 pub const mIRQD_Share: ::ULONG = 0x1; 213 pub const fIRQD_Exclusive: ::ULONG = 0x0; 214 pub const fIRQD_Share: ::ULONG = 0x1; 215 pub const fIRQD_Share_Bit: ::ULONG = 0; 216 pub const fIRQD_Level_Bit: ::ULONG = 1; 217 pub const mIRQD_Edge_Level: ::ULONG = 0x2; 218 pub const fIRQD_Level: ::ULONG = 0x0; 219 pub const fIRQD_Edge: ::ULONG = 0x2; 220 STRUCT!{struct IRQ_RANGE { 221 IRQR_Min: ::ULONG, 222 IRQR_Max: ::ULONG, 223 IRQR_Flags: ::ULONG, 224 }} 225 pub type PIRQ_RANGE = *mut IRQ_RANGE; 226 STRUCT!{struct IRQ_DES_32 { 227 IRQD_Count: ::DWORD, 228 IRQD_Type: ::DWORD, 229 IRQD_Flags: ::DWORD, 230 IRQD_Alloc_Num: ::ULONG, 231 IRQD_Affinity: ::ULONG32, 232 }} 233 pub type PIRQ_DES_32 = *mut IRQ_DES_32; 234 STRUCT!{struct IRQ_DES_64 { 235 IRQD_Count: ::DWORD, 236 IRQD_Type: ::DWORD, 237 IRQD_Flags: ::DWORD, 238 IRQD_Alloc_Num: ::ULONG, 239 IRQD_Affinity: ::ULONG64, 240 }} 241 pub type PIRQ_DES_64 = *mut IRQ_DES_64; 242 STRUCT!{struct IRQ_RESOURCE_32 { 243 IRQ_Header: IRQ_DES_32, 244 IRQ_Data: [IRQ_RANGE; ::ANYSIZE_ARRAY], 245 }} 246 pub type PIRQ_RESOURCE_32 = *mut IRQ_RESOURCE_32; 247 STRUCT!{struct IRQ_RESOURCE_64 { 248 IRQ_Header: IRQ_DES_64, 249 IRQ_Data: [IRQ_RANGE; ::ANYSIZE_ARRAY], 250 }} 251 pub type PIRQ_RESOURCE_64 = *mut IRQ_RESOURCE_64; 252 STRUCT!{struct DEVPRIVATE_RANGE { 253 PR_Data1: ::DWORD, 254 PR_Data2: ::DWORD, 255 PR_Data3: ::DWORD, 256 }} 257 pub type PDEVPRIVATE_RANGE = *mut DEVPRIVATE_RANGE; 258 STRUCT!{struct DEVPRIVATE_DES { 259 PD_Count: ::DWORD, 260 PD_Type: ::DWORD, 261 PD_Data1: ::DWORD, 262 PD_Data2: ::DWORD, 263 PD_Data3: ::DWORD, 264 PD_Flags: ::DWORD, 265 }} 266 pub type PDEVPRIVATE_DES = *mut DEVPRIVATE_DES; 267 STRUCT!{struct DEVPRIVATE_RESOURCE { 268 PRV_Header: DEVPRIVATE_DES, 269 PRV_Data: [DEVPRIVATE_RANGE; ::ANYSIZE_ARRAY], 270 }} 271 pub type PDEVPRIVATE_RESOURCE = *mut DEVPRIVATE_RESOURCE; 272 STRUCT!{struct CS_DES { 273 CSD_SignatureLength: ::DWORD, 274 CSD_LegacyDataOffset: ::DWORD, 275 CSD_LegacyDataSize: ::DWORD, 276 CSD_Flags: ::DWORD, 277 CSD_ClassGuid: ::GUID, 278 CSD_Signature: [::BYTE; ::ANYSIZE_ARRAY], 279 }} 280 pub type PCS_DES = *mut CS_DES; 281 STRUCT!{struct CS_RESOURCE { 282 CS_Header: CS_DES, 283 }} 284 pub type PCS_RESOURCE = *mut CS_RESOURCE; 285 pub const mPCD_IO_8_16: ::DWORD = 0x1; 286 pub const fPCD_IO_8: ::DWORD = 0x0; 287 pub const fPCD_IO_16: ::DWORD = 0x1; 288 pub const mPCD_MEM_8_16: ::DWORD = 0x2; 289 pub const fPCD_MEM_8: ::DWORD = 0x0; 290 pub const fPCD_MEM_16: ::DWORD = 0x2; 291 pub const mPCD_MEM_A_C: ::DWORD = 0xC; 292 pub const fPCD_MEM1_A: ::DWORD = 0x4; 293 pub const fPCD_MEM2_A: ::DWORD = 0x8; 294 pub const fPCD_IO_ZW_8: ::DWORD = 0x10; 295 pub const fPCD_IO_SRC_16: ::DWORD = 0x20; 296 pub const fPCD_IO_WS_16: ::DWORD = 0x40; 297 pub const mPCD_MEM_WS: ::DWORD = 0x300; 298 pub const fPCD_MEM_WS_ONE: ::DWORD = 0x100; 299 pub const fPCD_MEM_WS_TWO: ::DWORD = 0x200; 300 pub const fPCD_MEM_WS_THREE: ::DWORD = 0x300; 301 pub const fPCD_MEM_A: ::DWORD = 0x4; 302 pub const fPCD_ATTRIBUTES_PER_WINDOW: ::DWORD = 0x8000; 303 pub const fPCD_IO1_16: ::DWORD = 0x00010000; 304 pub const fPCD_IO1_ZW_8: ::DWORD = 0x00020000; 305 pub const fPCD_IO1_SRC_16: ::DWORD = 0x00040000; 306 pub const fPCD_IO1_WS_16: ::DWORD = 0x00080000; 307 pub const fPCD_IO2_16: ::DWORD = 0x00100000; 308 pub const fPCD_IO2_ZW_8: ::DWORD = 0x00200000; 309 pub const fPCD_IO2_SRC_16: ::DWORD = 0x00400000; 310 pub const fPCD_IO2_WS_16: ::DWORD = 0x00800000; 311 pub const mPCD_MEM1_WS: ::DWORD = 0x03000000; 312 pub const fPCD_MEM1_WS_TWO: ::DWORD = 0x02000000; 313 pub const fPCD_MEM1_WS_THREE: ::DWORD = 0x03000000; 314 pub const fPCD_MEM1_16: ::DWORD = 0x04000000; 315 pub const mPCD_MEM2_WS: ::DWORD = 0x30000000; 316 pub const fPCD_MEM2_WS_ONE: ::DWORD = 0x10000000; 317 pub const fPCD_MEM2_WS_TWO: ::DWORD = 0x20000000; 318 pub const fPCD_MEM2_WS_THREE: ::DWORD = 0x30000000; 319 pub const fPCD_MEM2_16: ::DWORD = 0x40000000; 320 pub const PCD_MAX_MEMORY: usize = 2; 321 pub const PCD_MAX_IO: usize = 2; 322 STRUCT!{struct PCCARD_DES { 323 PCD_Count: ::DWORD, 324 PCD_Type: ::DWORD, 325 PCD_Flags: ::DWORD, 326 PCD_ConfigIndex: ::BYTE, 327 PCD_Reserved: [::BYTE; 3], 328 PCD_MemoryCardBase1: ::DWORD, 329 PCD_MemoryCardBase2: ::DWORD, 330 PCD_MemoryCardBase: [::DWORD; PCD_MAX_MEMORY], 331 PCD_MemoryFlags: [::WORD; PCD_MAX_MEMORY], 332 PCD_IoFlags: [::BYTE; PCD_MAX_IO], 333 }} 334 pub type PPCCARD_DES = *mut PCCARD_DES; 335 STRUCT!{struct PCCARD_RESOURCE { 336 PcCard_Header: PCCARD_DES, 337 }} 338 pub type PPCCARD_RESOURCE = *mut PCCARD_RESOURCE; 339 pub const mPMF_AUDIO_ENABLE: ::DWORD = 0x8; 340 pub const fPMF_AUDIO_ENABLE: ::DWORD = 0x8; 341 STRUCT!{struct MFCARD_DES { 342 PMF_Count: ::DWORD, 343 PMF_Type: ::DWORD, 344 PMF_Flags: ::DWORD, 345 PMF_ConfigOptions: ::BYTE, 346 PMF_IoResourceIndex: ::BYTE, 347 PMF_Reserved: [::BYTE; 2], 348 PMF_ConfigRegisterBase: ::DWORD, 349 }} 350 pub type PMFCARD_DES = *mut MFCARD_DES; 351 STRUCT!{struct MFCARD_RESOURCE { 352 MfCard_Header: MFCARD_DES, 353 }} 354 pub type PMFCARD_RESOURCE = *mut MFCARD_RESOURCE; 355 STRUCT!{struct BUSNUMBER_RANGE { 356 BUSR_Min: ::ULONG, 357 BUSR_Max: ::ULONG, 358 BUSR_nBusNumbers: ::ULONG, 359 BUSR_Flags: ::ULONG, 360 }} 361 pub type PBUSNUMBER_RANGE = *mut BUSNUMBER_RANGE; 362 STRUCT!{struct BUSNUMBER_DES { 363 BUSD_Count: ::DWORD, 364 BUSD_Type: ::DWORD, 365 BUSD_Flags: ::DWORD, 366 BUSD_Alloc_Base: ::ULONG, 367 BUSD_Alloc_End: ::ULONG, 368 }} 369 pub type PBUSNUMBER_DES = *mut BUSNUMBER_DES; 370 STRUCT!{struct BUSNUMBER_RESOURCE { 371 BusNumber_Header: BUSNUMBER_DES, 372 BusNumber_Data: [BUSNUMBER_RANGE; ::ANYSIZE_ARRAY], 373 }} 374 pub type PBUSNUMBER_RESOURCE = *mut BUSNUMBER_RESOURCE; 375 STRUCT!{struct CONNECTION_DES { 376 COND_Type: ::DWORD, 377 COND_Flags: ::DWORD, 378 COND_Class: ::BYTE, 379 COND_ClassType: ::BYTE, 380 COND_Reserved1: ::BYTE, 381 COND_Reserved2: ::BYTE, 382 COND_Id: ::LARGE_INTEGER, 383 }} 384 pub type PCONNECTION_DES = *mut CONNECTION_DES; 385 STRUCT!{struct CONNECTION_RESOURCE { 386 Connection_Header: CONNECTION_DES, 387 }} 388 pub type PCONNECTION_RESOURCE = *mut CONNECTION_RESOURCE; 389 pub const CM_HWPI_NOT_DOCKABLE: ::DWORD = 0x00000000; 390 pub const CM_HWPI_UNDOCKED: ::DWORD = 0x00000001; 391 pub const CM_HWPI_DOCKED: ::DWORD = 0x00000002; 392 STRUCT!{nodebug struct HWPROFILEINFO_A { 393 HWPI_ulHWProfile: ::ULONG, 394 HWPI_szFriendlyName: [::CHAR; MAX_PROFILE_LEN], 395 HWPI_dwFlags: ::DWORD, 396 }} 397 pub type PHWPROFILEINFO_A = *mut HWPROFILEINFO_A; 398 STRUCT!{nodebug struct HWPROFILEINFO_W { 399 HWPI_ulHWProfile: ::ULONG, 400 HWPI_szFriendlyName: [::WCHAR; MAX_PROFILE_LEN], 401 HWPI_dwFlags: ::DWORD, 402 }} 403 pub type PHWPROFILEINFO_W = *mut HWPROFILEINFO_W; 404 pub const ResType_All: RESOURCEID = 0x00000000; 405 pub const ResType_None: RESOURCEID = 0x00000000; 406 pub const ResType_Mem: RESOURCEID = 0x00000001; 407 pub const ResType_IO: RESOURCEID = 0x00000002; 408 pub const ResType_DMA: RESOURCEID = 0x00000003; 409 pub const ResType_IRQ: RESOURCEID = 0x00000004; 410 pub const ResType_DoNotUse: RESOURCEID = 0x00000005; 411 pub const ResType_BusNumber: RESOURCEID = 0x00000006; 412 pub const ResType_MemLarge: RESOURCEID = 0x00000007; 413 pub const ResType_MAX: RESOURCEID = 0x00000007; 414 pub const ResType_Ignored_Bit: RESOURCEID = 0x00008000; 415 pub const ResType_ClassSpecific: RESOURCEID = 0x0000FFFF; 416 pub const ResType_Reserved: RESOURCEID = 0x00008000; 417 pub const ResType_DevicePrivate: RESOURCEID = 0x00008001; 418 pub const ResType_PcCardConfig: RESOURCEID = 0x00008002; 419 pub const ResType_MfCardConfig: RESOURCEID = 0x00008003; 420 pub const ResType_Connection: RESOURCEID = 0x00008004; 421 pub const CM_ADD_RANGE_ADDIFCONFLICT: ::ULONG = 0x00000000; 422 pub const CM_ADD_RANGE_DONOTADDIFCONFLICT: ::ULONG = 0x00000001; 423 pub const CM_ADD_RANGE_BITS: ::ULONG = 0x00000001; 424 pub const BASIC_LOG_CONF: ::ULONG = 0x00000000; 425 pub const FILTERED_LOG_CONF: ::ULONG = 0x00000001; 426 pub const ALLOC_LOG_CONF: ::ULONG = 0x00000002; 427 pub const BOOT_LOG_CONF: ::ULONG = 0x00000003; 428 pub const FORCED_LOG_CONF: ::ULONG = 0x00000004; 429 pub const OVERRIDE_LOG_CONF: ::ULONG = 0x00000005; 430 pub const NUM_LOG_CONF: ::ULONG = 0x00000006; 431 pub const LOG_CONF_BITS: ::ULONG = 0x00000007; 432 pub const PRIORITY_EQUAL_FIRST: ::ULONG = 0x00000008; 433 pub const PRIORITY_EQUAL_LAST: ::ULONG = 0x00000000; 434 pub const PRIORITY_BIT: ::ULONG = 0x00000008; 435 pub const RegDisposition_OpenAlways: REGDISPOSITION = 0x00000000; 436 pub const RegDisposition_OpenExisting: REGDISPOSITION = 0x00000001; 437 pub const RegDisposition_Bits: REGDISPOSITION = 0x00000001; 438 pub const CM_ADD_ID_HARDWARE: ::ULONG = 0x00000000; 439 pub const CM_ADD_ID_COMPATIBLE: ::ULONG = 0x00000001; 440 pub const CM_ADD_ID_BITS: ::ULONG = 0x00000001; 441 pub const CM_CREATE_DEVNODE_NORMAL: ::ULONG = 0x00000000; 442 pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL: ::ULONG = 0x00000001; 443 pub const CM_CREATE_DEVNODE_PHANTOM: ::ULONG = 0x00000002; 444 pub const CM_CREATE_DEVNODE_GENERATE_ID: ::ULONG = 0x00000004; 445 pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL: ::ULONG = 0x00000008; 446 pub const CM_CREATE_DEVNODE_BITS: ::ULONG = 0x0000000F; 447 pub const CM_CREATE_DEVINST_NORMAL: ::ULONG = CM_CREATE_DEVNODE_NORMAL; 448 pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL: ::ULONG = CM_CREATE_DEVNODE_NO_WAIT_INSTALL; 449 pub const CM_CREATE_DEVINST_PHANTOM: ::ULONG = CM_CREATE_DEVNODE_PHANTOM; 450 pub const CM_CREATE_DEVINST_GENERATE_ID: ::ULONG = CM_CREATE_DEVNODE_GENERATE_ID; 451 pub const CM_CREATE_DEVINST_DO_NOT_INSTALL: ::ULONG = CM_CREATE_DEVNODE_DO_NOT_INSTALL; 452 pub const CM_CREATE_DEVINST_BITS: ::ULONG = CM_CREATE_DEVNODE_BITS; 453 pub const CM_DELETE_CLASS_ONLY: ::ULONG = 0x00000000; 454 pub const CM_DELETE_CLASS_SUBKEYS: ::ULONG = 0x00000001; 455 pub const CM_DELETE_CLASS_INTERFACE: ::ULONG = 0x00000002; 456 pub const CM_DELETE_CLASS_BITS: ::ULONG = 0x00000003; 457 pub const CM_ENUMERATE_CLASSES_INSTALLER: ::ULONG = 0x00000000; 458 pub const CM_ENUMERATE_CLASSES_INTERFACE: ::ULONG = 0x00000001; 459 pub const CM_ENUMERATE_CLASSES_BITS: ::ULONG = 0x00000001; 460 pub const CM_DETECT_NEW_PROFILE: ::ULONG = 0x00000001; 461 pub const CM_DETECT_CRASHED: ::ULONG = 0x00000002; 462 pub const CM_DETECT_HWPROF_FIRST_BOOT: ::ULONG = 0x00000004; 463 pub const CM_DETECT_RUN: ::ULONG = 0x80000000; 464 pub const CM_DETECT_BITS: ::ULONG = 0x80000007; 465 pub const CM_DISABLE_POLITE: ::ULONG = 0x00000000; 466 pub const CM_DISABLE_ABSOLUTE: ::ULONG = 0x00000001; 467 pub const CM_DISABLE_HARDWARE: ::ULONG = 0x00000002; 468 pub const CM_DISABLE_UI_NOT_OK: ::ULONG = 0x00000004; 469 pub const CM_DISABLE_BITS: ::ULONG = 0x00000007; 470 pub const CM_GETIDLIST_FILTER_NONE: ::ULONG = 0x00000000; 471 pub const CM_GETIDLIST_FILTER_ENUMERATOR: ::ULONG = 0x00000001; 472 pub const CM_GETIDLIST_FILTER_SERVICE: ::ULONG = 0x00000002; 473 pub const CM_GETIDLIST_FILTER_EJECTRELATIONS: ::ULONG = 0x00000004; 474 pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS: ::ULONG = 0x00000008; 475 pub const CM_GETIDLIST_FILTER_POWERRELATIONS: ::ULONG = 0x00000010; 476 pub const CM_GETIDLIST_FILTER_BUSRELATIONS: ::ULONG = 0x00000020; 477 pub const CM_GETIDLIST_DONOTGENERATE: ::ULONG = 0x10000040; 478 pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: ::ULONG = 0x00000080; 479 pub const CM_GETIDLIST_FILTER_PRESENT: ::ULONG = 0x00000100; 480 pub const CM_GETIDLIST_FILTER_CLASS: ::ULONG = 0x00000200; 481 pub const CM_GETIDLIST_FILTER_BITS: ::ULONG = 0x100003FF; 482 pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT: ::ULONG = 0x00000000; 483 pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES: ::ULONG = 0x00000001; 484 pub const CM_GET_DEVICE_INTERFACE_LIST_BITS: ::ULONG = 0x00000001; 485 pub const CM_DRP_DEVICEDESC: ::ULONG = 0x00000001; 486 pub const CM_DRP_HARDWAREID: ::ULONG = 0x00000002; 487 pub const CM_DRP_COMPATIBLEIDS: ::ULONG = 0x00000003; 488 pub const CM_DRP_UNUSED0: ::ULONG = 0x00000004; 489 pub const CM_DRP_SERVICE: ::ULONG = 0x00000005; 490 pub const CM_DRP_UNUSED1: ::ULONG = 0x00000006; 491 pub const CM_DRP_UNUSED2: ::ULONG = 0x00000007; 492 pub const CM_DRP_CLASS: ::ULONG = 0x00000008; 493 pub const CM_DRP_CLASSGUID: ::ULONG = 0x00000009; 494 pub const CM_DRP_DRIVER: ::ULONG = 0x0000000A; 495 pub const CM_DRP_CONFIGFLAGS: ::ULONG = 0x0000000B; 496 pub const CM_DRP_MFG: ::ULONG = 0x0000000C; 497 pub const CM_DRP_FRIENDLYNAME: ::ULONG = 0x0000000D; 498 pub const CM_DRP_LOCATION_INFORMATION: ::ULONG = 0x0000000E; 499 pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME: ::ULONG = 0x0000000F; 500 pub const CM_DRP_CAPABILITIES: ::ULONG = 0x00000010; 501 pub const CM_DRP_UI_NUMBER: ::ULONG = 0x00000011; 502 pub const CM_DRP_UPPERFILTERS: ::ULONG = 0x00000012; 503 pub const CM_CRP_UPPERFILTERS: ::ULONG = CM_DRP_UPPERFILTERS; 504 pub const CM_DRP_LOWERFILTERS: ::ULONG = 0x00000013; 505 pub const CM_CRP_LOWERFILTERS: ::ULONG = CM_DRP_LOWERFILTERS; 506 pub const CM_DRP_BUSTYPEGUID: ::ULONG = 0x00000014; 507 pub const CM_DRP_LEGACYBUSTYPE: ::ULONG = 0x00000015; 508 pub const CM_DRP_BUSNUMBER: ::ULONG = 0x00000016; 509 pub const CM_DRP_ENUMERATOR_NAME: ::ULONG = 0x00000017; 510 pub const CM_DRP_SECURITY: ::ULONG = 0x00000018; 511 pub const CM_CRP_SECURITY: ::ULONG = CM_DRP_SECURITY; 512 pub const CM_DRP_SECURITY_SDS: ::ULONG = 0x00000019; 513 pub const CM_CRP_SECURITY_SDS: ::ULONG = CM_DRP_SECURITY_SDS; 514 pub const CM_DRP_DEVTYPE: ::ULONG = 0x0000001A; 515 pub const CM_CRP_DEVTYPE: ::ULONG = CM_DRP_DEVTYPE; 516 pub const CM_DRP_EXCLUSIVE: ::ULONG = 0x0000001B; 517 pub const CM_CRP_EXCLUSIVE: ::ULONG = CM_DRP_EXCLUSIVE; 518 pub const CM_DRP_CHARACTERISTICS: ::ULONG = 0x0000001C; 519 pub const CM_CRP_CHARACTERISTICS: ::ULONG = CM_DRP_CHARACTERISTICS; 520 pub const CM_DRP_ADDRESS: ::ULONG = 0x0000001D; 521 pub const CM_DRP_UI_NUMBER_DESC_FORMAT: ::ULONG = 0x0000001E; 522 pub const CM_DRP_DEVICE_POWER_DATA: ::ULONG = 0x0000001F; 523 pub const CM_DRP_REMOVAL_POLICY: ::ULONG = 0x00000020; 524 pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT: ::ULONG = 0x00000021; 525 pub const CM_DRP_REMOVAL_POLICY_OVERRIDE: ::ULONG = 0x00000022; 526 pub const CM_DRP_INSTALL_STATE: ::ULONG = 0x00000023; 527 pub const CM_DRP_LOCATION_PATHS: ::ULONG = 0x00000024; 528 pub const CM_DRP_BASE_CONTAINERID: ::ULONG = 0x00000025; 529 pub const CM_DRP_MIN: ::ULONG = 0x00000001; 530 pub const CM_CRP_MIN: ::ULONG = CM_DRP_MIN; 531 pub const CM_DRP_MAX: ::ULONG = 0x00000025; 532 pub const CM_CRP_MAX: ::ULONG = CM_DRP_MAX; 533 pub const CM_DEVCAP_LOCKSUPPORTED: ::ULONG = 0x00000001; 534 pub const CM_DEVCAP_EJECTSUPPORTED: ::ULONG = 0x00000002; 535 pub const CM_DEVCAP_REMOVABLE: ::ULONG = 0x00000004; 536 pub const CM_DEVCAP_DOCKDEVICE: ::ULONG = 0x00000008; 537 pub const CM_DEVCAP_UNIQUEID: ::ULONG = 0x00000010; 538 pub const CM_DEVCAP_SILENTINSTALL: ::ULONG = 0x00000020; 539 pub const CM_DEVCAP_RAWDEVICEOK: ::ULONG = 0x00000040; 540 pub const CM_DEVCAP_SURPRISEREMOVALOK: ::ULONG = 0x00000080; 541 pub const CM_DEVCAP_HARDWAREDISABLED: ::ULONG = 0x00000100; 542 pub const CM_DEVCAP_NONDYNAMIC: ::ULONG = 0x00000200; 543 pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL: ::ULONG = 1; 544 pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL: ::ULONG = 2; 545 pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL: ::ULONG = 3; 546 pub const CM_INSTALL_STATE_INSTALLED: ::ULONG = 0; 547 pub const CM_INSTALL_STATE_NEEDS_REINSTALL: ::ULONG = 1; 548 pub const CM_INSTALL_STATE_FAILED_INSTALL: ::ULONG = 2; 549 pub const CM_INSTALL_STATE_FINISH_INSTALL: ::ULONG = 3; 550 pub const CM_LOCATE_DEVNODE_NORMAL: ::ULONG = 0x00000000; 551 pub const CM_LOCATE_DEVNODE_PHANTOM: ::ULONG = 0x00000001; 552 pub const CM_LOCATE_DEVNODE_CANCELREMOVE: ::ULONG = 0x00000002; 553 pub const CM_LOCATE_DEVNODE_NOVALIDATION: ::ULONG = 0x00000004; 554 pub const CM_LOCATE_DEVNODE_BITS: ::ULONG = 0x00000007; 555 pub const CM_LOCATE_DEVINST_NORMAL: ::ULONG = CM_LOCATE_DEVNODE_NORMAL; 556 pub const CM_LOCATE_DEVINST_PHANTOM: ::ULONG = CM_LOCATE_DEVNODE_PHANTOM; 557 pub const CM_LOCATE_DEVINST_CANCELREMOVE: ::ULONG = CM_LOCATE_DEVNODE_CANCELREMOVE; 558 pub const CM_LOCATE_DEVINST_NOVALIDATION: ::ULONG = CM_LOCATE_DEVNODE_NOVALIDATION; 559 pub const CM_LOCATE_DEVINST_BITS: ::ULONG = CM_LOCATE_DEVNODE_BITS; 560 pub const CM_OPEN_CLASS_KEY_INSTALLER: ::ULONG = 0x00000000; 561 pub const CM_OPEN_CLASS_KEY_INTERFACE: ::ULONG = 0x00000001; 562 pub const CM_OPEN_CLASS_KEY_BITS: ::ULONG = 0x00000001; 563 pub const CM_REMOVE_UI_OK: ::ULONG = 0x00000000; 564 pub const CM_REMOVE_UI_NOT_OK: ::ULONG = 0x00000001; 565 pub const CM_REMOVE_NO_RESTART: ::ULONG = 0x00000002; 566 pub const CM_REMOVE_BITS: ::ULONG = 0x00000003; 567 pub const CM_QUERY_REMOVE_UI_OK: ::ULONG = CM_REMOVE_UI_OK; 568 pub const CM_QUERY_REMOVE_UI_NOT_OK: ::ULONG = CM_REMOVE_UI_NOT_OK; 569 pub const CM_QUERY_REMOVE_BITS: ::ULONG = CM_QUERY_REMOVE_UI_OK | CM_QUERY_REMOVE_UI_NOT_OK; 570 pub const CM_REENUMERATE_NORMAL: ::ULONG = 0x00000000; 571 pub const CM_REENUMERATE_SYNCHRONOUS: ::ULONG = 0x00000001; 572 pub const CM_REENUMERATE_RETRY_INSTALLATION: ::ULONG = 0x00000002; 573 pub const CM_REENUMERATE_ASYNCHRONOUS: ::ULONG = 0x00000004; 574 pub const CM_REENUMERATE_BITS: ::ULONG = 0x00000007; 575 pub const CM_REGISTER_DEVICE_DRIVER_STATIC: ::ULONG = 0x00000000; 576 pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE: ::ULONG = 0x00000001; 577 pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE: ::ULONG = 0x00000002; 578 pub const CM_REGISTER_DEVICE_DRIVER_BITS: ::ULONG = 0x00000003; 579 pub const CM_REGISTRY_HARDWARE: ::ULONG = 0x00000000; 580 pub const CM_REGISTRY_SOFTWARE: ::ULONG = 0x00000001; 581 pub const CM_REGISTRY_USER: ::ULONG = 0x00000100; 582 pub const CM_REGISTRY_CONFIG: ::ULONG = 0x00000200; 583 pub const CM_REGISTRY_BITS: ::ULONG = 0x00000301; 584 pub const CM_SET_DEVNODE_PROBLEM_NORMAL: ::ULONG = 0x00000000; 585 pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE: ::ULONG = 0x00000001; 586 pub const CM_SET_DEVNODE_PROBLEM_BITS: ::ULONG = 0x00000001; 587 pub const CM_SET_DEVINST_PROBLEM_NORMAL: ::ULONG = CM_SET_DEVNODE_PROBLEM_NORMAL; 588 pub const CM_SET_DEVINST_PROBLEM_OVERRIDE: ::ULONG = CM_SET_DEVNODE_PROBLEM_OVERRIDE; 589 pub const CM_SET_DEVINST_PROBLEM_BITS: ::ULONG = CM_SET_DEVNODE_PROBLEM_BITS; 590 pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK: ::ULONG = 0x00000001; 591 pub const CM_SET_HW_PROF_FLAGS_BITS: ::ULONG = 0x00000001; 592 pub const CM_SETUP_DEVNODE_READY: ::ULONG = 0x00000000; 593 pub const CM_SETUP_DEVINST_READY: ::ULONG = CM_SETUP_DEVNODE_READY; 594 pub const CM_SETUP_DOWNLOAD: ::ULONG = 0x00000001; 595 pub const CM_SETUP_WRITE_LOG_CONFS: ::ULONG = 0x00000002; 596 pub const CM_SETUP_PROP_CHANGE: ::ULONG = 0x00000003; 597 pub const CM_SETUP_DEVNODE_RESET: ::ULONG = 0x00000004; 598 pub const CM_SETUP_DEVINST_RESET: ::ULONG = CM_SETUP_DEVNODE_RESET; 599 pub const CM_SETUP_DEVNODE_CONFIG: ::ULONG = 0x00000005; 600 pub const CM_SETUP_DEVINST_CONFIG: ::ULONG = CM_SETUP_DEVNODE_CONFIG; 601 pub const CM_SETUP_DEVNODE_CONFIG_CLASS: ::ULONG = 0x00000006; 602 pub const CM_SETUP_DEVINST_CONFIG_CLASS: ::ULONG = CM_SETUP_DEVNODE_CONFIG_CLASS; 603 pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS: ::ULONG = 0x00000007; 604 pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS: ::ULONG = CM_SETUP_DEVNODE_CONFIG_EXTENSIONS; 605 pub const CM_SETUP_BITS: ::ULONG = 0x00000007; 606 pub const CM_QUERY_ARBITRATOR_RAW: ::ULONG = 0x00000000; 607 pub const CM_QUERY_ARBITRATOR_TRANSLATED: ::ULONG = 0x00000001; 608 pub const CM_QUERY_ARBITRATOR_BITS: ::ULONG = 0x00000001; 609 pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ: ::ULONG = 0x00000001; 610 pub const CM_CUSTOMDEVPROP_BITS: ::ULONG = 0x00000001; 611 pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE: ::ULONG = 0x1; 612 pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME: ::ULONG = 0x2; 613 pub const CM_CLASS_PROPERTY_INSTALLER: ::ULONG = 0x00000000; 614 pub const CM_CLASS_PROPERTY_INTERFACE: ::ULONG = 0x00000001; 615 pub const CM_CLASS_PROPERTY_BITS: ::ULONG = 0x00000001; 616 DECLARE_HANDLE!(HCMNOTIFICATION, HCMNOTIFICATION__); 617 pub type PHCMNOTIFICATION = *mut HCMNOTIFICATION; 618 pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES: ::ULONG = 0x00000001; 619 pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES: ::ULONG = 0x00000002; 620 pub const CM_NOTIFY_FILTER_VALID_FLAGS: ::ULONG = CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES 621 | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES; 622 ENUM!{enum CM_NOTIFY_FILTER_TYPE { 623 CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0, 624 CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE, 625 CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE, 626 CM_NOTIFY_FILTER_TYPE_MAX, 627 }} 628 pub type PCM_NOTIFY_FILTER_TYPE = *mut CM_NOTIFY_FILTER_TYPE; 629 STRUCT!{struct CM_NOTIFY_FILTER_DeviceInterface { 630 ClassGuid: ::GUID, 631 }} 632 STRUCT!{struct CM_NOTIFY_FILTER_DeviceHandle { 633 hTarget: ::HANDLE, 634 }} 635 STRUCT!{nodebug struct CM_NOTIFY_FILTER_DeviceInstance { 636 InstanceId: [::WCHAR; MAX_DEVICE_ID_LEN], 637 }} 638 STRUCT!{nodebug struct CM_NOTIFY_FILTER { 639 cbSize: ::DWORD, 640 Flags: ::DWORD, 641 FilterType: CM_NOTIFY_FILTER_TYPE, 642 Reserved: ::DWORD, 643 u: [::BYTE; 400], 644 }} 645 UNION!(CM_NOTIFY_FILTER, u, DeviceInterface, DeviceInterface_mut, CM_NOTIFY_FILTER_DeviceInterface); 646 UNION!(CM_NOTIFY_FILTER, u, DeviceHandle, DeviceHandle_mut, CM_NOTIFY_FILTER_DeviceHandle); 647 UNION!(CM_NOTIFY_FILTER, u, DeviceInstance, DeviceInstance_mut, CM_NOTIFY_FILTER_DeviceInstance); 648 pub type PCM_NOTIFY_FILTER = *mut CM_NOTIFY_FILTER; 649 ENUM!{enum CM_NOTIFY_ACTION { 650 CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0, 651 CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL, 652 CM_NOTIFY_ACTION_DEVICEQUERYREMOVE, 653 CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED, 654 CM_NOTIFY_ACTION_DEVICEREMOVEPENDING, 655 CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE, 656 CM_NOTIFY_ACTION_DEVICECUSTOMEVENT, 657 CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED, 658 CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED, 659 CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED, 660 CM_NOTIFY_ACTION_MAX, 661 }} 662 pub type PCM_NOTIFY_ACTION = *mut CM_NOTIFY_ACTION; 663 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInterface { 664 ClassGuid: ::GUID, 665 SymbolicLink: [::WCHAR; ::ANYSIZE_ARRAY], 666 }} 667 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceHandle { 668 EventGuid: ::GUID, 669 NameOffset: ::LONG, 670 DataSize: ::DWORD, 671 Data: [::BYTE; ::ANYSIZE_ARRAY], 672 }} 673 STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInstance { 674 InstanceId: [::WCHAR; ::ANYSIZE_ARRAY], 675 }} 676 STRUCT!{struct CM_NOTIFY_EVENT_DATA { 677 FilterType: CM_NOTIFY_FILTER_TYPE, 678 Reserved: ::DWORD, 679 u: [::BYTE; 25], 680 }} 681 UNION!( 682 CM_NOTIFY_EVENT_DATA, u, DeviceInterface, DeviceInterface_mut, 683 CM_NOTIFY_EVENT_DATA_DeviceInterface 684 ); 685 UNION!(CM_NOTIFY_EVENT_DATA, u, DeviceHandle, DeviceHandle_mut, CM_NOTIFY_EVENT_DATA_DeviceHandle); 686 UNION!( 687 CM_NOTIFY_EVENT_DATA, u, DeviceInstance, DeviceInstance_mut, CM_NOTIFY_EVENT_DATA_DeviceInstance 688 ); 689 pub type PCM_NOTIFY_EVENT_DATA = *mut CM_NOTIFY_EVENT_DATA; 690 pub type PCM_NOTIFY_CALLBACK = Option<unsafe extern "system" fn( 691 hNotify: HCMNOTIFICATION, Context: ::PVOID, Action: CM_NOTIFY_ACTION, 692 EventData: PCM_NOTIFY_EVENT_DATA, EventDataSize: ::DWORD, 693 ) -> ::DWORD>; 694 pub const CR_SUCCESS: CONFIGRET = 0x00000000; 695 pub const CR_DEFAULT: CONFIGRET = 0x00000001; 696 pub const CR_OUT_OF_MEMORY: CONFIGRET = 0x00000002; 697 pub const CR_INVALID_POINTER: CONFIGRET = 0x00000003; 698 pub const CR_INVALID_FLAG: CONFIGRET = 0x00000004; 699 pub const CR_INVALID_DEVNODE: CONFIGRET = 0x00000005; 700 pub const CR_INVALID_DEVINST: CONFIGRET = CR_INVALID_DEVNODE; 701 pub const CR_INVALID_RES_DES: CONFIGRET = 0x00000006; 702 pub const CR_INVALID_LOG_CONF: CONFIGRET = 0x00000007; 703 pub const CR_INVALID_ARBITRATOR: CONFIGRET = 0x00000008; 704 pub const CR_INVALID_NODELIST: CONFIGRET = 0x00000009; 705 pub const CR_DEVNODE_HAS_REQS: CONFIGRET = 0x0000000A; 706 pub const CR_DEVINST_HAS_REQS: CONFIGRET = CR_DEVNODE_HAS_REQS; 707 pub const CR_INVALID_RESOURCEID: CONFIGRET = 0x0000000B; 708 pub const CR_DLVXD_NOT_FOUND: CONFIGRET = 0x0000000C; 709 pub const CR_NO_SUCH_DEVNODE: CONFIGRET = 0x0000000D; 710 pub const CR_NO_SUCH_DEVINST: CONFIGRET = CR_NO_SUCH_DEVNODE; 711 pub const CR_NO_MORE_LOG_CONF: CONFIGRET = 0x0000000E; 712 pub const CR_NO_MORE_RES_DES: CONFIGRET = 0x0000000F; 713 pub const CR_ALREADY_SUCH_DEVNODE: CONFIGRET = 0x00000010; 714 pub const CR_ALREADY_SUCH_DEVINST: CONFIGRET = CR_ALREADY_SUCH_DEVNODE; 715 pub const CR_INVALID_RANGE_LIST: CONFIGRET = 0x00000011; 716 pub const CR_INVALID_RANGE: CONFIGRET = 0x00000012; 717 pub const CR_FAILURE: CONFIGRET = 0x00000013; 718 pub const CR_NO_SUCH_LOGICAL_DEV: CONFIGRET = 0x00000014; 719 pub const CR_CREATE_BLOCKED: CONFIGRET = 0x00000015; 720 pub const CR_NOT_SYSTEM_VM: CONFIGRET = 0x00000016; 721 pub const CR_REMOVE_VETOED: CONFIGRET = 0x00000017; 722 pub const CR_APM_VETOED: CONFIGRET = 0x00000018; 723 pub const CR_INVALID_LOAD_TYPE: CONFIGRET = 0x00000019; 724 pub const CR_BUFFER_SMALL: CONFIGRET = 0x0000001A; 725 pub const CR_NO_ARBITRATOR: CONFIGRET = 0x0000001B; 726 pub const CR_NO_REGISTRY_HANDLE: CONFIGRET = 0x0000001C; 727 pub const CR_REGISTRY_ERROR: CONFIGRET = 0x0000001D; 728 pub const CR_INVALID_DEVICE_ID: CONFIGRET = 0x0000001E; 729 pub const CR_INVALID_DATA: CONFIGRET = 0x0000001F; 730 pub const CR_INVALID_API: CONFIGRET = 0x00000020; 731 pub const CR_DEVLOADER_NOT_READY: CONFIGRET = 0x00000021; 732 pub const CR_NEED_RESTART: CONFIGRET = 0x00000022; 733 pub const CR_NO_MORE_HW_PROFILES: CONFIGRET = 0x00000023; 734 pub const CR_DEVICE_NOT_THERE: CONFIGRET = 0x00000024; 735 pub const CR_NO_SUCH_VALUE: CONFIGRET = 0x00000025; 736 pub const CR_WRONG_TYPE: CONFIGRET = 0x00000026; 737 pub const CR_INVALID_PRIORITY: CONFIGRET = 0x00000027; 738 pub const CR_NOT_DISABLEABLE: CONFIGRET = 0x00000028; 739 pub const CR_FREE_RESOURCES: CONFIGRET = 0x00000029; 740 pub const CR_QUERY_VETOED: CONFIGRET = 0x0000002A; 741 pub const CR_CANT_SHARE_IRQ: CONFIGRET = 0x0000002B; 742 pub const CR_NO_DEPENDENT: CONFIGRET = 0x0000002C; 743 pub const CR_SAME_RESOURCES: CONFIGRET = 0x0000002D; 744 pub const CR_NO_SUCH_REGISTRY_KEY: CONFIGRET = 0x0000002E; 745 pub const CR_INVALID_MACHINENAME: CONFIGRET = 0x0000002F; 746 pub const CR_REMOTE_COMM_FAILURE: CONFIGRET = 0x00000030; 747 pub const CR_MACHINE_UNAVAILABLE: CONFIGRET = 0x00000031; 748 pub const CR_NO_CM_SERVICES: CONFIGRET = 0x00000032; 749 pub const CR_ACCESS_DENIED: CONFIGRET = 0x00000033; 750 pub const CR_CALL_NOT_IMPLEMENTED: CONFIGRET = 0x00000034; 751 pub const CR_INVALID_PROPERTY: CONFIGRET = 0x00000035; 752 pub const CR_DEVICE_INTERFACE_ACTIVE: CONFIGRET = 0x00000036; 753 pub const CR_NO_SUCH_DEVICE_INTERFACE: CONFIGRET = 0x00000037; 754 pub const CR_INVALID_REFERENCE_STRING: CONFIGRET = 0x00000038; 755 pub const CR_INVALID_CONFLICT_LIST: CONFIGRET = 0x00000039; 756 pub const CR_INVALID_INDEX: CONFIGRET = 0x0000003A; 757 pub const CR_INVALID_STRUCTURE_SIZE: CONFIGRET = 0x0000003B; 758 pub const NUM_CR_RESULTS: CONFIGRET = 0x0000003C; 759