1 // Copyright © 2018 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 use ctypes
::{c_char, wchar_t}
;
8 use shared
::basetsd
::{ULONG32, ULONG64}
;
9 use shared
::guiddef
::GUID
;
10 use shared
::minwindef
::{BYTE, DWORD, UINT, WORD, WPARAM}
;
11 use um
::winnt
::{HANDLE, LONG}
;
12 use um
::winuser
::HDEVNOTIFY
;
13 pub const WM_DEVICECHANGE
: UINT
= 0x0219;
14 pub const BSF_QUERY
: DWORD
= 0x00000001;
15 pub const BSF_IGNORECURRENTTASK
: DWORD
= 0x00000002;
16 pub const BSF_FLUSHDISK
: DWORD
= 0x00000004;
17 pub const BSF_NOHANG
: DWORD
= 0x00000008;
18 pub const BSF_POSTMESSAGE
: DWORD
= 0x00000010;
19 pub const BSF_FORCEIFHUNG
: DWORD
= 0x00000020;
20 pub const BSF_NOTIMEOUTIFNOTHUNG
: DWORD
= 0x00000040;
21 pub const BSF_MSGSRV32ISOK
: DWORD
= 0x80000000;
22 pub const BSF_MSGSRV32ISOK_BIT
: usize = 31;
23 pub const BSM_ALLCOMPONENTS
: DWORD
= 0x00000000;
24 pub const BSM_VXDS
: DWORD
= 0x00000001;
25 pub const BSM_NETDRIVER
: DWORD
= 0x00000002;
26 pub const BSM_INSTALLABLEDRIVERS
: DWORD
= 0x00000004;
27 pub const BSM_APPLICATIONS
: DWORD
= 0x00000008;
28 pub const DBT_APPYBEGIN
: WPARAM
= 0x0000;
29 pub const DBT_APPYEND
: WPARAM
= 0x0001;
30 pub const DBT_DEVNODES_CHANGED
: WPARAM
= 0x0007;
31 pub const DBT_QUERYCHANGECONFIG
: WPARAM
= 0x0017;
32 pub const DBT_CONFIGCHANGED
: WPARAM
= 0x0018;
33 pub const DBT_CONFIGCHANGECANCELED
: WPARAM
= 0x0019;
34 pub const DBT_MONITORCHANGE
: WPARAM
= 0x001B;
35 pub const DBT_SHELLLOGGEDON
: WPARAM
= 0x0020;
36 pub const DBT_CONFIGMGAPI32
: WPARAM
= 0x0022;
37 pub const DBT_VXDINITCOMPLETE
: WPARAM
= 0x0023;
38 pub const DBT_VOLLOCKQUERYLOCK
: WPARAM
= 0x8041;
39 pub const DBT_VOLLOCKLOCKTAKEN
: WPARAM
= 0x8042;
40 pub const DBT_VOLLOCKLOCKFAILED
: WPARAM
= 0x8043;
41 pub const DBT_VOLLOCKQUERYUNLOCK
: WPARAM
= 0x8044;
42 pub const DBT_VOLLOCKLOCKRELEASED
: WPARAM
= 0x8045;
43 pub const DBT_VOLLOCKUNLOCKFAILED
: WPARAM
= 0x8046;
44 STRUCT
!{struct DEV_BROADCAST_HDR
{
46 dbch_devicetype
: DWORD
,
49 pub type PDEV_BROADCAST_HDR
= *mut DEV_BROADCAST_HDR
;
50 STRUCT
!{struct VolLockBroadcast
{
51 vlb_dbh
: DEV_BROADCAST_HDR
,
58 pub type pVolLockBroadcast
= *mut VolLockBroadcast
;
59 pub const LOCKP_ALLOW_WRITES
: BYTE
= 0x01;
60 pub const LOCKP_FAIL_WRITES
: BYTE
= 0x00;
61 pub const LOCKP_FAIL_MEM_MAPPING
: BYTE
= 0x02;
62 pub const LOCKP_ALLOW_MEM_MAPPING
: BYTE
= 0x00;
63 pub const LOCKP_USER_MASK
: BYTE
= 0x03;
64 pub const LOCKP_LOCK_FOR_FORMAT
: BYTE
= 0x04;
65 pub const LOCKF_LOGICAL_LOCK
: BYTE
= 0x00;
66 pub const LOCKF_PHYSICAL_LOCK
: BYTE
= 0x01;
67 pub const DBT_NO_DISK_SPACE
: WPARAM
= 0x0047;
68 pub const DBT_LOW_DISK_SPACE
: WPARAM
= 0x0048;
69 pub const DBT_CONFIGMGPRIVATE
: WPARAM
= 0x7FFF;
70 pub const DBT_DEVICEARRIVAL
: WPARAM
= 0x8000;
71 pub const DBT_DEVICEQUERYREMOVE
: WPARAM
= 0x8001;
72 pub const DBT_DEVICEQUERYREMOVEFAILED
: WPARAM
= 0x8002;
73 pub const DBT_DEVICEREMOVEPENDING
: WPARAM
= 0x8003;
74 pub const DBT_DEVICEREMOVECOMPLETE
: WPARAM
= 0x8004;
75 pub const DBT_DEVICETYPESPECIFIC
: WPARAM
= 0x8005;
76 pub const DBT_CUSTOMEVENT
: WPARAM
= 0x8006;
77 pub const DBT_DEVTYP_OEM
: DWORD
= 0x00000000;
78 pub const DBT_DEVTYP_DEVNODE
: DWORD
= 0x00000001;
79 pub const DBT_DEVTYP_VOLUME
: DWORD
= 0x00000002;
80 pub const DBT_DEVTYP_PORT
: DWORD
= 0x00000003;
81 pub const DBT_DEVTYP_NET
: DWORD
= 0x00000004;
82 pub const DBT_DEVTYP_DEVICEINTERFACE
: DWORD
= 0x00000005;
83 pub const DBT_DEVTYP_HANDLE
: DWORD
= 0x00000006;
84 STRUCT
!{struct _DEV_BROADCAST_HEADER
{
86 dbcd_devicetype
: DWORD
,
89 STRUCT
!{struct DEV_BROADCAST_OEM
{
91 dbco_devicetype
: DWORD
,
93 dbco_identifier
: DWORD
,
96 pub type PDEV_BROADCAST_OEM
= *mut DEV_BROADCAST_OEM
;
97 STRUCT
!{struct DEV_BROADCAST_DEVNODE
{
99 dbcd_devicetype
: DWORD
,
100 dbcd_reserved
: DWORD
,
103 pub type PDEV_BROADCAST_DEVNODE
= *mut DEV_BROADCAST_DEVNODE
;
104 STRUCT
!{struct DEV_BROADCAST_VOLUME
{
106 dbcv_devicetype
: DWORD
,
107 dbcv_reserved
: DWORD
,
108 dbcv_unitmask
: DWORD
,
111 pub type PDEV_BROADCAST_VOLUME
= *mut DEV_BROADCAST_VOLUME
;
112 pub const DBTF_MEDIA
: WORD
= 0x0001;
113 pub const DBTF_NET
: WORD
= 0x0002;
114 STRUCT
!{struct DEV_BROADCAST_PORT_A
{
116 dbcp_devicetype
: DWORD
,
117 dbcp_reserved
: DWORD
,
118 dbcp_name
: [c_char
; 1],
120 pub type PDEV_BROADCAST_PORT_A
= *mut DEV_BROADCAST_PORT_A
;
121 STRUCT
!{struct DEV_BROADCAST_PORT_W
{
123 dbcp_devicetype
: DWORD
,
124 dbcp_reserved
: DWORD
,
125 dbcp_name
: [wchar_t
; 1],
127 pub type PDEV_BROADCAST_PORT_W
= *mut DEV_BROADCAST_PORT_W
;
128 STRUCT
!{struct DEV_BROADCAST_NET
{
130 dbcn_devicetype
: DWORD
,
131 dbcn_reserved
: DWORD
,
132 dbcn_resource
: DWORD
,
135 pub type PDEV_BROADCAST_NET
= *mut DEV_BROADCAST_NET
;
136 STRUCT
!{struct DEV_BROADCAST_DEVICEINTERFACE_A
{
138 dbcc_devicetype
: DWORD
,
139 dbcc_reserved
: DWORD
,
140 dbcc_classguid
: GUID
,
141 dbcc_name
: [c_char
; 1],
143 pub type PDEV_BROADCAST_DEVICEINTERFACE_A
= *mut DEV_BROADCAST_DEVICEINTERFACE_A
;
144 STRUCT
!{struct DEV_BROADCAST_DEVICEINTERFACE_W
{
146 dbcc_devicetype
: DWORD
,
147 dbcc_reserved
: DWORD
,
148 dbcc_classguid
: GUID
,
149 dbcc_name
: [wchar_t
; 1],
151 pub type PDEV_BROADCAST_DEVICEINTERFACE_W
= *mut DEV_BROADCAST_DEVICEINTERFACE_W
;
152 STRUCT
!{struct DEV_BROADCAST_HANDLE
{
154 dbch_devicetype
: DWORD
,
155 dbch_reserved
: DWORD
,
157 dbch_hdevnotify
: HDEVNOTIFY
,
158 dbch_eventguid
: GUID
,
159 dbch_nameoffset
: LONG
,
160 dbch_data
: [BYTE
; 1],
162 pub type PDEV_BROADCAST_HANDLE
= *mut DEV_BROADCAST_HANDLE
;
163 STRUCT
!{struct DEV_BROADCAST_HANDLE32
{
165 dbch_devicetype
: DWORD
,
166 dbch_reserved
: DWORD
,
167 dbch_handle
: ULONG32
,
168 dbch_hdevnotify
: ULONG32
,
169 dbch_eventguid
: GUID
,
170 dbch_nameoffset
: LONG
,
171 dbch_data
: [BYTE
; 1],
173 pub type PDEV_BROADCAST_HANDLE32
= *mut DEV_BROADCAST_HANDLE32
;
174 STRUCT
!{struct DEV_BROADCAST_HANDLE64
{
176 dbch_devicetype
: DWORD
,
177 dbch_reserved
: DWORD
,
178 dbch_handle
: ULONG64
,
179 dbch_hdevnotify
: ULONG64
,
180 dbch_eventguid
: GUID
,
181 dbch_nameoffset
: LONG
,
182 dbch_data
: [BYTE
; 1],
184 pub type PDEV_BROADCAST_HANDLE64
= *mut DEV_BROADCAST_HANDLE64
;
185 pub const DBTF_RESOURCE
: DWORD
= 0x00000001;
186 pub const DBTF_XPORT
: DWORD
= 0x00000002;
187 pub const DBTF_SLOWNET
: DWORD
= 0x00000004;
188 pub const DBT_VPOWERDAPI
: WPARAM
= 0x8100;
189 pub const DBT_USERDEFINED
: WPARAM
= 0xFFFF;
190 STRUCT
!{struct _DEV_BROADCAST_USERDEFINED
{
191 dbud_dbh
: DEV_BROADCAST_HDR
,
192 dbud_szName
: [c_char
; 1],