| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| use ctypes::{c_char, wchar_t}; |
| use shared::basetsd::{ULONG32, ULONG64}; |
| use shared::guiddef::GUID; |
| use shared::minwindef::{BYTE, DWORD, UINT, WORD, WPARAM}; |
| use um::winnt::{HANDLE, LONG}; |
| use um::winuser::HDEVNOTIFY; |
| pub const WM_DEVICECHANGE: UINT = 0x0219; |
| pub const BSF_QUERY: DWORD = 0x00000001; |
| pub const BSF_IGNORECURRENTTASK: DWORD = 0x00000002; |
| pub const BSF_FLUSHDISK: DWORD = 0x00000004; |
| pub const BSF_NOHANG: DWORD = 0x00000008; |
| pub const BSF_POSTMESSAGE: DWORD = 0x00000010; |
| pub const BSF_FORCEIFHUNG: DWORD = 0x00000020; |
| pub const BSF_NOTIMEOUTIFNOTHUNG: DWORD = 0x00000040; |
| pub const BSF_MSGSRV32ISOK: DWORD = 0x80000000; |
| pub const BSF_MSGSRV32ISOK_BIT: usize = 31; |
| pub const BSM_ALLCOMPONENTS: DWORD = 0x00000000; |
| pub const BSM_VXDS: DWORD = 0x00000001; |
| pub const BSM_NETDRIVER: DWORD = 0x00000002; |
| pub const BSM_INSTALLABLEDRIVERS: DWORD = 0x00000004; |
| pub const BSM_APPLICATIONS: DWORD = 0x00000008; |
| pub const DBT_APPYBEGIN: WPARAM = 0x0000; |
| pub const DBT_APPYEND: WPARAM = 0x0001; |
| pub const DBT_DEVNODES_CHANGED: WPARAM = 0x0007; |
| pub const DBT_QUERYCHANGECONFIG: WPARAM = 0x0017; |
| pub const DBT_CONFIGCHANGED: WPARAM = 0x0018; |
| pub const DBT_CONFIGCHANGECANCELED: WPARAM = 0x0019; |
| pub const DBT_MONITORCHANGE: WPARAM = 0x001B; |
| pub const DBT_SHELLLOGGEDON: WPARAM = 0x0020; |
| pub const DBT_CONFIGMGAPI32: WPARAM = 0x0022; |
| pub const DBT_VXDINITCOMPLETE: WPARAM = 0x0023; |
| pub const DBT_VOLLOCKQUERYLOCK: WPARAM = 0x8041; |
| pub const DBT_VOLLOCKLOCKTAKEN: WPARAM = 0x8042; |
| pub const DBT_VOLLOCKLOCKFAILED: WPARAM = 0x8043; |
| pub const DBT_VOLLOCKQUERYUNLOCK: WPARAM = 0x8044; |
| pub const DBT_VOLLOCKLOCKRELEASED: WPARAM = 0x8045; |
| pub const DBT_VOLLOCKUNLOCKFAILED: WPARAM = 0x8046; |
| STRUCT!{struct DEV_BROADCAST_HDR { |
| dbch_size: DWORD, |
| dbch_devicetype: DWORD, |
| dbch_reserved: DWORD, |
| }} |
| pub type PDEV_BROADCAST_HDR = *mut DEV_BROADCAST_HDR; |
| STRUCT!{struct VolLockBroadcast { |
| vlb_dbh: DEV_BROADCAST_HDR, |
| vlb_owner: DWORD, |
| vlb_perms: BYTE, |
| vlb_lockType: BYTE, |
| vlb_drive: BYTE, |
| vlb_flags: BYTE, |
| }} |
| pub type pVolLockBroadcast = *mut VolLockBroadcast; |
| pub const LOCKP_ALLOW_WRITES: BYTE = 0x01; |
| pub const LOCKP_FAIL_WRITES: BYTE = 0x00; |
| pub const LOCKP_FAIL_MEM_MAPPING: BYTE = 0x02; |
| pub const LOCKP_ALLOW_MEM_MAPPING: BYTE = 0x00; |
| pub const LOCKP_USER_MASK: BYTE = 0x03; |
| pub const LOCKP_LOCK_FOR_FORMAT: BYTE = 0x04; |
| pub const LOCKF_LOGICAL_LOCK: BYTE = 0x00; |
| pub const LOCKF_PHYSICAL_LOCK: BYTE = 0x01; |
| pub const DBT_NO_DISK_SPACE: WPARAM = 0x0047; |
| pub const DBT_LOW_DISK_SPACE: WPARAM = 0x0048; |
| pub const DBT_CONFIGMGPRIVATE: WPARAM = 0x7FFF; |
| pub const DBT_DEVICEARRIVAL: WPARAM = 0x8000; |
| pub const DBT_DEVICEQUERYREMOVE: WPARAM = 0x8001; |
| pub const DBT_DEVICEQUERYREMOVEFAILED: WPARAM = 0x8002; |
| pub const DBT_DEVICEREMOVEPENDING: WPARAM = 0x8003; |
| pub const DBT_DEVICEREMOVECOMPLETE: WPARAM = 0x8004; |
| pub const DBT_DEVICETYPESPECIFIC: WPARAM = 0x8005; |
| pub const DBT_CUSTOMEVENT: WPARAM = 0x8006; |
| pub const DBT_DEVTYP_OEM: DWORD = 0x00000000; |
| pub const DBT_DEVTYP_DEVNODE: DWORD = 0x00000001; |
| pub const DBT_DEVTYP_VOLUME: DWORD = 0x00000002; |
| pub const DBT_DEVTYP_PORT: DWORD = 0x00000003; |
| pub const DBT_DEVTYP_NET: DWORD = 0x00000004; |
| pub const DBT_DEVTYP_DEVICEINTERFACE: DWORD = 0x00000005; |
| pub const DBT_DEVTYP_HANDLE: DWORD = 0x00000006; |
| STRUCT!{struct _DEV_BROADCAST_HEADER { |
| dbcd_size: DWORD, |
| dbcd_devicetype: DWORD, |
| dbcd_reserved: DWORD, |
| }} |
| STRUCT!{struct DEV_BROADCAST_OEM { |
| dbco_size: DWORD, |
| dbco_devicetype: DWORD, |
| dbco_reserved: DWORD, |
| dbco_identifier: DWORD, |
| dbco_suppfunc: DWORD, |
| }} |
| pub type PDEV_BROADCAST_OEM = *mut DEV_BROADCAST_OEM; |
| STRUCT!{struct DEV_BROADCAST_DEVNODE { |
| dbcd_size: DWORD, |
| dbcd_devicetype: DWORD, |
| dbcd_reserved: DWORD, |
| dbcd_devnode: DWORD, |
| }} |
| pub type PDEV_BROADCAST_DEVNODE = *mut DEV_BROADCAST_DEVNODE; |
| STRUCT!{struct DEV_BROADCAST_VOLUME { |
| dbcv_size: DWORD, |
| dbcv_devicetype: DWORD, |
| dbcv_reserved: DWORD, |
| dbcv_unitmask: DWORD, |
| dbcv_flags: WORD, |
| }} |
| pub type PDEV_BROADCAST_VOLUME = *mut DEV_BROADCAST_VOLUME; |
| pub const DBTF_MEDIA: WORD = 0x0001; |
| pub const DBTF_NET: WORD = 0x0002; |
| STRUCT!{struct DEV_BROADCAST_PORT_A { |
| dbcp_size: DWORD, |
| dbcp_devicetype: DWORD, |
| dbcp_reserved: DWORD, |
| dbcp_name: [c_char; 1], |
| }} |
| pub type PDEV_BROADCAST_PORT_A = *mut DEV_BROADCAST_PORT_A; |
| STRUCT!{struct DEV_BROADCAST_PORT_W { |
| dbcp_size: DWORD, |
| dbcp_devicetype: DWORD, |
| dbcp_reserved: DWORD, |
| dbcp_name: [wchar_t; 1], |
| }} |
| pub type PDEV_BROADCAST_PORT_W = *mut DEV_BROADCAST_PORT_W; |
| STRUCT!{struct DEV_BROADCAST_NET { |
| dbcn_size: DWORD, |
| dbcn_devicetype: DWORD, |
| dbcn_reserved: DWORD, |
| dbcn_resource: DWORD, |
| dbcn_flags: DWORD, |
| }} |
| pub type PDEV_BROADCAST_NET = *mut DEV_BROADCAST_NET; |
| STRUCT!{struct DEV_BROADCAST_DEVICEINTERFACE_A { |
| dbcc_size: DWORD, |
| dbcc_devicetype: DWORD, |
| dbcc_reserved: DWORD, |
| dbcc_classguid: GUID, |
| dbcc_name: [c_char; 1], |
| }} |
| pub type PDEV_BROADCAST_DEVICEINTERFACE_A = *mut DEV_BROADCAST_DEVICEINTERFACE_A; |
| STRUCT!{struct DEV_BROADCAST_DEVICEINTERFACE_W { |
| dbcc_size: DWORD, |
| dbcc_devicetype: DWORD, |
| dbcc_reserved: DWORD, |
| dbcc_classguid: GUID, |
| dbcc_name: [wchar_t; 1], |
| }} |
| pub type PDEV_BROADCAST_DEVICEINTERFACE_W = *mut DEV_BROADCAST_DEVICEINTERFACE_W; |
| STRUCT!{struct DEV_BROADCAST_HANDLE { |
| dbch_size: DWORD, |
| dbch_devicetype: DWORD, |
| dbch_reserved: DWORD, |
| dbch_handle: HANDLE, |
| dbch_hdevnotify: HDEVNOTIFY, |
| dbch_eventguid: GUID, |
| dbch_nameoffset: LONG, |
| dbch_data: [BYTE; 1], |
| }} |
| pub type PDEV_BROADCAST_HANDLE = *mut DEV_BROADCAST_HANDLE; |
| STRUCT!{struct DEV_BROADCAST_HANDLE32 { |
| dbch_size: DWORD, |
| dbch_devicetype: DWORD, |
| dbch_reserved: DWORD, |
| dbch_handle: ULONG32, |
| dbch_hdevnotify: ULONG32, |
| dbch_eventguid: GUID, |
| dbch_nameoffset: LONG, |
| dbch_data: [BYTE; 1], |
| }} |
| pub type PDEV_BROADCAST_HANDLE32 = *mut DEV_BROADCAST_HANDLE32; |
| STRUCT!{struct DEV_BROADCAST_HANDLE64 { |
| dbch_size: DWORD, |
| dbch_devicetype: DWORD, |
| dbch_reserved: DWORD, |
| dbch_handle: ULONG64, |
| dbch_hdevnotify: ULONG64, |
| dbch_eventguid: GUID, |
| dbch_nameoffset: LONG, |
| dbch_data: [BYTE; 1], |
| }} |
| pub type PDEV_BROADCAST_HANDLE64 = *mut DEV_BROADCAST_HANDLE64; |
| pub const DBTF_RESOURCE: DWORD = 0x00000001; |
| pub const DBTF_XPORT: DWORD = 0x00000002; |
| pub const DBTF_SLOWNET: DWORD = 0x00000004; |
| pub const DBT_VPOWERDAPI: WPARAM = 0x8100; |
| pub const DBT_USERDEFINED: WPARAM = 0xFFFF; |
| STRUCT!{struct _DEV_BROADCAST_USERDEFINED { |
| dbud_dbh: DEV_BROADCAST_HDR, |
| dbud_szName: [c_char; 1], |
| }} |