1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6#ifndef _DBT_H
  7#define _DBT_H
  8#include <_mingw_unicode.h>
  9
 10#define WM_DEVICECHANGE 0x0219
 11
 12#ifdef IS_32
 13#define DBTFAR
 14#else
 15#define DBTFAR far
 16#endif
 17
 18#ifndef _WCHAR_T_DEFINED
 19#define _WCHAR_T_DEFINED
 20typedef unsigned short wchar_t;
 21#endif
 22
 23#include <guiddef.h>
 24
 25#define BSF_QUERY 0x00000001
 26#define BSF_IGNORECURRENTTASK 0x00000002
 27#define BSF_FLUSHDISK 0x00000004
 28#define BSF_NOHANG 0x00000008
 29#define BSF_POSTMESSAGE 0x00000010
 30#define BSF_FORCEIFHUNG 0x00000020
 31#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
 32#define BSF_MSGSRV32ISOK 0x80000000
 33#define BSF_MSGSRV32ISOK_BIT 31
 34
 35#define BSM_ALLCOMPONENTS 0x00000000
 36#define BSM_VXDS 0x00000001
 37#define BSM_NETDRIVER 0x00000002
 38#define BSM_INSTALLABLEDRIVERS 0x00000004
 39#define BSM_APPLICATIONS 0x00000008
 40
 41#define DBT_APPYBEGIN 0x0000
 42#define DBT_APPYEND 0x0001
 43#define DBT_DEVNODES_CHANGED 0x0007
 44#define DBT_QUERYCHANGECONFIG 0x0017
 45#define DBT_CONFIGCHANGED 0x0018
 46#define DBT_CONFIGCHANGECANCELED 0x0019
 47#define DBT_MONITORCHANGE 0x001B
 48#define DBT_SHELLLOGGEDON 0x0020
 49#define DBT_CONFIGMGAPI32 0x0022
 50#define DBT_VXDINITCOMPLETE 0x0023
 51#define DBT_VOLLOCKQUERYLOCK 0x8041
 52#define DBT_VOLLOCKLOCKTAKEN 0x8042
 53#define DBT_VOLLOCKLOCKFAILED 0x8043
 54#define DBT_VOLLOCKQUERYUNLOCK 0x8044
 55#define DBT_VOLLOCKLOCKRELEASED 0x8045
 56#define DBT_VOLLOCKUNLOCKFAILED 0x8046
 57
 58struct _DEV_BROADCAST_HDR {
 59  DWORD dbch_size;
 60  DWORD dbch_devicetype;
 61  DWORD dbch_reserved;
 62};
 63
 64typedef struct _DEV_BROADCAST_HDR DEV_BROADCAST_HDR;
 65typedef DEV_BROADCAST_HDR DBTFAR *PDEV_BROADCAST_HDR;
 66typedef struct VolLockBroadcast VolLockBroadcast;
 67typedef VolLockBroadcast *pVolLockBroadcast;
 68
 69struct VolLockBroadcast {
 70  struct _DEV_BROADCAST_HDR vlb_dbh;
 71  DWORD vlb_owner;
 72  BYTE vlb_perms;
 73  BYTE vlb_lockType;
 74  BYTE vlb_drive;
 75  BYTE vlb_flags;
 76};
 77
 78#define LOCKP_ALLOW_WRITES 0x01
 79#define LOCKP_FAIL_WRITES 0x00
 80#define LOCKP_FAIL_MEM_MAPPING 0x02
 81#define LOCKP_ALLOW_MEM_MAPPING 0x00
 82#define LOCKP_USER_MASK 0x03
 83#define LOCKP_LOCK_FOR_FORMAT 0x04
 84
 85#define LOCKF_LOGICAL_LOCK 0x00
 86#define LOCKF_PHYSICAL_LOCK 0x01
 87
 88#define DBT_NO_DISK_SPACE 0x0047
 89#define DBT_LOW_DISK_SPACE 0x0048
 90#define DBT_CONFIGMGPRIVATE 0x7FFF
 91#define DBT_DEVICEARRIVAL 0x8000
 92#define DBT_DEVICEQUERYREMOVE 0x8001
 93#define DBT_DEVICEQUERYREMOVEFAILED 0x8002
 94#define DBT_DEVICEREMOVEPENDING 0x8003
 95#define DBT_DEVICEREMOVECOMPLETE 0x8004
 96#define DBT_DEVICETYPESPECIFIC 0x8005
 97#define DBT_CUSTOMEVENT 0x8006
 98#define DBT_DEVTYP_OEM 0x00000000
 99#define DBT_DEVTYP_DEVNODE 0x00000001
