// 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. //! Defines property types and keys for the Plug and Play Device Property API use shared::guiddef::{GUID, IsEqualGUID}; use shared::minwindef::ULONG; use um::winnt::{CHAR, PCWSTR, PVOID}; pub type DEVPROPTYPE = ULONG; pub type PDEVPROPTYPE = *mut ULONG; pub const DEVPROP_TYPEMOD_ARRAY: DEVPROPTYPE = 0x00001000; pub const DEVPROP_TYPEMOD_LIST: DEVPROPTYPE = 0x00002000; pub const DEVPROP_TYPE_EMPTY: DEVPROPTYPE = 0x00000000; pub const DEVPROP_TYPE_NULL: DEVPROPTYPE = 0x00000001; pub const DEVPROP_TYPE_SBYTE: DEVPROPTYPE = 0x00000002; pub const DEVPROP_TYPE_BYTE: DEVPROPTYPE = 0x00000003; pub const DEVPROP_TYPE_INT16: DEVPROPTYPE = 0x00000004; pub const DEVPROP_TYPE_UINT16: DEVPROPTYPE = 0x00000005; pub const DEVPROP_TYPE_INT32: DEVPROPTYPE = 0x00000006; pub const DEVPROP_TYPE_UINT32: DEVPROPTYPE = 0x00000007; pub const DEVPROP_TYPE_INT64: DEVPROPTYPE = 0x00000008; pub const DEVPROP_TYPE_UINT64: DEVPROPTYPE = 0x00000009; pub const DEVPROP_TYPE_FLOAT: DEVPROPTYPE = 0x0000000A; pub const DEVPROP_TYPE_DOUBLE: DEVPROPTYPE = 0x0000000B; pub const DEVPROP_TYPE_DECIMAL: DEVPROPTYPE = 0x0000000C; pub const DEVPROP_TYPE_GUID: DEVPROPTYPE = 0x0000000D; pub const DEVPROP_TYPE_CURRENCY: DEVPROPTYPE = 0x0000000E; pub const DEVPROP_TYPE_DATE: DEVPROPTYPE = 0x0000000F; pub const DEVPROP_TYPE_FILETIME: DEVPROPTYPE = 0x00000010; pub const DEVPROP_TYPE_BOOLEAN: DEVPROPTYPE = 0x00000011; pub const DEVPROP_TYPE_STRING: DEVPROPTYPE = 0x00000012; pub const DEVPROP_TYPE_STRING_LIST: DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST; pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR: DEVPROPTYPE = 0x00000013; pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING: DEVPROPTYPE = 0x00000014; pub const DEVPROP_TYPE_DEVPROPKEY: DEVPROPTYPE = 0x00000015; pub const DEVPROP_TYPE_DEVPROPTYPE: DEVPROPTYPE = 0x00000016; pub const DEVPROP_TYPE_BINARY: DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY; pub const DEVPROP_TYPE_ERROR: DEVPROPTYPE = 0x00000017; pub const DEVPROP_TYPE_NTSTATUS: DEVPROPTYPE = 0x00000018; pub const DEVPROP_TYPE_STRING_INDIRECT: DEVPROPTYPE = 0x00000019; pub const MAX_DEVPROP_TYPE: DEVPROPTYPE = 0x00000019; pub const MAX_DEVPROP_TYPEMOD: DEVPROPTYPE = 0x00002000; pub const DEVPROP_MASK_TYPE: DEVPROPTYPE = 0x00000FFF; pub const DEVPROP_MASK_TYPEMOD: DEVPROPTYPE = 0x0000F000; pub type DEVPROP_BOOLEAN = CHAR; pub type PDEVPROP_BOOLEAN = *mut CHAR; pub const DEVPROP_TRUE: DEVPROP_BOOLEAN = -1; pub const DEVPROP_FALSE: DEVPROP_BOOLEAN = 0; pub type DEVPROPGUID = GUID; pub type PDEVPROPGUID = *mut GUID; pub type DEVPROPID = ULONG; pub type PDEVPROPID = *mut ULONG; STRUCT!{struct DEVPROPKEY { fmtid: DEVPROPGUID, pid: DEVPROPID, }} pub type PDEVPROPKEY = *mut DEVPROPKEY; #[inline] pub fn IsEqualDevPropKey(a: &DEVPROPKEY, b: &DEVPROPKEY) -> bool { (a.pid == b.pid) && IsEqualGUID(&a.fmtid, &b.fmtid) } ENUM!{enum DEVPROPSTORE { DEVPROP_STORE_SYSTEM, DEVPROP_STORE_USER, }} pub type PDEVPROPSTORE = *mut DEVPROPSTORE; STRUCT!{struct DEVPROPCOMPKEY { Key: DEVPROPKEY, Store: DEVPROPSTORE, LocaleName: PCWSTR, }} pub type PDEVPROPCOMPKEY = *mut DEVPROPCOMPKEY; // IsEqualLocaleName // IsEqualDevPropCompKey STRUCT!{struct DEVPROPERTY { CompKey: DEVPROPCOMPKEY, Type: DEVPROPTYPE, BufferSize: ULONG, Buffer: PVOID, }} pub type PDEVPROPERTY = *mut DEVPROPERTY; pub const DEVPROPID_FIRST_USABLE: DEVPROPID = 2;