1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Defines property types and keys for the Plug and Play Device Property API
7 use shared
::guiddef
::{GUID, IsEqualGUID}
;
8 use shared
::minwindef
::ULONG
;
9 use um
::winnt
::{CHAR, PCWSTR, PVOID}
;
10 pub type DEVPROPTYPE
= ULONG
;
11 pub type PDEVPROPTYPE
= *mut ULONG
;
12 pub const DEVPROP_TYPEMOD_ARRAY
: DEVPROPTYPE
= 0x00001000;
13 pub const DEVPROP_TYPEMOD_LIST
: DEVPROPTYPE
= 0x00002000;
14 pub const DEVPROP_TYPE_EMPTY
: DEVPROPTYPE
= 0x00000000;
15 pub const DEVPROP_TYPE_NULL
: DEVPROPTYPE
= 0x00000001;
16 pub const DEVPROP_TYPE_SBYTE
: DEVPROPTYPE
= 0x00000002;
17 pub const DEVPROP_TYPE_BYTE
: DEVPROPTYPE
= 0x00000003;
18 pub const DEVPROP_TYPE_INT16
: DEVPROPTYPE
= 0x00000004;
19 pub const DEVPROP_TYPE_UINT16
: DEVPROPTYPE
= 0x00000005;
20 pub const DEVPROP_TYPE_INT32
: DEVPROPTYPE
= 0x00000006;
21 pub const DEVPROP_TYPE_UINT32
: DEVPROPTYPE
= 0x00000007;
22 pub const DEVPROP_TYPE_INT64
: DEVPROPTYPE
= 0x00000008;
23 pub const DEVPROP_TYPE_UINT64
: DEVPROPTYPE
= 0x00000009;
24 pub const DEVPROP_TYPE_FLOAT
: DEVPROPTYPE
= 0x0000000A;
25 pub const DEVPROP_TYPE_DOUBLE
: DEVPROPTYPE
= 0x0000000B;
26 pub const DEVPROP_TYPE_DECIMAL
: DEVPROPTYPE
= 0x0000000C;
27 pub const DEVPROP_TYPE_GUID
: DEVPROPTYPE
= 0x0000000D;
28 pub const DEVPROP_TYPE_CURRENCY
: DEVPROPTYPE
= 0x0000000E;
29 pub const DEVPROP_TYPE_DATE
: DEVPROPTYPE
= 0x0000000F;
30 pub const DEVPROP_TYPE_FILETIME
: DEVPROPTYPE
= 0x00000010;
31 pub const DEVPROP_TYPE_BOOLEAN
: DEVPROPTYPE
= 0x00000011;
32 pub const DEVPROP_TYPE_STRING
: DEVPROPTYPE
= 0x00000012;
33 pub const DEVPROP_TYPE_STRING_LIST
: DEVPROPTYPE
= DEVPROP_TYPE_STRING
| DEVPROP_TYPEMOD_LIST
;
34 pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR
: DEVPROPTYPE
= 0x00000013;
35 pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING
: DEVPROPTYPE
= 0x00000014;
36 pub const DEVPROP_TYPE_DEVPROPKEY
: DEVPROPTYPE
= 0x00000015;
37 pub const DEVPROP_TYPE_DEVPROPTYPE
: DEVPROPTYPE
= 0x00000016;
38 pub const DEVPROP_TYPE_BINARY
: DEVPROPTYPE
= DEVPROP_TYPE_BYTE
| DEVPROP_TYPEMOD_ARRAY
;
39 pub const DEVPROP_TYPE_ERROR
: DEVPROPTYPE
= 0x00000017;
40 pub const DEVPROP_TYPE_NTSTATUS
: DEVPROPTYPE
= 0x00000018;
41 pub const DEVPROP_TYPE_STRING_INDIRECT
: DEVPROPTYPE
= 0x00000019;
42 pub const MAX_DEVPROP_TYPE
: DEVPROPTYPE
= 0x00000019;
43 pub const MAX_DEVPROP_TYPEMOD
: DEVPROPTYPE
= 0x00002000;
44 pub const DEVPROP_MASK_TYPE
: DEVPROPTYPE
= 0x00000FFF;
45 pub const DEVPROP_MASK_TYPEMOD
: DEVPROPTYPE
= 0x0000F000;
46 pub type DEVPROP_BOOLEAN
= CHAR
;
47 pub type PDEVPROP_BOOLEAN
= *mut CHAR
;
48 pub const DEVPROP_TRUE
: DEVPROP_BOOLEAN
= -1;
49 pub const DEVPROP_FALSE
: DEVPROP_BOOLEAN
= 0;
50 pub type DEVPROPGUID
= GUID
;
51 pub type PDEVPROPGUID
= *mut GUID
;
52 pub type DEVPROPID
= ULONG
;
53 pub type PDEVPROPID
= *mut ULONG
;
54 STRUCT
!{struct DEVPROPKEY
{
58 pub type PDEVPROPKEY
= *mut DEVPROPKEY
;
60 pub fn IsEqualDevPropKey(a
: &DEVPROPKEY
, b
: &DEVPROPKEY
) -> bool
{
61 (a
.pid
== b
.pid
) && IsEqualGUID(&a
.fmtid
, &b
.fmtid
)
63 ENUM
!{enum DEVPROPSTORE
{
67 pub type PDEVPROPSTORE
= *mut DEVPROPSTORE
;
68 STRUCT
!{struct DEVPROPCOMPKEY
{
73 pub type PDEVPROPCOMPKEY
= *mut DEVPROPCOMPKEY
;
75 // IsEqualDevPropCompKey
76 STRUCT
!{struct DEVPROPERTY
{
77 CompKey
: DEVPROPCOMPKEY
,
82 pub type PDEVPROPERTY
= *mut DEVPROPERTY
;
83 pub const DEVPROPID_FIRST_USABLE
: DEVPROPID
= 2;