]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/shared/wtypes.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / shared / wtypes.rs
1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes::{__int64, c_double, c_short, c_ushort, c_void, wchar_t};
7 use shared::guiddef::{CLSID, GUID};
8 use shared::minwindef::{BYTE, DWORD, ULONG, USHORT, WORD};
9 use shared::ntdef::{LCID, LONG, LONGLONG, ULONGLONG};
10 use shared::rpcndr::byte;
11 use shared::wtypesbase::{
12 BYTE_BLOB, DWORD_BLOB, FLAGGED_BYTE_BLOB, FLAGGED_WORD_BLOB, LPOLESTR, OLECHAR
13 };
14 use um::wingdi::LOGPALETTE;
15 // extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0000_v0_0_c_ifspec;
16 // extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0000_v0_0_s_ifspec;
17 STRUCT!{struct RemHGLOBAL {
18 fNullHGlobal: LONG,
19 cbData: ULONG,
20 data: [byte; 1],
21 }}
22 STRUCT!{struct RemHMETAFILEPICT {
23 mm: LONG,
24 xExt: LONG,
25 yExt: LONG,
26 cbData: ULONG,
27 data: [byte; 1],
28 }}
29 STRUCT!{struct RemHENHMETAFILE {
30 cbData: ULONG,
31 data: [byte; 1],
32 }}
33 STRUCT!{struct RemHBITMAP {
34 cbData: ULONG,
35 data: [byte; 1],
36 }}
37 STRUCT!{struct RemHPALETTE {
38 cbData: ULONG,
39 data: [byte; 1],
40 }}
41 STRUCT!{struct RemHBRUSH {
42 cbData: ULONG,
43 data: [byte; 1],
44 }}
45 pub const ROTFLAGS_REGISTRATIONKEEPSALIVE: DWORD = 0x1;
46 pub const ROTFLAGS_ALLOWANYCLIENT: DWORD = 0x2;
47 pub const ROT_COMPARE_MAX: DWORD = 2048;
48 ENUM!{enum DVASPECT {
49 DVASPECT_CONTENT = 1,
50 DVASPECT_THUMBNAIL = 2,
51 DVASPECT_ICON = 4,
52 DVASPECT_DOCPRINT = 8,
53 }}
54 ENUM!{enum STGC {
55 STGC_DEFAULT = 0,
56 STGC_OVERWRITE = 1,
57 STGC_ONLYIFCURRENT = 2,
58 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
59 STGC_CONSOLIDATE = 8,
60 }}
61 ENUM!{enum STGMOVE {
62 STGMOVE_MOVE = 0,
63 STGMOVE_COPY = 1,
64 STGMOVE_SHALLOWCOPY = 2,
65 }}
66 ENUM!{enum STATFLAG {
67 STATFLAG_DEFAULT = 0,
68 STATFLAG_NONAME = 1,
69 STATFLAG_NOOPEN = 2,
70 }}
71 pub type HCONTEXT = *mut c_void;
72 pub const WDT_INPROC_CALL: ULONG = 0x48746457;
73 pub const WDT_REMOTE_CALL: ULONG = 0x52746457;
74 pub const WDT_INPROC64_CALL: ULONG = 0x50746457;
75 UNION!{union userCLIPFORMAT_u {
76 [usize; 1],
77 dwValue dwValue_mut: DWORD,
78 pwszName pwszName_mut: *mut wchar_t,
79 }}
80 STRUCT!{struct userCLIPFORMAT {
81 fContext: LONG,
82 u: userCLIPFORMAT_u,
83 }}
84 pub type wireCLIPFORMAT = *mut userCLIPFORMAT;
85 pub type CLIPFORMAT = WORD;
86 UNION!{union GDI_NONREMOTE_u {
87 [usize; 1],
88 hInproc hInproc_mut: LONG,
89 hRemote hRemote_mut: *mut DWORD_BLOB,
90 }}
91 STRUCT!{struct GDI_NONREMOTE {
92 fContext: LONG,
93 u: GDI_NONREMOTE_u,
94 }}
95 UNION!{union userHGLOBAL_u {
96 [u64; 1],
97 hInproc hInproc_mut: LONG,
98 hRemote hRemote_mut: *mut FLAGGED_BYTE_BLOB,
99 hInproc64 hInproc64_mut: __int64,
100 }}
101 STRUCT!{struct userHGLOBAL {
102 fContext: LONG,
103 u: userHGLOBAL_u,
104 }}
105 pub type wireHGLOBAL = *mut userHGLOBAL;
106 UNION!{union userHMETAFILE_u {
107 [u64; 1],
108 hInproc hInproc_mut: LONG,
109 hRemote hRemote_mut: *mut BYTE_BLOB,
110 hInproc64 hInproc64_mut: __int64,
111 }}
112 STRUCT!{struct userHMETAFILE {
113 fContext: LONG,
114 u: userHMETAFILE_u,
115 }}
116 STRUCT!{struct remoteMETAFILEPICT {
117 mm: LONG,
118 xExt: LONG,
119 yExt: LONG,
120 hMF: *mut userHMETAFILE,
121 }}
122 UNION!{union userHMETAFILEPICT_u {
123 [u64; 1],
124 hInproc hInproc_mut: LONG,
125 hRemote hRemote_mut: *mut remoteMETAFILEPICT,
126 hInproc64 hInproc64_mut: __int64,
127 }}
128 STRUCT!{struct userHMETAFILEPICT {
129 fContext: LONG,
130 u: userHMETAFILEPICT_u,
131 }}
132 UNION!{union userHENHMETAFILE_u {
133 [u64; 1],
134 hInproc hInproc_mut: LONG,
135 hRemote hRemote_mut: *mut BYTE_BLOB,
136 hInproc64 hInproc64_mut: __int64,
137 }}
138 STRUCT!{struct userHENHMETAFILE {
139 fContext: LONG,
140 u: userHENHMETAFILE_u,
141 }}
142 STRUCT!{struct userBITMAP {
143 bmType: LONG,
144 bmWidth: LONG,
145 bmHeight: LONG,
146 bmWidthBytes: LONG,
147 bmPlanes: WORD,
148 bmBitsPixel: WORD,
149 cbSize: ULONG,
150 pBuffer: [byte; 1],
151 }}
152 UNION!{union userHBITMAP_u {
153 [u64; 1],
154 hInproc hInproc_mut: LONG,
155 hRemote hRemote_mut: *mut userBITMAP,
156 hInproc64 hInproc64_mut: __int64,
157 }}
158 STRUCT!{struct userHBITMAP {
159 fContext: LONG,
160 u: userHBITMAP_u,
161 }}
162 UNION!{union userHPALETTE_u {
163 [u64; 1],
164 hInproc hInproc_mut: LONG,
165 hRemote hRemote_mut: *mut LOGPALETTE,
166 hInproc64 hInproc64_mut: __int64,
167 }}
168 STRUCT!{struct userHPALETTE {
169 fContext: LONG,
170 u: userHPALETTE_u,
171 }}
172 UNION!{union RemotableHandle_u {
173 [u32; 1],
174 hInproc hInproc_mut: LONG,
175 hRemote hRemote_mut: LONG,
176 }}
177 STRUCT!{struct RemotableHandle {
178 fContext: LONG,
179 u: RemotableHandle_u,
180 }}
181 pub type wireHWND = *mut RemotableHandle;
182 pub type wireHMENU = *mut RemotableHandle;
183 pub type wireHACCEL = *mut RemotableHandle;
184 pub type wireHBRUSH = *mut RemotableHandle;
185 pub type wireHFONT = *mut RemotableHandle;
186 pub type wireHDC = *mut RemotableHandle;
187 pub type wireHICON = *mut RemotableHandle;
188 pub type wireHRGN = *mut RemotableHandle;
189 pub type wireHMONITOR = *mut RemotableHandle;
190 pub type wireHBITMAP = *mut userHBITMAP;
191 pub type wireHPALETTE = *mut userHPALETTE;
192 pub type wireHENHMETAFILE = *mut userHENHMETAFILE;
193 pub type wireHMETAFILE = *mut userHMETAFILE;
194 pub type wireHMETAFILEPICT = *mut userHMETAFILEPICT;
195 pub type HMETAFILEPICT = *mut c_void;
196 // extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
197 // extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
198 pub type DATE = c_double;
199 STRUCT!{struct CY {
200 int64: LONGLONG,
201 }}
202 pub type LPCY = *mut CY;
203 STRUCT!{struct DECIMAL {
204 wReserved: USHORT,
205 scale: BYTE,
206 sign: BYTE,
207 Hi32: ULONG,
208 Lo64: ULONGLONG,
209 }}
210 pub const DECIMAL_NEG: BYTE = 0x80;
211 #[inline]
212 pub fn DECIMAL_SETZERO(dec: &mut DECIMAL) {
213 dec.Lo64 = 0;
214 dec.Hi32 = 0;
215 dec.scale = 0;
216 dec.sign = 0;
217 }
218 pub type LPDECIMAL = *mut DECIMAL;
219 pub type wireBSTR = *mut FLAGGED_WORD_BLOB;
220 pub type BSTR = *mut OLECHAR;
221 pub type LPBSTR = *mut BSTR;
222 pub type VARIANT_BOOL = c_short;
223 STRUCT!{struct BSTRBLOB {
224 cbSize: ULONG,
225 pData: *mut BYTE,
226 }}
227 pub type LPBSTRBLOB = *mut BSTRBLOB;
228 pub const VARIANT_TRUE: VARIANT_BOOL = -1;
229 pub const VARIANT_FALSE: VARIANT_BOOL = 0;
230 STRUCT!{struct CLIPDATA {
231 cbSize: ULONG,
232 ulClipFmt: LONG,
233 pClipData: *mut BYTE,
234 }}
235 #[inline]
236 pub fn CBPCLIPDATA(clipdata: CLIPDATA) -> ULONG {
237 clipdata.cbSize - 4
238 }
239 pub type VARTYPE = c_ushort;
240 ENUM!{enum VARENUM {
241 VT_EMPTY = 0,
242 VT_NULL = 1,
243 VT_I2 = 2,
244 VT_I4 = 3,
245 VT_R4 = 4,
246 VT_R8 = 5,
247 VT_CY = 6,
248 VT_DATE = 7,
249 VT_BSTR = 8,
250 VT_DISPATCH = 9,
251 VT_ERROR = 10,
252 VT_BOOL = 11,
253 VT_VARIANT = 12,
254 VT_UNKNOWN = 13,
255 VT_DECIMAL = 14,
256 VT_I1 = 16,
257 VT_UI1 = 17,
258 VT_UI2 = 18,
259 VT_UI4 = 19,
260 VT_I8 = 20,
261 VT_UI8 = 21,
262 VT_INT = 22,
263 VT_UINT = 23,
264 VT_VOID = 24,
265 VT_HRESULT = 25,
266 VT_PTR = 26,
267 VT_SAFEARRAY = 27,
268 VT_CARRAY = 28,
269 VT_USERDEFINED = 29,
270 VT_LPSTR = 30,
271 VT_LPWSTR = 31,
272 VT_RECORD = 36,
273 VT_INT_PTR = 37,
274 VT_UINT_PTR = 38,
275 VT_FILETIME = 64,
276 VT_BLOB = 65,
277 VT_STREAM = 66,
278 VT_STORAGE = 67,
279 VT_STREAMED_OBJECT = 68,
280 VT_STORED_OBJECT = 69,
281 VT_BLOB_OBJECT = 70,
282 VT_CF = 71,
283 VT_CLSID = 72,
284 VT_VERSIONED_STREAM = 73,
285 VT_BSTR_BLOB = 0xfff,
286 VT_VECTOR = 0x1000,
287 VT_ARRAY = 0x2000,
288 VT_BYREF = 0x4000,
289 VT_RESERVED = 0x8000,
290 VT_ILLEGAL = 0xffff,
291 VT_ILLEGALMASKED = 0xfff,
292 VT_TYPEMASK = 0xfff,
293 }}
294 pub type PROPID = ULONG;
295 STRUCT!{struct PROPERTYKEY {
296 fmtid: GUID,
297 pid: DWORD,
298 }}
299 STRUCT!{struct CSPLATFORM {
300 dwPlatformId: DWORD,
301 dwVersionHi: DWORD,
302 dwVersionLo: DWORD,
303 dwProcessorArch: DWORD,
304 }}
305 STRUCT!{struct QUERYCONTEXT {
306 dwContext: DWORD,
307 Platform: CSPLATFORM,
308 Locale: LCID,
309 dwVersionHi: DWORD,
310 dwVersionLo: DWORD,
311 }}
312 ENUM!{enum TYSPEC {
313 TYSPEC_CLSID,
314 TYSPEC_FILEEXT,
315 TYSPEC_MIMETYPE,
316 TYSPEC_FILENAME,
317 TYSPEC_PROGID,
318 TYSPEC_PACKAGENAME,
319 TYSPEC_OBJECTID,
320 }}
321 STRUCT!{struct uCLSSPEC_ByName {
322 pPackageName: LPOLESTR,
323 PolicyId: GUID,
324 }}
325 STRUCT!{struct uCLSSPEC_ByObjectId {
326 ObjectId: GUID,
327 PolicyId: GUID,
328 }}
329 UNION!{union uCLSSPEC_u {
330 [u32; 8] [u64; 4],
331 clsid clsid_mut: CLSID,
332 pFileExt pFileExt_mut: LPOLESTR,
333 pMimeType pMimeType_mut: LPOLESTR,
334 pProgId pProgId_mut: LPOLESTR,
335 pFileName pFileName_mut: LPOLESTR,
336 ByName ByName_mut: uCLSSPEC_ByName,
337 ByObjectId ByObjectId_mut: uCLSSPEC_ByObjectId,
338 }}
339 STRUCT!{struct uCLSSPEC {
340 tyspec: DWORD,
341 u: uCLSSPEC_u,
342 }}
343 // extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0001_v0_0_c_ifspec;
344 // extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0001_v0_0_s_ifspec;