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 /// Automatically imported and edited from the druntime module
11 /// core.sys.windows.dbt for the auto-generated win32 package.
12 module win32.dbt;
13 //version (Windows):
14 @system:
15 
16 version (ANSI) {} else version = Unicode;
17 
18 import win32.w32api, win32.windef;
19 import win32.basetyps; // for GUID
20 
21 // FIXME: clean up Windows version support
22 
23 enum : DWORD {
24     DBT_NO_DISK_SPACE           = 0x47,
25     DBT_CONFIGMGPRIVATE         = 0x7FFF,
26     DBT_DEVICEARRIVAL           = 0x8000,
27     DBT_DEVICEQUERYREMOVE       = 0x8001,
28     DBT_DEVICEQUERYREMOVEFAILED = 0x8002,
29     DBT_DEVICEREMOVEPENDING     = 0x8003,
30     DBT_DEVICEREMOVECOMPLETE    = 0x8004,
31     DBT_DEVICETYPESPECIFIC      = 0x8005,
32     DBT_DEVTYP_OEM              = 0,
33     DBT_DEVTYP_DEVNODE,
34     DBT_DEVTYP_VOLUME,
35     DBT_DEVTYP_PORT,
36     DBT_DEVTYP_NET,
37     DBT_DEVTYP_DEVICEINTERFACE,
38     DBT_DEVTYP_HANDLE        // = 6
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 >= 0x500) {
85     enum : DWORD {
86         BSF_ALLOWSFW          = 0x00000080,
87         BSF_SENDNOTIFYMESSAGE = 0x00000100
88     }
89 //}
90 
91 static if (_WIN32_WINNT >= 0x501) {
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 = 0;
119     char* dbcp_name() return { 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 = 0;
128     WCHAR* dbcp_name() return { 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 = 0;
135     char* dbud_szName() return { 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_WINNT >= 0x500) {
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 { 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 = 0;
171         WCHAR* dbcc_name() return { 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 { return &_dbch_data; }
192     }
193     alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE;
194 //}