| 1 |
/***********************************************************************\ |
|---|
| 2 |
* dbt.d * |
|---|
| 3 |
* * |
|---|
| 4 |
* Windows API header module * |
|---|
| 5 |
* * |
|---|
| 6 |
* Translated from MinGW Windows headers * |
|---|
| 7 |
* by Vladimir Vlasov * |
|---|
| 8 |
* * |
|---|
| 9 |
* Placed into public domain * |
|---|
| 10 |
\***********************************************************************/ |
|---|
| 11 |
module win32.dbt; |
|---|
| 12 |
|
|---|
| 13 |
import win32.w32api, win32.windef; |
|---|
| 14 |
import win32.basetyps; // for GUID |
|---|
| 15 |
|
|---|
| 16 |
// FIXME: clean up Windows version support |
|---|
| 17 |
|
|---|
| 18 |
enum : DWORD { |
|---|
| 19 |
DBT_NO_DISK_SPACE = 0x47, |
|---|
| 20 |
DBT_CONFIGMGPRIVATE = 0x7FFF, |
|---|
| 21 |
DBT_DEVICEARRIVAL = 0x8000, |
|---|
| 22 |
DBT_DEVICEQUERYREMOVE = 0x8001, |
|---|
| 23 |
DBT_DEVICEQUERYREMOVEFAILED = 0x8002, |
|---|
| 24 |
DBT_DEVICEREMOVEPENDING = 0x8003, |
|---|
| 25 |
DBT_DEVICEREMOVECOMPLETE = 0x8004, |
|---|
| 26 |
DBT_DEVICETYPESPECIFIC = 0x8005, |
|---|
| 27 |
DBT_DEVTYP_OEM = 0, |
|---|
| 28 |
DBT_DEVTYP_DEVNODE = 1, |
|---|
| 29 |
DBT_DEVTYP_VOLUME = 2, |
|---|
| 30 |
DBT_DEVTYP_PORT = 3, |
|---|
| 31 |
DBT_DEVTYP_NET = 4 |
|---|
| 32 |
} |
|---|
| 33 |
|
|---|
| 34 |
static if (_WIN32_WINDOWS >= 0x040A) { |
|---|
| 35 |
enum : DWORD { |
|---|
| 36 |
DBT_DEVTYP_DEVICEINTERFACE = 5, |
|---|
| 37 |
DBT_DEVTYP_HANDLE = 6 |
|---|
| 38 |
} |
|---|
| 39 |
} |
|---|
| 40 |
|
|---|
| 41 |
enum : DWORD { |
|---|
| 42 |
DBT_APPYBEGIN, |
|---|
| 43 |
DBT_APPYEND, |
|---|
| 44 |
DBT_DEVNODES_CHANGED = 7, |
|---|
| 45 |
DBT_QUERYCHANGECONFIG = 0x17, |
|---|
| 46 |
DBT_CONFIGCHANGED = 0x18, |
|---|
| 47 |
DBT_CONFIGCHANGECANCELED = 0x19, |
|---|
| 48 |
DBT_MONITORCHANGE = 0x1B, |
|---|
| 49 |
DBT_SHELLLOGGEDON = 32, |
|---|
| 50 |
DBT_CONFIGMGAPI32 = 34, |
|---|
| 51 |
DBT_VXDINITCOMPLETE = 35, |
|---|
| 52 |
DBT_VOLLOCKQUERYLOCK = 0x8041, |
|---|
| 53 |
DBT_VOLLOCKLOCKTAKEN = 0x8042, |
|---|
| 54 |
DBT_VOLLOCKLOCKFAILED = 0x8043, |
|---|
| 55 |
DBT_VOLLOCKQUERYUNLOCK = 0x8044, |
|---|
| 56 |
DBT_VOLLOCKLOCKRELEASED = 0x8045, |
|---|
| 57 |
DBT_VOLLOCKUNLOCKFAILED = 0x8046, |
|---|
| 58 |
DBT_USERDEFINED = 0xFFFF |
|---|
| 59 |
} |
|---|
| 60 |
|
|---|
| 61 |
enum : WORD { |
|---|
| 62 |
DBTF_MEDIA = 1, |
|---|
| 63 |
DBTF_NET = 2 |
|---|
| 64 |
} |
|---|
| 65 |
|
|---|
| 66 |
enum : DWORD { |
|---|
| 67 |
BSM_ALLCOMPONENTS = 0, |
|---|
| 68 |
BSM_APPLICATIONS = 8, |
|---|
| 69 |
BSM_ALLDESKTOPS = 16, |
|---|
| 70 |
BSM_INSTALLABLEDRIVERS = 4, |
|---|
| 71 |
BSM_NETDRIVER = 2, |
|---|
| 72 |
BSM_VXDS = 1, |
|---|
| 73 |
BSF_FLUSHDISK = 0x00000004, |
|---|
| 74 |
BSF_FORCEIFHUNG = 0x00000020, |
|---|
| 75 |
BSF_IGNORECURRENTTASK = 0x00000002, |
|---|
| 76 |
BSF_NOHANG = 0x00000008, |
|---|
| 77 |
BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, |
|---|
| 78 |
BSF_POSTMESSAGE = 0x00000010, |
|---|
| 79 |
BSF_QUERY = 0x00000001, |
|---|
| 80 |
BSF_MSGSRV32ISOK_BIT = 31, |
|---|
| 81 |
BSF_MSGSRV32ISOK = 0x80000000 |
|---|
| 82 |
} |
|---|
| 83 |
|
|---|
| 84 |
static if (_WIN32_WINNT >= 0x0500) { |
|---|
| 85 |
enum : DWORD { |
|---|
| 86 |
BSF_ALLOWSFW = 0x00000080, |
|---|
| 87 |
BSF_SENDNOTIFYMESSAGE = 0x00000100 |
|---|
| 88 |
} |
|---|
| 89 |
} |
|---|
| 90 |
|
|---|
| 91 |
static if (_WIN32_WINNT >= 0x0501) { |
|---|
| 92 |
enum : DWORD { |
|---|
| 93 |
BSF_LUID = 0x00000400, |
|---|
| 94 |
BSF_RETURNHDESK = 0x00000200 |
|---|
| 95 |
} |
|---|
| 96 |
} |
|---|
| 97 |
|
|---|
| 98 |
struct DEV_BROADCAST_HDR { |
|---|
| 99 |
DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; |
|---|
| 100 |
DWORD dbch_devicetype; |
|---|
| 101 |
DWORD dbch_reserved; |
|---|
| 102 |
} |
|---|
| 103 |
alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; |
|---|
| 104 |
|
|---|
| 105 |
struct DEV_BROADCAST_OEM { |
|---|
| 106 |
DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; |
|---|
| 107 |
DWORD dbco_devicetype; |
|---|
| 108 |
DWORD dbco_reserved; |
|---|
| 109 |
DWORD dbco_identifier; |
|---|
| 110 |
DWORD dbco_suppfunc; |
|---|
| 111 |
} |
|---|
| 112 |
alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; |
|---|
| 113 |
|
|---|
| 114 |
struct DEV_BROADCAST_PORT_A { |
|---|
| 115 |
DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; |
|---|
| 116 |
DWORD dbcp_devicetype; |
|---|
| 117 |
DWORD dbcp_reserved; |
|---|
| 118 |
char _dbcp_name; |
|---|
| 119 |
char* dbcp_name() { return &_dbcp_name; } |
|---|
| 120 |
} |
|---|
| 121 |
alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; |
|---|
| 122 |
|
|---|
| 123 |
struct DEV_BROADCAST_PORT_W { |
|---|
| 124 |
DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; |
|---|
| 125 |
DWORD dbcp_devicetype; |
|---|
| 126 |
DWORD dbcp_reserved; |
|---|
| 127 |
WCHAR _dbcp_name; |
|---|
| 128 |
WCHAR* dbcp_name() { return &_dbcp_name; } |
|---|
| 129 |
} |
|---|
| 130 |
alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; |
|---|
| 131 |
|
|---|
| 132 |
struct DEV_BROADCAST_USERDEFINED { |
|---|
| 133 |
DEV_BROADCAST_HDR dbud_dbh; |
|---|
| 134 |
char _dbud_szName; |
|---|
| 135 |
char* dbud_szName() { return &_dbud_szName; } |
|---|
| 136 |
} |
|---|
| 137 |
|
|---|
| 138 |
struct DEV_BROADCAST_VOLUME { |
|---|
| 139 |
DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; |
|---|
| 140 |
DWORD dbcv_devicetype; |
|---|
| 141 |
DWORD dbcv_reserved; |
|---|
| 142 |
DWORD dbcv_unitmask; |
|---|
| 143 |
WORD dbcv_flags; |
|---|
| 144 |
} |
|---|
| 145 |
alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; |
|---|
| 146 |
|
|---|
| 147 |
version (Unicode) { |
|---|
| 148 |
alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; |
|---|
| 149 |
} else { |
|---|
| 150 |
alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; |
|---|
| 151 |
} |
|---|
| 152 |
alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; |
|---|
| 153 |
|
|---|
| 154 |
static if ((_WIN32_WINDOWS >= 0x0410) || (_WIN32_WINNT >= 0x0500)) { |
|---|
| 155 |
struct DEV_BROADCAST_DEVICEINTERFACE_A { |
|---|
| 156 |
DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; |
|---|
| 157 |
DWORD dbcc_devicetype; |
|---|
| 158 |
DWORD dbcc_reserved; |
|---|
| 159 |
GUID dbcc_classguid; |
|---|
| 160 |
char _dbcc_name; |
|---|
| 161 |
char* dbcc_name() { return &_dbcc_name; } |
|---|
| 162 |
} |
|---|
| 163 |
alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; |
|---|
| 164 |
|
|---|
| 165 |
struct DEV_BROADCAST_DEVICEINTERFACE_W { |
|---|
| 166 |
DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; |
|---|
| 167 |
DWORD dbcc_devicetype; |
|---|
| 168 |
DWORD dbcc_reserved; |
|---|
| 169 |
GUID dbcc_classguid; |
|---|
| 170 |
WCHAR _dbcc_name; |
|---|
| 171 |
WCHAR* dbcc_name() { return &_dbcc_name; } |
|---|
| 172 |
} |
|---|
| 173 |
alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; |
|---|
| 174 |
|
|---|
| 175 |
version (Unicode) { |
|---|
| 176 |
alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; |
|---|
| 177 |
} else { |
|---|
| 178 |
alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; |
|---|
| 179 |
} |
|---|
| 180 |
alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; |
|---|
| 181 |
|
|---|
| 182 |
struct DEV_BROADCAST_HANDLE { |
|---|
| 183 |
DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; |
|---|
| 184 |
DWORD dbch_devicetype; |
|---|
| 185 |
DWORD dbch_reserved; |
|---|
| 186 |
HANDLE dbch_handle; |
|---|
| 187 |
DWORD dbch_hdevnotify; |
|---|
| 188 |
GUID dbch_eventguid; |
|---|
| 189 |
LONG dbch_nameoffset; |
|---|
| 190 |
BYTE _dbch_data; |
|---|
| 191 |
BYTE* dbch_data() { return &_dbch_data; } |
|---|
| 192 |
} |
|---|
| 193 |
alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; |
|---|
| 194 |
} |
|---|