100#define DBT_DEVTYP_VOLUME 0x00000002
101#define DBT_DEVTYP_PORT 0x00000003
102#define DBT_DEVTYP_NET 0x00000004
103#define DBT_DEVTYP_DEVICEINTERFACE 0x00000005
104#define DBT_DEVTYP_HANDLE 0x00000006
105
106struct _DEV_BROADCAST_HEADER {
107  DWORD dbcd_size;
108  DWORD dbcd_devicetype;
109  DWORD dbcd_reserved;
110};
111
112struct _DEV_BROADCAST_OEM {
113  DWORD dbco_size;
114  DWORD dbco_devicetype;
115  DWORD dbco_reserved;
116  DWORD dbco_identifier;
117  DWORD dbco_suppfunc;
118};
119
120typedef struct _DEV_BROADCAST_OEM DEV_BROADCAST_OEM;
121typedef DEV_BROADCAST_OEM DBTFAR *PDEV_BROADCAST_OEM;
122
123struct _DEV_BROADCAST_DEVNODE {
124  DWORD dbcd_size;
125  DWORD dbcd_devicetype;
126  DWORD dbcd_reserved;
127  DWORD dbcd_devnode;
128};
129
130typedef struct _DEV_BROADCAST_DEVNODE DEV_BROADCAST_DEVNODE;
131typedef DEV_BROADCAST_DEVNODE DBTFAR *PDEV_BROADCAST_DEVNODE;
132
133struct _DEV_BROADCAST_VOLUME {
134  DWORD dbcv_size;
135  DWORD dbcv_devicetype;
136  DWORD dbcv_reserved;
137  DWORD dbcv_unitmask;
138  WORD dbcv_flags;
139};
140
141typedef struct _DEV_BROADCAST_VOLUME DEV_BROADCAST_VOLUME;
142typedef DEV_BROADCAST_VOLUME DBTFAR *PDEV_BROADCAST_VOLUME;
143
144#define DBTF_MEDIA 0x0001
145#define DBTF_NET 0x0002
146
147typedef struct _DEV_BROADCAST_PORT_A {
148  DWORD dbcp_size;
149  DWORD dbcp_devicetype;
150  DWORD dbcp_reserved;
151  char dbcp_name[1];
152} DEV_BROADCAST_PORT_A,*PDEV_BROADCAST_PORT_A;
153
154typedef struct _DEV_BROADCAST_PORT_W {
155  DWORD dbcp_size;
156  DWORD dbcp_devicetype;
157  DWORD dbcp_reserved;
158  wchar_t dbcp_name[1];
159} DEV_BROADCAST_PORT_W,DBTFAR *PDEV_BROADCAST_PORT_W;
160
161__MINGW_TYPEDEF_UAW(DEV_BROADCAST_PORT)
162__MINGW_TYPEDEF_UAW(PDEV_BROADCAST_PORT)
163
164struct _DEV_BROADCAST_NET {
165  DWORD dbcn_size;
166  DWORD dbcn_devicetype;
167  DWORD dbcn_reserved;
168  DWORD dbcn_resource;
169  DWORD dbcn_flags;
170};
171
172typedef struct _DEV_BROADCAST_NET DEV_BROADCAST_NET;
173typedef DEV_BROADCAST_NET DBTFAR *PDEV_BROADCAST_NET;
174
175typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {
176  DWORD dbcc_size;
177  DWORD dbcc_devicetype;
178  DWORD dbcc_reserved;
179  GUID dbcc_classguid;
180  char dbcc_name[1];
181} DEV_BROADCAST_DEVICEINTERFACE_A,*PDEV_BROADCAST_DEVICEINTERFACE_A;
182
183typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
184  DWORD dbcc_size;
185  DWORD dbcc_devicetype;
186  DWORD dbcc_reserved;
187  GUID dbcc_classguid;
188  wchar_t dbcc_name[1];
189} DEV_BROADCAST_DEVICEINTERFACE_W,*PDEV_BROADCAST_DEVICEINTERFACE_W;
190
191__MINGW_TYPEDEF_UAW(DEV_BROADCAST_DEVICEINTERFACE)
192__MINGW_TYPEDEF_UAW(PDEV_BROADCAST_DEVICEINTERFACE)
193
194typedef struct _DEV_BROADCAST_HANDLE {
195  DWORD dbch_size;
196  DWORD dbch_devicetype;
197  DWORD dbch_reserved;
198  HANDLE dbch_handle;
199  HDEVNOTIFY dbch_hdevnotify;
200
201  GUID dbch_eventguid;
202  LONG dbch_nameoffset;
203  BYTE dbch_data[1];
204} DEV_BROADCAST_HANDLE,*PDEV_BROADCAST_HANDLE;
205
206typedef struct _DEV_BROADCAST_HANDLE32 {
207  DWORD dbch_size;
208  DWORD dbch_devicetype;
209  DWORD dbch_reserved;
210  ULONG32 dbch_handle;
211  ULONG32 dbch_hdevnotify;
212  GUID dbch_eventguid;
213  LONG dbch_nameoffset;
214  BYTE dbch_data[1];
215} DEV_BROADCAST_HANDLE32,*PDEV_BROADCAST_HANDLE32;
216
217typedef struct _DEV_BROADCAST_HANDLE64 {
218  DWORD dbch_size;
219  DWORD dbch_devicetype;
220  DWORD dbch_reserved;
221  ULONG64 dbch_handle;
222  ULONG64 dbch_hdevnotify;
223  GUID dbch_eventguid;
224  LONG dbch_nameoffset;
225  BYTE dbch_data[1];
226} DEV_BROADCAST_HANDLE64,*PDEV_BROADCAST_HANDLE64;
227
228#define DBTF_RESOURCE 0x00000001
229#define DBTF_XPORT 0x00000002
230#define DBTF_SLOWNET 0x00000004
231
232#define DBT_VPOWERDAPI 0x8100
233
234#define DBT_USERDEFINED 0xFFFF
235
236struct _DEV_BROADCAST_USERDEFINED {
237  struct _DEV_BROADCAST_HDR dbud_dbh;
238  char dbud_szName[1];
239};
240
241#endif