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