xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/dbt.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
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