winapi_ui_automation/um/
dbt.rs

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.
6use ctypes::{c_char, wchar_t};
7use shared::basetsd::{ULONG32, ULONG64};
8use shared::guiddef::GUID;
9use shared::minwindef::{BYTE, DWORD, UINT, WORD, WPARAM};
10use um::winnt::{HANDLE, LONG};
11use um::winuser::HDEVNOTIFY;
12pub const WM_DEVICECHANGE: UINT = 0x0219;
13pub const BSF_QUERY: DWORD = 0x00000001;
14pub const BSF_IGNORECURRENTTASK: DWORD = 0x00000002;
15pub const BSF_FLUSHDISK: DWORD = 0x00000004;
16pub const BSF_NOHANG: DWORD = 0x00000008;
17pub const BSF_POSTMESSAGE: DWORD = 0x00000010;
18pub const BSF_FORCEIFHUNG: DWORD = 0x00000020;
19pub const BSF_NOTIMEOUTIFNOTHUNG: DWORD = 0x00000040;
20pub const BSF_MSGSRV32ISOK: DWORD = 0x80000000;
21pub const BSF_MSGSRV32ISOK_BIT: usize = 31;
22pub const BSM_ALLCOMPONENTS: DWORD = 0x00000000;
23pub const BSM_VXDS: DWORD = 0x00000001;
24pub const BSM_NETDRIVER: DWORD = 0x00000002;
25pub const BSM_INSTALLABLEDRIVERS: DWORD = 0x00000004;
26pub const BSM_APPLICATIONS: DWORD = 0x00000008;
27pub const DBT_APPYBEGIN: WPARAM = 0x0000;
28pub const DBT_APPYEND: WPARAM = 0x0001;
29pub const DBT_DEVNODES_CHANGED: WPARAM = 0x0007;
30pub const DBT_QUERYCHANGECONFIG: WPARAM = 0x0017;
31pub const DBT_CONFIGCHANGED: WPARAM = 0x0018;
32pub const DBT_CONFIGCHANGECANCELED: WPARAM = 0x0019;
33pub const DBT_MONITORCHANGE: WPARAM = 0x001B;
34pub const DBT_SHELLLOGGEDON: WPARAM = 0x0020;
35pub const DBT_CONFIGMGAPI32: WPARAM = 0x0022;
36pub const DBT_VXDINITCOMPLETE: WPARAM = 0x0023;
37pub const DBT_VOLLOCKQUERYLOCK: WPARAM = 0x8041;
38pub const DBT_VOLLOCKLOCKTAKEN: WPARAM = 0x8042;
39pub const DBT_VOLLOCKLOCKFAILED: WPARAM = 0x8043;
40pub const DBT_VOLLOCKQUERYUNLOCK: WPARAM = 0x8044;
41pub const DBT_VOLLOCKLOCKRELEASED: WPARAM = 0x8045;
42pub const DBT_VOLLOCKUNLOCKFAILED: WPARAM = 0x8046;
43STRUCT!{struct DEV_BROADCAST_HDR {
44    dbch_size: DWORD,
45    dbch_devicetype: DWORD,
46    dbch_reserved: DWORD,
47}}
48pub type PDEV_BROADCAST_HDR = *mut DEV_BROADCAST_HDR;
49STRUCT!{struct VolLockBroadcast {
50    vlb_dbh: DEV_BROADCAST_HDR,
51    vlb_owner: DWORD,
52    vlb_perms: BYTE,
53    vlb_lockType: BYTE,
54    vlb_drive: BYTE,
55    vlb_flags: BYTE,
56}}
57pub type pVolLockBroadcast = *mut VolLockBroadcast;
58pub const LOCKP_ALLOW_WRITES: BYTE = 0x01;
59pub const LOCKP_FAIL_WRITES: BYTE = 0x00;
60pub const LOCKP_FAIL_MEM_MAPPING: BYTE = 0x02;
61pub const LOCKP_ALLOW_MEM_MAPPING: BYTE = 0x00;
62pub const LOCKP_USER_MASK: BYTE = 0x03;
63pub const LOCKP_LOCK_FOR_FORMAT: BYTE = 0x04;
64pub const LOCKF_LOGICAL_LOCK: BYTE = 0x00;
65pub const LOCKF_PHYSICAL_LOCK: BYTE = 0x01;
66pub const DBT_NO_DISK_SPACE: WPARAM = 0x0047;
67pub const DBT_LOW_DISK_SPACE: WPARAM = 0x0048;
68pub const DBT_CONFIGMGPRIVATE: WPARAM = 0x7FFF;
69pub const DBT_DEVICEARRIVAL: WPARAM = 0x8000;
70pub const DBT_DEVICEQUERYREMOVE: WPARAM = 0x8001;
71pub const DBT_DEVICEQUERYREMOVEFAILED: WPARAM = 0x8002;
72pub const DBT_DEVICEREMOVEPENDING: WPARAM = 0x8003;
73pub const DBT_DEVICEREMOVECOMPLETE: WPARAM = 0x8004;
74pub const DBT_DEVICETYPESPECIFIC: WPARAM = 0x8005;
75pub const DBT_CUSTOMEVENT: WPARAM = 0x8006;
76pub const DBT_DEVTYP_OEM: DWORD = 0x00000000;
77pub const DBT_DEVTYP_DEVNODE: DWORD = 0x00000001;
78pub const DBT_DEVTYP_VOLUME: DWORD = 0x00000002;
79pub const DBT_DEVTYP_PORT: DWORD = 0x00000003;
80pub const DBT_DEVTYP_NET: DWORD = 0x00000004;
81pub const DBT_DEVTYP_DEVICEINTERFACE: DWORD = 0x00000005;
82pub const DBT_DEVTYP_HANDLE: DWORD = 0x00000006;
83STRUCT!{struct _DEV_BROADCAST_HEADER {
84    dbcd_size: DWORD,
85    dbcd_devicetype: DWORD,
86    dbcd_reserved: DWORD,
87}}
88STRUCT!{struct DEV_BROADCAST_OEM {
89    dbco_size: DWORD,
90    dbco_devicetype: DWORD,
91    dbco_reserved: DWORD,
92    dbco_identifier: DWORD,
93    dbco_suppfunc: DWORD,
94}}
95pub type PDEV_BROADCAST_OEM = *mut DEV_BROADCAST_OEM;
96STRUCT!{struct DEV_BROADCAST_DEVNODE {
97    dbcd_size: DWORD,
98    dbcd_devicetype: DWORD,
99    dbcd_reserved: DWORD,
100    dbcd_devnode: DWORD,
101}}
102pub type PDEV_BROADCAST_DEVNODE = *mut DEV_BROADCAST_DEVNODE;
103STRUCT!{struct DEV_BROADCAST_VOLUME {
104    dbcv_size: DWORD,
105    dbcv_devicetype: DWORD,
106    dbcv_reserved: DWORD,
107    dbcv_unitmask: DWORD,
108    dbcv_flags: WORD,
109}}
110pub type PDEV_BROADCAST_VOLUME = *mut DEV_BROADCAST_VOLUME;
111pub const DBTF_MEDIA: WORD = 0x0001;
112pub const DBTF_NET: WORD = 0x0002;
113STRUCT!{struct DEV_BROADCAST_PORT_A {
114    dbcp_size: DWORD,
115    dbcp_devicetype: DWORD,
116    dbcp_reserved: DWORD,
117    dbcp_name: [c_char; 1],
118}}
119pub type PDEV_BROADCAST_PORT_A = *mut DEV_BROADCAST_PORT_A;
120STRUCT!{struct DEV_BROADCAST_PORT_W {
121    dbcp_size: DWORD,
122    dbcp_devicetype: DWORD,
123    dbcp_reserved: DWORD,
124    dbcp_name: [wchar_t; 1],
125}}
126pub type PDEV_BROADCAST_PORT_W = *mut DEV_BROADCAST_PORT_W;
127STRUCT!{struct DEV_BROADCAST_NET {
128    dbcn_size: DWORD,
129    dbcn_devicetype: DWORD,
130    dbcn_reserved: DWORD,
131    dbcn_resource: DWORD,
132    dbcn_flags: DWORD,
133}}
134pub type PDEV_BROADCAST_NET = *mut DEV_BROADCAST_NET;
135STRUCT!{struct DEV_BROADCAST_DEVICEINTERFACE_A {
136    dbcc_size: DWORD,
137    dbcc_devicetype: DWORD,
138    dbcc_reserved: DWORD,
139    dbcc_classguid: GUID,
140    dbcc_name: [c_char; 1],
141}}
142pub type PDEV_BROADCAST_DEVICEINTERFACE_A = *mut DEV_BROADCAST_DEVICEINTERFACE_A;
143STRUCT!{struct DEV_BROADCAST_DEVICEINTERFACE_W {
144    dbcc_size: DWORD,
145    dbcc_devicetype: DWORD,
146    dbcc_reserved: DWORD,
147    dbcc_classguid: GUID,
148    dbcc_name: [wchar_t; 1],
149}}
150pub type PDEV_BROADCAST_DEVICEINTERFACE_W = *mut DEV_BROADCAST_DEVICEINTERFACE_W;
151STRUCT!{struct DEV_BROADCAST_HANDLE {
152    dbch_size: DWORD,
153    dbch_devicetype: DWORD,
154    dbch_reserved: DWORD,
155    dbch_handle: HANDLE,
156    dbch_hdevnotify: HDEVNOTIFY,
157    dbch_eventguid: GUID,
158    dbch_nameoffset: LONG,
159    dbch_data: [BYTE; 1],
160}}
161pub type PDEV_BROADCAST_HANDLE = *mut DEV_BROADCAST_HANDLE;
162STRUCT!{struct DEV_BROADCAST_HANDLE32 {
163    dbch_size: DWORD,
164    dbch_devicetype: DWORD,
165    dbch_reserved: DWORD,
166    dbch_handle: ULONG32,
167    dbch_hdevnotify: ULONG32,
168    dbch_eventguid: GUID,
169    dbch_nameoffset: LONG,
170    dbch_data: [BYTE; 1],
171}}
172pub type PDEV_BROADCAST_HANDLE32 = *mut DEV_BROADCAST_HANDLE32;
173STRUCT!{struct DEV_BROADCAST_HANDLE64 {
174    dbch_size: DWORD,
175    dbch_devicetype: DWORD,
176    dbch_reserved: DWORD,
177    dbch_handle: ULONG64,
178    dbch_hdevnotify: ULONG64,
179    dbch_eventguid: GUID,
180    dbch_nameoffset: LONG,
181    dbch_data: [BYTE; 1],
182}}
183pub type PDEV_BROADCAST_HANDLE64 = *mut DEV_BROADCAST_HANDLE64;
184pub const DBTF_RESOURCE: DWORD = 0x00000001;
185pub const DBTF_XPORT: DWORD = 0x00000002;
186pub const DBTF_SLOWNET: DWORD = 0x00000004;
187pub const DBT_VPOWERDAPI: WPARAM = 0x8100;
188pub const DBT_USERDEFINED: WPARAM = 0xFFFF;
189STRUCT!{struct _DEV_BROADCAST_USERDEFINED {
190    dbud_dbh: DEV_BROADCAST_HDR,
191    dbud_szName: [c_char; 1],
192}}