]>
Commit | Line | Data |
---|---|---|
ff7c6d11 XL |
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. | |
60c5eb7d XL |
6 | use ctypes::{__int64, c_double, c_short, c_ushort, c_void, wchar_t}; |
7 | use shared::guiddef::{CLSID, GUID}; | |
ff7c6d11 | 8 | use shared::minwindef::{BYTE, DWORD, ULONG, USHORT, WORD}; |
60c5eb7d XL |
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; | |
ff7c6d11 XL |
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, | |
60c5eb7d XL |
291 | VT_ILLEGALMASKED = 0xfff, |
292 | VT_TYPEMASK = 0xfff, | |
ff7c6d11 | 293 | }} |
ff7c6d11 XL |
294 | pub type PROPID = ULONG; |
295 | STRUCT!{struct PROPERTYKEY { | |
296 | fmtid: GUID, | |
297 | pid: DWORD, | |
298 | }} | |
60c5eb7d XL |
299 | STRUCT!{struct CSPLATFORM { |
300 | dwPlatformId: DWORD, | |
301 | dwVersionHi: DWORD, | |
302 | dwVersionLo: DWORD, | |
303 | dwProcessorArch: DWORD, | |
ff7c6d11 | 304 | }} |
60c5eb7d XL |
305 | STRUCT!{struct QUERYCONTEXT { |
306 | dwContext: DWORD, | |
307 | Platform: CSPLATFORM, | |
308 | Locale: LCID, | |
309 | dwVersionHi: DWORD, | |
310 | dwVersionLo: DWORD, | |
ff7c6d11 | 311 | }} |
60c5eb7d XL |
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, | |
ff7c6d11 | 320 | }} |
60c5eb7d XL |
321 | STRUCT!{struct uCLSSPEC_ByName { |
322 | pPackageName: LPOLESTR, | |
323 | PolicyId: GUID, | |
ff7c6d11 | 324 | }} |
60c5eb7d XL |
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; |