1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! This module defines the 32-Bit Windows types and constants that are defined by NT, but exposed
4 //! through the Win32 API.
5 pub const ANYSIZE_ARRAY: usize = 1;
6 //341
7 pub type PVOID = *mut ::c_void;
8 pub type PVOID64 = u64; // This is a 64-bit pointer, even when in 32-bit
9 //382
10 pub type VOID = ::c_void;
11 pub type CHAR = ::c_char;
12 pub type SHORT = ::c_short;
13 pub type LONG = ::c_long;
14 // pub type INT = ::c_int; // Already defined by minwindef.h
15 pub type WCHAR = ::wchar_t;
16 pub type PWCHAR = *mut WCHAR;
17 pub type LPWCH = *mut WCHAR;
18 pub type PWCH = *mut WCHAR;
19 pub type LPCWCH = *const WCHAR;
20 pub type PCWCH = *const WCHAR;
21 pub type NWPSTR = *mut WCHAR;
22 pub type LPWSTR = *mut WCHAR;
23 pub type PWSTR = *mut WCHAR;
24 pub type PZPWSTR = *mut PWSTR;
25 pub type PCZPWSTR = *const PWSTR;
26 pub type LPUWSTR = *mut WCHAR;
27 pub type PUWSTR = *mut WCHAR;
28 pub type LPCWSTR = *const WCHAR;
29 pub type PCWSTR = *const WCHAR;
30 pub type PZPCWSTR= *mut PCWSTR;
31 pub type PCZPCWSTR = *const PCWSTR;
32 pub type LPCUWSTR = *const WCHAR;
33 pub type PCUWSTR = *const WCHAR;
34 pub type PZZWSTR= *mut WCHAR;
35 pub type PCZZWSTR = *const WCHAR;
36 pub type PUZZWSTR = *mut WCHAR;
37 pub type PCUZZWSTR = *const WCHAR;
38 pub type PNZWCH = *mut WCHAR;
39 pub type PCNZWCH = *const WCHAR;
40 pub type PUNZWCH = *mut WCHAR;
41 pub type PCUNZWCH = *const WCHAR;
42 pub type LPCWCHAR = *const WCHAR;
43 pub type PCWCHAR = *const WCHAR;
44 pub type LPCUWCHAR = *const WCHAR;
45 pub type PCUWCHAR = *const WCHAR;
46 pub type UCSCHAR = ::c_ulong;
47 pub type PUCSCHAR = *mut UCSCHAR;
48 pub type PCUCSCHAR = *const UCSCHAR;
49 pub type PUCSSTR = *mut UCSCHAR;
50 pub type PUUCSSTR = *mut UCSCHAR;
51 pub type PCUCSSTR = *const UCSCHAR;
52 pub type PCUUCSSTR = *const UCSCHAR;
53 pub type PUUCSCHAR = *mut UCSCHAR;
54 pub type PCUUCSCHAR = *const UCSCHAR;
55 pub type PCHAR = *mut CHAR;
56 pub type LPCH = *mut CHAR;
57 pub type PCH = *mut CHAR;
58 pub type LPCCH = *const CHAR;
59 pub type PCCH = *const CHAR;
60 pub type NPSTR = *mut CHAR;
61 pub type LPSTR = *mut CHAR;
62 pub type PSTR = *mut CHAR;
63 pub type PZPSTR = *mut PSTR;
64 pub type PCZPSTR = *const PSTR;
65 pub type LPCSTR = *const CHAR;
66 pub type PCSTR = *const CHAR;
67 pub type PZPCSTR = *mut PCSTR;
68 pub type PCZPCSTR = *const PCSTR;
69 pub type PZZSTR = *mut CHAR;
70 pub type PCZZSTR = *const CHAR;
71 pub type PNZCH = *mut CHAR;
72 pub type PCNZCH = *const CHAR;
73 // Skipping TCHAR things
74 pub type PSHORT = *mut SHORT;
75 pub type PLONG = *mut LONG;
76 STRUCT!{struct PROCESSOR_NUMBER {
77 Group: ::WORD,
78 Number: ::BYTE,
79 Reserved: ::BYTE,
80 }}
81 pub type PPROCESSOR_NUMBER = *mut PROCESSOR_NUMBER;
82 STRUCT!{struct GROUP_AFFINITY {
83 Mask: ::KAFFINITY,
84 Group: ::WORD,
85 Reserved: [::WORD; 3],
86 }}
87 pub type PGROUP_AFFINITY = *mut GROUP_AFFINITY;
88 pub type HANDLE = *mut ::c_void;
89 pub type PHANDLE = *mut HANDLE;
90 pub type FCHAR = ::BYTE;
91 pub type FSHORT = ::WORD;
92 pub type FLONG = ::DWORD;
93 //667
94 pub type CCHAR = ::c_char;
95 pub type LCID = ::DWORD;
96 pub type PLCID = ::PDWORD;
97 pub type LANGID = ::WORD;
98 ENUM!{enum COMPARTMENT_ID {
99 UNSPECIFIED_COMPARTMENT_ID = 0,
100 DEFAULT_COMPARTMENT_ID = 1,
101 }}
102 pub type PCOMPARTMENT_ID = *mut COMPARTMENT_ID;
103 pub const APPLICATION_ERROR_MASK: ::DWORD = 0x20000000;
104 pub const ERROR_SEVERITY_SUCCESS: ::DWORD = 0x00000000;
105 pub const ERROR_SEVERITY_INFORMATIONAL: ::DWORD = 0x40000000;
106 pub const ERROR_SEVERITY_WARNING: ::DWORD = 0x80000000;
107 pub const ERROR_SEVERITY_ERROR: ::DWORD = 0xC0000000;
108 //710
109 STRUCT!{struct FLOAT128 {
110 LowPart: ::__int64,
111 HighPart: ::__int64,
112 }}
113 pub type PFLOAT128 = *mut FLOAT128;
114 pub type LONGLONG = ::__int64;
115 pub type ULONGLONG = ::__uint64;
116 pub type PLONGLONG = *mut LONGLONG;
117 pub type PULONGLONG = *mut ULONGLONG;
118 pub type USN = LONGLONG;
119 pub type LARGE_INTEGER = LONGLONG;
120 pub type PLARGE_INTEGER = *mut LARGE_INTEGER;
121 pub type ULARGE_INTEGER = ULONGLONG;
122 pub type PULARGE_INTEGER= *mut ULARGE_INTEGER;
123 pub type RTL_REFERENCE_COUNT = ::LONG_PTR;
124 pub type PRTL_REFERENCE_COUNT = *mut ::LONG_PTR;
125 STRUCT!{struct LUID {
126 LowPart: ::DWORD,
127 HighPart: LONG,
128 }}
129 pub type PLUID = *mut LUID;
130 pub type DWORDLONG = ULONGLONG;
131 pub type PDWORDLONG = *mut DWORDLONG;
132 //1042
133 pub type BOOLEAN = ::BYTE;
134 pub type PBOOLEAN = *mut BOOLEAN;
135 STRUCT!{struct LIST_ENTRY {
136 Flink: *mut LIST_ENTRY,
137 Blink: *mut LIST_ENTRY,
138 }}
139 pub type PLIST_ENTRY = *mut LIST_ENTRY;
140 STRUCT!{struct SINGLE_LIST_ENTRY {
141 Next: *mut SINGLE_LIST_ENTRY,
142 }}
143 pub type PSINGLE_LIST_ENTRY = *mut SINGLE_LIST_ENTRY;
144 STRUCT!{struct LIST_ENTRY32 {
145 Flink: ::DWORD,
146 Blink: ::DWORD,
147 }}
148 pub type PLIST_ENTRY32 = *mut LIST_ENTRY32;
149 STRUCT!{struct LIST_ENTRY64 {
150 Flink: ULONGLONG,
151 Blink: ULONGLONG,
152 }}
153 pub type PLIST_ENTRY64 = *mut LIST_ENTRY64;
154 STRUCT!{struct OBJECTID {
155 Lineage: ::GUID,
156 Uniquifier: ::DWORD,
157 }}
158 pub const MINCHAR: ::CHAR = 0x80u8 as ::CHAR;
159 pub const MAXCHAR: ::CHAR = 0x7f;
160 pub const MINSHORT: ::SHORT = 0x8000u16 as ::SHORT;
161 pub const MAXSHORT: ::SHORT = 0x7fff;
162 pub const MINLONG: ::LONG = 0x80000000u32 as ::LONG;
163 pub const MAXLONG: ::LONG = 0x7fffffff;
164 pub const MAXBYTE: ::BYTE = 0xff;
165 pub const MAXWORD: ::WORD = 0xffff;
166 pub const MAXDWORD: ::DWORD = 0xffffffff;
167 //1300
168 pub type PEXCEPTION_ROUTINE = Option<unsafe extern "system" fn(
169 ExceptionRecord: *mut EXCEPTION_RECORD, EstablisherFrame: PVOID, ContextRecord: *mut CONTEXT,
170 DispatcherContext: PVOID,
171 ) -> ::EXCEPTION_DISPOSITION>;
172 //1498
173 pub const LANG_NEUTRAL: ::WORD = 0x00;
174 pub const LANG_INVARIANT: ::WORD = 0x7f;
175 pub const LANG_AFRIKAANS: ::WORD = 0x36;
176 pub const LANG_ALBANIAN: ::WORD = 0x1c;
177 pub const LANG_ALSATIAN: ::WORD = 0x84;
178 pub const LANG_AMHARIC: ::WORD = 0x5e;
179 pub const LANG_ARABIC: ::WORD = 0x01;
180 pub const LANG_ARMENIAN: ::WORD = 0x2b;
181 pub const LANG_ASSAMESE: ::WORD = 0x4d;
182 pub const LANG_AZERI: ::WORD = 0x2c;
183 pub const LANG_AZERBAIJANI: ::WORD = 0x2c;
184 pub const LANG_BANGLA: ::WORD = 0x45;
185 pub const LANG_BASHKIR: ::WORD = 0x6d;
186 pub const LANG_BASQUE: ::WORD = 0x2d;
187 pub const LANG_BELARUSIAN: ::WORD = 0x23;
188 pub const LANG_BENGALI: ::WORD = 0x45;
189 pub const LANG_BRETON: ::WORD = 0x7e;
190 pub const LANG_BOSNIAN: ::WORD = 0x1a;
191 pub const LANG_BOSNIAN_NEUTRAL: ::WORD = 0x781a;
192 pub const LANG_BULGARIAN: ::WORD = 0x02;
193 pub const LANG_CATALAN: ::WORD = 0x03;
194 pub const LANG_CENTRAL_KURDISH: ::WORD = 0x92;
195 pub const LANG_CHEROKEE: ::WORD = 0x5c;
196 pub const LANG_CHINESE: ::WORD = 0x04;
197 pub const LANG_CHINESE_SIMPLIFIED: ::WORD = 0x04;
198 pub const LANG_CHINESE_TRADITIONAL: ::WORD = 0x7c04;
199 pub const LANG_CORSICAN: ::WORD = 0x83;
200 pub const LANG_CROATIAN: ::WORD = 0x1a;
201 pub const LANG_CZECH: ::WORD = 0x05;
202 pub const LANG_DANISH: ::WORD = 0x06;
203 pub const LANG_DARI: ::WORD = 0x8c;
204 pub const LANG_DIVEHI: ::WORD = 0x65;
205 pub const LANG_DUTCH: ::WORD = 0x13;
206 pub const LANG_ENGLISH: ::WORD = 0x09;
207 pub const LANG_ESTONIAN: ::WORD = 0x25;
208 pub const LANG_FAEROESE: ::WORD = 0x38;
209 pub const LANG_FARSI: ::WORD = 0x29;
210 pub const LANG_FILIPINO: ::WORD = 0x64;
211 pub const LANG_FINNISH: ::WORD = 0x0b;
212 pub const LANG_FRENCH: ::WORD = 0x0c;
213 pub const LANG_FRISIAN: ::WORD = 0x62;
214 pub const LANG_FULAH: ::WORD = 0x67;
215 pub const LANG_GALICIAN: ::WORD = 0x56;
216 pub const LANG_GEORGIAN: ::WORD = 0x37;
217 pub const LANG_GERMAN: ::WORD = 0x07;
218 pub const LANG_GREEK: ::WORD = 0x08;
219 pub const LANG_GREENLANDIC: ::WORD = 0x6f;
220 pub const LANG_GUJARATI: ::WORD = 0x47;
221 pub const LANG_HAUSA: ::WORD = 0x68;
222 pub const LANG_HAWAIIAN: ::WORD = 0x75;
223 pub const LANG_HEBREW: ::WORD = 0x0d;
224 pub const LANG_HINDI: ::WORD = 0x39;
225 pub const LANG_HUNGARIAN: ::WORD = 0x0e;
226 pub const LANG_ICELANDIC: ::WORD = 0x0f;
227 pub const LANG_IGBO: ::WORD = 0x70;
228 pub const LANG_INDONESIAN: ::WORD = 0x21;
229 pub const LANG_INUKTITUT: ::WORD = 0x5d;
230 pub const LANG_IRISH: ::WORD = 0x3c;
231 pub const LANG_ITALIAN: ::WORD = 0x10;
232 pub const LANG_JAPANESE: ::WORD = 0x11;
233 pub const LANG_KANNADA: ::WORD = 0x4b;
234 pub const LANG_KASHMIRI: ::WORD = 0x60;
235 pub const LANG_KAZAK: ::WORD = 0x3f;
236 pub const LANG_KHMER: ::WORD = 0x53;
237 pub const LANG_KICHE: ::WORD = 0x86;
238 pub const LANG_KINYARWANDA: ::WORD = 0x87;
239 pub const LANG_KONKANI: ::WORD = 0x57;
240 pub const LANG_KOREAN: ::WORD = 0x12;
241 pub const LANG_KYRGYZ: ::WORD = 0x40;
242 pub const LANG_LAO: ::WORD = 0x54;
243 pub const LANG_LATVIAN: ::WORD = 0x26;
244 pub const LANG_LITHUANIAN: ::WORD = 0x27;
245 pub const LANG_LOWER_SORBIAN: ::WORD = 0x2e;
246 pub const LANG_LUXEMBOURGISH: ::WORD = 0x6e;
247 pub const LANG_MACEDONIAN: ::WORD = 0x2f;
248 pub const LANG_MALAY: ::WORD = 0x3e;
249 pub const LANG_MALAYALAM: ::WORD = 0x4c;
250 pub const LANG_MALTESE: ::WORD = 0x3a;
251 pub const LANG_MANIPURI: ::WORD = 0x58;
252 pub const LANG_MAORI: ::WORD = 0x81;
253 pub const LANG_MAPUDUNGUN: ::WORD = 0x7a;
254 pub const LANG_MARATHI: ::WORD = 0x4e;
255 pub const LANG_MOHAWK: ::WORD = 0x7c;
256 pub const LANG_MONGOLIAN: ::WORD = 0x50;
257 pub const LANG_NEPALI: ::WORD = 0x61;
258 pub const LANG_NORWEGIAN: ::WORD = 0x14;
259 pub const LANG_OCCITAN: ::WORD = 0x82;
260 pub const LANG_ODIA: ::WORD = 0x48;
261 pub const LANG_ORIYA: ::WORD = 0x48;
262 pub const LANG_PASHTO: ::WORD = 0x63;
263 pub const LANG_PERSIAN: ::WORD = 0x29;
264 pub const LANG_POLISH: ::WORD = 0x15;
265 pub const LANG_PORTUGUESE: ::WORD = 0x16;
266 pub const LANG_PULAR: ::WORD = 0x67;
267 pub const LANG_PUNJABI: ::WORD = 0x46;
268 pub const LANG_QUECHUA: ::WORD = 0x6b;
269 pub const LANG_ROMANIAN: ::WORD = 0x18;
270 pub const LANG_ROMANSH: ::WORD = 0x17;
271 pub const LANG_RUSSIAN: ::WORD = 0x19;
272 pub const LANG_SAKHA: ::WORD = 0x85;
273 pub const LANG_SAMI: ::WORD = 0x3b;
274 pub const LANG_SANSKRIT: ::WORD = 0x4f;
275 pub const LANG_SCOTTISH_GAELIC: ::WORD = 0x91;
276 pub const LANG_SERBIAN: ::WORD = 0x1a;
277 pub const LANG_SERBIAN_NEUTRAL: ::WORD = 0x7c1a;
278 pub const LANG_SINDHI: ::WORD = 0x59;
279 pub const LANG_SINHALESE: ::WORD = 0x5b;
280 pub const LANG_SLOVAK: ::WORD = 0x1b;
281 pub const LANG_SLOVENIAN: ::WORD = 0x24;
282 pub const LANG_SOTHO: ::WORD = 0x6c;
283 pub const LANG_SPANISH: ::WORD = 0x0a;
284 pub const LANG_SWAHILI: ::WORD = 0x41;
285 pub const LANG_SWEDISH: ::WORD = 0x1d;
286 pub const LANG_SYRIAC: ::WORD = 0x5a;
287 pub const LANG_TAJIK: ::WORD = 0x28;
288 pub const LANG_TAMAZIGHT: ::WORD = 0x5f;
289 pub const LANG_TAMIL: ::WORD = 0x49;
290 pub const LANG_TATAR: ::WORD = 0x44;
291 pub const LANG_TELUGU: ::WORD = 0x4a;
292 pub const LANG_THAI: ::WORD = 0x1e;
293 pub const LANG_TIBETAN: ::WORD = 0x51;
294 pub const LANG_TIGRIGNA: ::WORD = 0x73;
295 pub const LANG_TIGRINYA: ::WORD = 0x73;
296 pub const LANG_TSWANA: ::WORD = 0x32;
297 pub const LANG_TURKISH: ::WORD = 0x1f;
298 pub const LANG_TURKMEN: ::WORD = 0x42;
299 pub const LANG_UIGHUR: ::WORD = 0x80;
300 pub const LANG_UKRAINIAN: ::WORD = 0x22;
301 pub const LANG_UPPER_SORBIAN: ::WORD = 0x2e;
302 pub const LANG_URDU: ::WORD = 0x20;
303 pub const LANG_UZBEK: ::WORD = 0x43;
304 pub const LANG_VALENCIAN: ::WORD = 0x03;
305 pub const LANG_VIETNAMESE: ::WORD = 0x2a;
306 pub const LANG_WELSH: ::WORD = 0x52;
307 pub const LANG_WOLOF: ::WORD = 0x88;
308 pub const LANG_XHOSA: ::WORD = 0x34;
309 pub const LANG_YAKUT: ::WORD = 0x85;
310 pub const LANG_YI: ::WORD = 0x78;
311 pub const LANG_YORUBA: ::WORD = 0x6a;
312 pub const LANG_ZULU: ::WORD = 0x35;
313 //1651
314 pub const SUBLANG_NEUTRAL: ::WORD = 0x00;
315 pub const SUBLANG_DEFAULT: ::WORD = 0x01;
316 pub const SUBLANG_SYS_DEFAULT: ::WORD = 0x02;
317 pub const SUBLANG_CUSTOM_DEFAULT: ::WORD = 0x03;
318 pub const SUBLANG_CUSTOM_UNSPECIFIED: ::WORD = 0x04;
319 pub const SUBLANG_UI_CUSTOM_DEFAULT: ::WORD = 0x05;
320 pub const SUBLANG_AFRIKAANS_SOUTH_AFRICA: ::WORD = 0x01;
321 pub const SUBLANG_ALBANIAN_ALBANIA: ::WORD = 0x01;
322 pub const SUBLANG_ALSATIAN_FRANCE: ::WORD = 0x01;
323 pub const SUBLANG_AMHARIC_ETHIOPIA: ::WORD = 0x01;
324 pub const SUBLANG_ARABIC_SAUDI_ARABIA: ::WORD = 0x01;
325 pub const SUBLANG_ARABIC_IRAQ: ::WORD = 0x02;
326 pub const SUBLANG_ARABIC_EGYPT: ::WORD = 0x03;
327 pub const SUBLANG_ARABIC_LIBYA: ::WORD = 0x04;
328 pub const SUBLANG_ARABIC_ALGERIA: ::WORD = 0x05;
329 pub const SUBLANG_ARABIC_MOROCCO: ::WORD = 0x06;
330 pub const SUBLANG_ARABIC_TUNISIA: ::WORD = 0x07;
331 pub const SUBLANG_ARABIC_OMAN: ::WORD = 0x08;
332 pub const SUBLANG_ARABIC_YEMEN: ::WORD = 0x09;
333 pub const SUBLANG_ARABIC_SYRIA: ::WORD = 0x0a;
334 pub const SUBLANG_ARABIC_JORDAN: ::WORD = 0x0b;
335 pub const SUBLANG_ARABIC_LEBANON: ::WORD = 0x0c;
336 pub const SUBLANG_ARABIC_KUWAIT: ::WORD = 0x0d;
337 pub const SUBLANG_ARABIC_UAE: ::WORD = 0x0e;
338 pub const SUBLANG_ARABIC_BAHRAIN: ::WORD = 0x0f;
339 pub const SUBLANG_ARABIC_QATAR: ::WORD = 0x10;
340 pub const SUBLANG_ARMENIAN_ARMENIA: ::WORD = 0x01;
341 pub const SUBLANG_ASSAMESE_INDIA: ::WORD = 0x01;
342 pub const SUBLANG_AZERI_LATIN: ::WORD = 0x01;
343 pub const SUBLANG_AZERI_CYRILLIC: ::WORD = 0x02;
344 pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN: ::WORD = 0x01;
345 pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC: ::WORD = 0x02;
346 pub const SUBLANG_BANGLA_INDIA: ::WORD = 0x01;
347 pub const SUBLANG_BANGLA_BANGLADESH: ::WORD = 0x02;
348 pub const SUBLANG_BASHKIR_RUSSIA: ::WORD = 0x01;
349 pub const SUBLANG_BASQUE_BASQUE: ::WORD = 0x01;
350 pub const SUBLANG_BELARUSIAN_BELARUS: ::WORD = 0x01;
351 pub const SUBLANG_BENGALI_INDIA: ::WORD = 0x01;
352 pub const SUBLANG_BENGALI_BANGLADESH: ::WORD = 0x02;
353 pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x05;
354 pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x08;
355 pub const SUBLANG_BRETON_FRANCE: ::WORD = 0x01;
356 pub const SUBLANG_BULGARIAN_BULGARIA: ::WORD = 0x01;
357 pub const SUBLANG_CATALAN_CATALAN: ::WORD = 0x01;
358 pub const SUBLANG_CENTRAL_KURDISH_IRAQ: ::WORD = 0x01;
359 pub const SUBLANG_CHEROKEE_CHEROKEE: ::WORD = 0x01;
360 pub const SUBLANG_CHINESE_TRADITIONAL: ::WORD = 0x01;
361 pub const SUBLANG_CHINESE_SIMPLIFIED: ::WORD = 0x02;
362 pub const SUBLANG_CHINESE_HONGKONG: ::WORD = 0x03;
363 pub const SUBLANG_CHINESE_SINGAPORE: ::WORD = 0x04;
364 pub const SUBLANG_CHINESE_MACAU: ::WORD = 0x05;
365 pub const SUBLANG_CORSICAN_FRANCE: ::WORD = 0x01;
366 pub const SUBLANG_CZECH_CZECH_REPUBLIC: ::WORD = 0x01;
367 pub const SUBLANG_CROATIAN_CROATIA: ::WORD = 0x01;
368 pub const SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x04;
369 pub const SUBLANG_DANISH_DENMARK: ::WORD = 0x01;
370 pub const SUBLANG_DARI_AFGHANISTAN: ::WORD = 0x01;
371 pub const SUBLANG_DIVEHI_MALDIVES: ::WORD = 0x01;
372 pub const SUBLANG_DUTCH: ::WORD = 0x01;
373 pub const SUBLANG_DUTCH_BELGIAN: ::WORD = 0x02;
374 pub const SUBLANG_ENGLISH_US: ::WORD = 0x01;
375 pub const SUBLANG_ENGLISH_UK: ::WORD = 0x02;
376 pub const SUBLANG_ENGLISH_AUS: ::WORD = 0x03;
377 pub const SUBLANG_ENGLISH_CAN: ::WORD = 0x04;
378 pub const SUBLANG_ENGLISH_NZ: ::WORD = 0x05;
379 pub const SUBLANG_ENGLISH_EIRE: ::WORD = 0x06;
380 pub const SUBLANG_ENGLISH_SOUTH_AFRICA: ::WORD = 0x07;
381 pub const SUBLANG_ENGLISH_JAMAICA: ::WORD = 0x08;
382 pub const SUBLANG_ENGLISH_CARIBBEAN: ::WORD = 0x09;
383 pub const SUBLANG_ENGLISH_BELIZE: ::WORD = 0x0a;
384 pub const SUBLANG_ENGLISH_TRINIDAD: ::WORD = 0x0b;
385 pub const SUBLANG_ENGLISH_ZIMBABWE: ::WORD = 0x0c;
386 pub const SUBLANG_ENGLISH_PHILIPPINES: ::WORD = 0x0d;
387 pub const SUBLANG_ENGLISH_INDIA: ::WORD = 0x10;
388 pub const SUBLANG_ENGLISH_MALAYSIA: ::WORD = 0x11;
389 pub const SUBLANG_ENGLISH_SINGAPORE: ::WORD = 0x12;
390 pub const SUBLANG_ESTONIAN_ESTONIA: ::WORD = 0x01;
391 pub const SUBLANG_FAEROESE_FAROE_ISLANDS: ::WORD = 0x01;
392 pub const SUBLANG_FILIPINO_PHILIPPINES: ::WORD = 0x01;
393 pub const SUBLANG_FINNISH_FINLAND: ::WORD = 0x01;
394 pub const SUBLANG_FRENCH: ::WORD = 0x01;
395 pub const SUBLANG_FRENCH_BELGIAN: ::WORD = 0x02;
396 pub const SUBLANG_FRENCH_CANADIAN: ::WORD = 0x03;
397 pub const SUBLANG_FRENCH_SWISS: ::WORD = 0x04;
398 pub const SUBLANG_FRENCH_LUXEMBOURG: ::WORD = 0x05;
399 pub const SUBLANG_FRENCH_MONACO: ::WORD = 0x06;
400 pub const SUBLANG_FRISIAN_NETHERLANDS: ::WORD = 0x01;
401 pub const SUBLANG_FULAH_SENEGAL: ::WORD = 0x02;
402 pub const SUBLANG_GALICIAN_GALICIAN: ::WORD = 0x01;
403 pub const SUBLANG_GEORGIAN_GEORGIA: ::WORD = 0x01;
404 pub const SUBLANG_GERMAN: ::WORD = 0x01;
405 pub const SUBLANG_GERMAN_SWISS: ::WORD = 0x02;
406 pub const SUBLANG_GERMAN_AUSTRIAN: ::WORD = 0x03;
407 pub const SUBLANG_GERMAN_LUXEMBOURG: ::WORD = 0x04;
408 pub const SUBLANG_GERMAN_LIECHTENSTEIN: ::WORD = 0x05;
409 pub const SUBLANG_GREEK_GREECE: ::WORD = 0x01;
410 pub const SUBLANG_GREENLANDIC_GREENLAND: ::WORD = 0x01;
411 pub const SUBLANG_GUJARATI_INDIA: ::WORD = 0x01;
412 pub const SUBLANG_HAUSA_NIGERIA_LATIN: ::WORD = 0x01;
413 pub const SUBLANG_HAWAIIAN_US: ::WORD = 0x01;
414 pub const SUBLANG_HEBREW_ISRAEL: ::WORD = 0x01;
415 pub const SUBLANG_HINDI_INDIA: ::WORD = 0x01;
416 pub const SUBLANG_HUNGARIAN_HUNGARY: ::WORD = 0x01;
417 pub const SUBLANG_ICELANDIC_ICELAND: ::WORD = 0x01;
418 pub const SUBLANG_IGBO_NIGERIA: ::WORD = 0x01;
419 pub const SUBLANG_INDONESIAN_INDONESIA: ::WORD = 0x01;
420 pub const SUBLANG_INUKTITUT_CANADA: ::WORD = 0x01;
421 pub const SUBLANG_INUKTITUT_CANADA_LATIN: ::WORD = 0x02;
422 pub const SUBLANG_IRISH_IRELAND: ::WORD = 0x02;
423 pub const SUBLANG_ITALIAN: ::WORD = 0x01;
424 pub const SUBLANG_ITALIAN_SWISS: ::WORD = 0x02;
425 pub const SUBLANG_JAPANESE_JAPAN: ::WORD = 0x01;
426 pub const SUBLANG_KANNADA_INDIA: ::WORD = 0x01;
427 pub const SUBLANG_KASHMIRI_SASIA: ::WORD = 0x02;
428 pub const SUBLANG_KASHMIRI_INDIA: ::WORD = 0x02;
429 pub const SUBLANG_KAZAK_KAZAKHSTAN: ::WORD = 0x01;
430 pub const SUBLANG_KHMER_CAMBODIA: ::WORD = 0x01;
431 pub const SUBLANG_KICHE_GUATEMALA: ::WORD = 0x01;
432 pub const SUBLANG_KINYARWANDA_RWANDA: ::WORD = 0x01;
433 pub const SUBLANG_KONKANI_INDIA: ::WORD = 0x01;
434 pub const SUBLANG_KOREAN: ::WORD = 0x01;
435 pub const SUBLANG_KYRGYZ_KYRGYZSTAN: ::WORD = 0x01;
436 pub const SUBLANG_LAO_LAO: ::WORD = 0x01;
437 pub const SUBLANG_LATVIAN_LATVIA: ::WORD = 0x01;
438 pub const SUBLANG_LITHUANIAN: ::WORD = 0x01;
439 pub const SUBLANG_LOWER_SORBIAN_GERMANY: ::WORD = 0x02;
440 pub const SUBLANG_LUXEMBOURGISH_LUXEMBOURG: ::WORD = 0x01;
441 pub const SUBLANG_MACEDONIAN_MACEDONIA: ::WORD = 0x01;
442 pub const SUBLANG_MALAY_MALAYSIA: ::WORD = 0x01;
443 pub const SUBLANG_MALAY_BRUNEI_DARUSSALAM: ::WORD = 0x02;
444 pub const SUBLANG_MALAYALAM_INDIA: ::WORD = 0x01;
445 pub const SUBLANG_MALTESE_MALTA: ::WORD = 0x01;
446 pub const SUBLANG_MAORI_NEW_ZEALAND: ::WORD = 0x01;
447 pub const SUBLANG_MAPUDUNGUN_CHILE: ::WORD = 0x01;
448 pub const SUBLANG_MARATHI_INDIA: ::WORD = 0x01;
449 pub const SUBLANG_MOHAWK_MOHAWK: ::WORD = 0x01;
450 pub const SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: ::WORD = 0x01;
451 pub const SUBLANG_MONGOLIAN_PRC: ::WORD = 0x02;
452 pub const SUBLANG_NEPALI_INDIA: ::WORD = 0x02;
453 pub const SUBLANG_NEPALI_NEPAL: ::WORD = 0x01;
454 pub const SUBLANG_NORWEGIAN_BOKMAL: ::WORD = 0x01;
455 pub const SUBLANG_NORWEGIAN_NYNORSK: ::WORD = 0x02;
456 pub const SUBLANG_OCCITAN_FRANCE: ::WORD = 0x01;
457 pub const SUBLANG_ODIA_INDIA: ::WORD = 0x01;
458 pub const SUBLANG_ORIYA_INDIA: ::WORD = 0x01;
459 pub const SUBLANG_PASHTO_AFGHANISTAN: ::WORD = 0x01;
460 pub const SUBLANG_PERSIAN_IRAN: ::WORD = 0x01;
461 pub const SUBLANG_POLISH_POLAND: ::WORD = 0x01;
462 pub const SUBLANG_PORTUGUESE: ::WORD = 0x02;
463 pub const SUBLANG_PORTUGUESE_BRAZILIAN: ::WORD = 0x01;
464 pub const SUBLANG_PULAR_SENEGAL: ::WORD = 0x02;
465 pub const SUBLANG_PUNJABI_INDIA: ::WORD = 0x01;
466 pub const SUBLANG_PUNJABI_PAKISTAN: ::WORD = 0x02;
467 pub const SUBLANG_QUECHUA_BOLIVIA: ::WORD = 0x01;
468 pub const SUBLANG_QUECHUA_ECUADOR: ::WORD = 0x02;
469 pub const SUBLANG_QUECHUA_PERU: ::WORD = 0x03;
470 pub const SUBLANG_ROMANIAN_ROMANIA: ::WORD = 0x01;
471 pub const SUBLANG_ROMANSH_SWITZERLAND: ::WORD = 0x01;
472 pub const SUBLANG_RUSSIAN_RUSSIA: ::WORD = 0x01;
473 pub const SUBLANG_SAKHA_RUSSIA: ::WORD = 0x01;
474 pub const SUBLANG_SAMI_NORTHERN_NORWAY: ::WORD = 0x01;
475 pub const SUBLANG_SAMI_NORTHERN_SWEDEN: ::WORD = 0x02;
476 pub const SUBLANG_SAMI_NORTHERN_FINLAND: ::WORD = 0x03;
477 pub const SUBLANG_SAMI_LULE_NORWAY: ::WORD = 0x04;
478 pub const SUBLANG_SAMI_LULE_SWEDEN: ::WORD = 0x05;
479 pub const SUBLANG_SAMI_SOUTHERN_NORWAY: ::WORD = 0x06;
480 pub const SUBLANG_SAMI_SOUTHERN_SWEDEN: ::WORD = 0x07;
481 pub const SUBLANG_SAMI_SKOLT_FINLAND: ::WORD = 0x08;
482 pub const SUBLANG_SAMI_INARI_FINLAND: ::WORD = 0x09;
483 pub const SUBLANG_SANSKRIT_INDIA: ::WORD = 0x01;
484 pub const SUBLANG_SCOTTISH_GAELIC: ::WORD = 0x01;
485 pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x06;
486 pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x07;
487 pub const SUBLANG_SERBIAN_MONTENEGRO_LATIN: ::WORD = 0x0b;
488 pub const SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC: ::WORD = 0x0c;
489 pub const SUBLANG_SERBIAN_SERBIA_LATIN: ::WORD = 0x09;
490 pub const SUBLANG_SERBIAN_SERBIA_CYRILLIC: ::WORD = 0x0a;
491 pub const SUBLANG_SERBIAN_CROATIA: ::WORD = 0x01;
492 pub const SUBLANG_SERBIAN_LATIN: ::WORD = 0x02;
493 pub const SUBLANG_SERBIAN_CYRILLIC: ::WORD = 0x03;
494 pub const SUBLANG_SINDHI_INDIA: ::WORD = 0x01;
495 pub const SUBLANG_SINDHI_PAKISTAN: ::WORD = 0x02;
496 pub const SUBLANG_SINDHI_AFGHANISTAN: ::WORD = 0x02;
497 pub const SUBLANG_SINHALESE_SRI_LANKA: ::WORD = 0x01;
498 pub const SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA: ::WORD = 0x01;
499 pub const SUBLANG_SLOVAK_SLOVAKIA: ::WORD = 0x01;
500 pub const SUBLANG_SLOVENIAN_SLOVENIA: ::WORD = 0x01;
501 pub const SUBLANG_SPANISH: ::WORD = 0x01;
502 pub const SUBLANG_SPANISH_MEXICAN: ::WORD = 0x02;
503 pub const SUBLANG_SPANISH_MODERN: ::WORD = 0x03;
504 pub const SUBLANG_SPANISH_GUATEMALA: ::WORD = 0x04;
505 pub const SUBLANG_SPANISH_COSTA_RICA: ::WORD = 0x05;
506 pub const SUBLANG_SPANISH_PANAMA: ::WORD = 0x06;
507 pub const SUBLANG_SPANISH_DOMINICAN_REPUBLIC: ::WORD = 0x07;
508 pub const SUBLANG_SPANISH_VENEZUELA: ::WORD = 0x08;
509 pub const SUBLANG_SPANISH_COLOMBIA: ::WORD = 0x09;
510 pub const SUBLANG_SPANISH_PERU: ::WORD = 0x0a;
511 pub const SUBLANG_SPANISH_ARGENTINA: ::WORD = 0x0b;
512 pub const SUBLANG_SPANISH_ECUADOR: ::WORD = 0x0c;
513 pub const SUBLANG_SPANISH_CHILE: ::WORD = 0x0d;
514 pub const SUBLANG_SPANISH_URUGUAY: ::WORD = 0x0e;
515 pub const SUBLANG_SPANISH_PARAGUAY: ::WORD = 0x0f;
516 pub const SUBLANG_SPANISH_BOLIVIA: ::WORD = 0x10;
517 pub const SUBLANG_SPANISH_EL_SALVADOR: ::WORD = 0x11;
518 pub const SUBLANG_SPANISH_HONDURAS: ::WORD = 0x12;
519 pub const SUBLANG_SPANISH_NICARAGUA: ::WORD = 0x13;
520 pub const SUBLANG_SPANISH_PUERTO_RICO: ::WORD = 0x14;
521 pub const SUBLANG_SPANISH_US: ::WORD = 0x15;
522 pub const SUBLANG_SWAHILI_KENYA: ::WORD = 0x01;
523 pub const SUBLANG_SWEDISH: ::WORD = 0x01;
524 pub const SUBLANG_SWEDISH_FINLAND: ::WORD = 0x02;
525 pub const SUBLANG_SYRIAC_SYRIA: ::WORD = 0x01;
526 pub const SUBLANG_TAJIK_TAJIKISTAN: ::WORD = 0x01;
527 pub const SUBLANG_TAMAZIGHT_ALGERIA_LATIN: ::WORD = 0x02;
528 pub const SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH: ::WORD = 0x04;
529 pub const SUBLANG_TAMIL_INDIA: ::WORD = 0x01;
530 pub const SUBLANG_TAMIL_SRI_LANKA: ::WORD = 0x02;
531 pub const SUBLANG_TATAR_RUSSIA: ::WORD = 0x01;
532 pub const SUBLANG_TELUGU_INDIA: ::WORD = 0x01;
533 pub const SUBLANG_THAI_THAILAND: ::WORD = 0x01;
534 pub const SUBLANG_TIBETAN_PRC: ::WORD = 0x01;
535 pub const SUBLANG_TIGRIGNA_ERITREA: ::WORD = 0x02;
536 pub const SUBLANG_TIGRINYA_ERITREA: ::WORD = 0x02;
537 pub const SUBLANG_TIGRINYA_ETHIOPIA: ::WORD = 0x01;
538 pub const SUBLANG_TSWANA_BOTSWANA: ::WORD = 0x02;
539 pub const SUBLANG_TSWANA_SOUTH_AFRICA: ::WORD = 0x01;
540 pub const SUBLANG_TURKISH_TURKEY: ::WORD = 0x01;
541 pub const SUBLANG_TURKMEN_TURKMENISTAN: ::WORD = 0x01;
542 pub const SUBLANG_UIGHUR_PRC: ::WORD = 0x01;
543 pub const SUBLANG_UKRAINIAN_UKRAINE: ::WORD = 0x01;
544 pub const SUBLANG_UPPER_SORBIAN_GERMANY: ::WORD = 0x01;
545 pub const SUBLANG_URDU_PAKISTAN: ::WORD = 0x01;
546 pub const SUBLANG_URDU_INDIA: ::WORD = 0x02;
547 pub const SUBLANG_UZBEK_LATIN: ::WORD = 0x01;
548 pub const SUBLANG_UZBEK_CYRILLIC: ::WORD = 0x02;
549 pub const SUBLANG_VALENCIAN_VALENCIA: ::WORD = 0x02;
550 pub const SUBLANG_VIETNAMESE_VIETNAM: ::WORD = 0x01;
551 pub const SUBLANG_WELSH_UNITED_KINGDOM: ::WORD = 0x01;
552 pub const SUBLANG_WOLOF_SENEGAL: ::WORD = 0x01;
553 pub const SUBLANG_XHOSA_SOUTH_AFRICA: ::WORD = 0x01;
554 pub const SUBLANG_YAKUT_RUSSIA: ::WORD = 0x01;
555 pub const SUBLANG_YI_PRC: ::WORD = 0x01;
556 pub const SUBLANG_YORUBA_NIGERIA: ::WORD = 0x01;
557 pub const SUBLANG_ZULU_SOUTH_AFRICA: ::WORD = 0x01;
558 //1962
559 // FIXME: Once feature(const_fn) or some CTFE alternative becomes stable, MAKELANGID! can go
560 // unless we want to #[macro_export] it ...
561 macro_rules! MAKELANGID { ($p:expr, $s:expr) => ($s << 10 | $p) }
MAKELANGID(p: ::WORD, s: ::WORD) -> ::LANGID562 pub fn MAKELANGID(p: ::WORD, s: ::WORD) -> ::LANGID { MAKELANGID!(p, s) }
PRIMARYLANGID(lgid: ::LANGID) -> ::WORD563 pub fn PRIMARYLANGID(lgid: ::LANGID) -> ::WORD { lgid & 0x3ff }
SUBLANGID(lgid: ::LANGID) -> ::WORD564 pub fn SUBLANGID(lgid: ::LANGID) -> ::WORD { lgid >> 10 }
565 //2019
566 pub const LANG_SYSTEM_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT);
567 pub const LANG_USER_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_DEFAULT);
568 //2214
569 pub const MAXIMUM_WAIT_OBJECTS: ::DWORD = 64;
570 pub const MAXIMUM_SUSPEND_COUNT: ::CHAR = MAXCHAR;
571 //2277
572 pub type KSPIN_LOCK = ::ULONG_PTR;
573 pub type PKSPIN_LOCK = *mut KSPIN_LOCK;
574 STRUCT!{struct M128A { // FIXME align 16
575 Low: ULONGLONG,
576 High: LONGLONG,
577 }}
578 pub type PM128A = *mut M128A;
579 #[cfg(target_arch = "x86")]
580 STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16
581 ControlWord: ::WORD,
582 StatusWord: ::WORD,
583 TagWord: ::BYTE,
584 Reserved1: ::BYTE,
585 ErrorOpcode: ::WORD,
586 ErrorOffset: ::DWORD,
587 ErrorSelector: ::WORD,
588 Reserved2: ::WORD,
589 DataOffset: ::DWORD,
590 DataSelector: ::WORD,
591 Reserved3: ::WORD,
592 MxCsr: ::DWORD,
593 MxCsr_Mask: ::DWORD,
594 FloatRegisters: [M128A; 8],
595 XmmRegisters: [M128A; 8],
596 Reserved4: [::BYTE; 224],
597 }}
598 #[cfg(target_arch = "x86_64")]
599 STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16
600 ControlWord: ::WORD,
601 StatusWord: ::WORD,
602 TagWord: ::BYTE,
603 Reserved1: ::BYTE,
604 ErrorOpcode: ::WORD,
605 ErrorOffset: ::DWORD,
606 ErrorSelector: ::WORD,
607 Reserved2: ::WORD,
608 DataOffset: ::DWORD,
609 DataSelector: ::WORD,
610 Reserved3: ::WORD,
611 MxCsr: ::DWORD,
612 MxCsr_Mask: ::DWORD,
613 FloatRegisters: [M128A; 8],
614 XmmRegisters: [M128A; 16],
615 Reserved4: [::BYTE; 96],
616 }}
617 //3563
618 #[cfg(target_arch = "x86")]
619 pub const SIZE_OF_80387_REGISTERS: usize = 80;
620 #[cfg(target_arch = "x86")]
621 STRUCT!{nodebug struct FLOATING_SAVE_AREA {
622 ControlWord: ::DWORD,
623 StatusWord: ::DWORD,
624 TagWord: ::DWORD,
625 ErrorOffset: ::DWORD,
626 ErrorSelector: ::DWORD,
627 DataOffset: ::DWORD,
628 DataSelector: ::DWORD,
629 RegisterArea: [::BYTE; SIZE_OF_80387_REGISTERS],
630 Spare0: ::DWORD,
631 }}
632 #[cfg(target_arch = "x86")]
633 pub type PFLOATING_SAVE_AREA = *mut FLOATING_SAVE_AREA;
634 #[cfg(target_arch = "x86")]
635 pub const MAXIMUM_SUPPORTED_EXTENSION: usize = 512;
636 #[cfg(target_arch = "x86")]
637 STRUCT!{nodebug struct CONTEXT {
638 ContextFlags: ::DWORD,
639 Dr0: ::DWORD,
640 Dr1: ::DWORD,
641 Dr2: ::DWORD,
642 Dr3: ::DWORD,
643 Dr6: ::DWORD,
644 Dr7: ::DWORD,
645 FloatSave: FLOATING_SAVE_AREA,
646 SegGs: ::DWORD,
647 SegFs: ::DWORD,
648 SegEs: ::DWORD,
649 SegDs: ::DWORD,
650 Edi: ::DWORD,
651 Esi: ::DWORD,
652 Ebx: ::DWORD,
653 Edx: ::DWORD,
654 Ecx: ::DWORD,
655 Eax: ::DWORD,
656 Ebp: ::DWORD,
657 Eip: ::DWORD,
658 SegCs: ::DWORD,
659 EFlags: ::DWORD,
660 Esp: ::DWORD,
661 SegSs: ::DWORD,
662 ExtendedRegisters: [::BYTE; MAXIMUM_SUPPORTED_EXTENSION],
663 }}
664 #[cfg(target_arch = "x86_64")]
665 pub type XMM_SAVE_AREA32 = XSAVE_FORMAT;
666 pub type PXMM_SAVE_AREA32 = *mut XSAVE_FORMAT;
667 // FIXME - Align 16
668 #[cfg(target_arch = "x86_64")]
669 STRUCT!{nodebug struct CONTEXT {
670 P1Home: ::DWORD64,
671 P2Home: ::DWORD64,
672 P3Home: ::DWORD64,
673 P4Home: ::DWORD64,
674 P5Home: ::DWORD64,
675 P6Home: ::DWORD64,
676 ContextFlags: ::DWORD,
677 MxCsr: ::DWORD,
678 SegCs: ::WORD,
679 SegDs: ::WORD,
680 SegEs: ::WORD,
681 SegFs: ::WORD,
682 SegGs: ::WORD,
683 SegSs: ::WORD,
684 EFlags: ::DWORD,
685 Dr0: ::DWORD64,
686 Dr1: ::DWORD64,
687 Dr2: ::DWORD64,
688 Dr3: ::DWORD64,
689 Dr6: ::DWORD64,
690 Dr7: ::DWORD64,
691 Rax: ::DWORD64,
692 Rcx: ::DWORD64,
693 Rdx: ::DWORD64,
694 Rbx: ::DWORD64,
695 Rsp: ::DWORD64,
696 Rbp: ::DWORD64,
697 Rsi: ::DWORD64,
698 Rdi: ::DWORD64,
699 R8: ::DWORD64,
700 R9: ::DWORD64,
701 R10: ::DWORD64,
702 R11: ::DWORD64,
703 R12: ::DWORD64,
704 R13: ::DWORD64,
705 R14: ::DWORD64,
706 R15: ::DWORD64,
707 Rip: ::DWORD64,
708 FltSave: XMM_SAVE_AREA32,
709 VectorRegister: [::M128A; 26],
710 VectorControl: ::DWORD64,
711 DebugControl: ::DWORD64,
712 LastBranchToRip: ::DWORD64,
713 LastBranchFromRip: ::DWORD64,
714 LastExceptionToRip: ::DWORD64,
715 LastExceptionFromRip: ::DWORD64,
716 }}
717 pub type PCONTEXT = *mut CONTEXT;
718 #[test]
test_CONTEXT_size()719 fn test_CONTEXT_size() {
720 use std::mem::size_of;
721 if cfg!(target_arch = "x86_64") {
722 assert_eq!(size_of::<CONTEXT>(), 1232)
723 } else if cfg!(target_arch = "x86") {
724 assert_eq!(size_of::<CONTEXT>(), 716)
725 }
726 }
727 pub type RUNTIME_FUNCTION = IMAGE_RUNTIME_FUNCTION_ENTRY;
728 pub type PRUNTIME_FUNCTION = *mut RUNTIME_FUNCTION;
729 pub const UNWIND_HISTORY_TABLE_SIZE: usize = 12;
730 STRUCT!{struct UNWIND_HISTORY_TABLE_ENTRY {
731 ImageBase: ::DWORD64,
732 FunctionEntry: PRUNTIME_FUNCTION,
733 }}
734 pub type PUNWIND_HISTORY_TABLE_ENTRY = *mut UNWIND_HISTORY_TABLE_ENTRY;
735 STRUCT!{struct UNWIND_HISTORY_TABLE {
736 Count: ::DWORD,
737 LocalHint: ::BYTE,
738 GlobalHint: ::BYTE,
739 Search: ::BYTE,
740 Once: ::BYTE,
741 LowAddress: ::DWORD64,
742 HighAddress: ::DWORD64,
743 Entry: [UNWIND_HISTORY_TABLE_ENTRY; UNWIND_HISTORY_TABLE_SIZE],
744 }}
745 pub type PUNWIND_HISTORY_TABLE = *mut UNWIND_HISTORY_TABLE;
746 pub type PGET_RUNTIME_FUNCTION_CALLBACK = Option<unsafe extern "system" fn(
747 ControlPc: ::DWORD64, Context: ::PVOID,
748 ) -> PRUNTIME_FUNCTION>;
749 STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u1 {
750 Xmm0: PM128A,
751 Xmm1: PM128A,
752 Xmm2: PM128A,
753 Xmm3: PM128A,
754 Xmm4: PM128A,
755 Xmm5: PM128A,
756 Xmm6: PM128A,
757 Xmm7: PM128A,
758 Xmm8: PM128A,
759 Xmm9: PM128A,
760 Xmm10: PM128A,
761 Xmm11: PM128A,
762 Xmm12: PM128A,
763 Xmm14: PM128A,
764 Xmm15: PM128A,
765 }}
766 STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u2 {
767 Rax: ::DWORD64,
768 Rcx: ::DWORD64,
769 Rdx: ::DWORD64,
770 Rbx: ::DWORD64,
771 Rsp: ::DWORD64,
772 Rbp: ::DWORD64,
773 Rsi: ::DWORD64,
774 Rdi: ::DWORD64,
775 R8: ::DWORD64,
776 R9: ::DWORD64,
777 R10: ::DWORD64,
778 R11: ::DWORD64,
779 R12: ::DWORD64,
780 R13: ::DWORD64,
781 R14: ::DWORD64,
782 R15: ::DWORD64,
783 }}
784 STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS {
785 FloatingContext: [PM128A; 16],
786 IntegerContext: [::PDWORD64; 16],
787 }}
788 // FIXME: all unions are untagged
789 UNION!(
790 KNONVOLATILE_CONTEXT_POINTERS, FloatingContext, Xmms, Xmms_mut,
791 KNONVOLATILE_CONTEXT_POINTERS_u1
792 );
793 UNION!(
794 KNONVOLATILE_CONTEXT_POINTERS, IntegerContext, Regs, Regs_mut,
795 KNONVOLATILE_CONTEXT_POINTERS_u2
796 );
797 pub type PKNONVOLATILE_CONTEXT_POINTERS = *mut KNONVOLATILE_CONTEXT_POINTERS;
798 //8983
799 pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15;
800 STRUCT!{struct EXCEPTION_RECORD {
801 ExceptionCode: ::DWORD,
802 ExceptionFlags: ::DWORD,
803 ExceptionRecord: *mut EXCEPTION_RECORD,
804 ExceptionAddress: ::PVOID,
805 NumberParameters: ::DWORD,
806 ExceptionInformation: [::ULONG_PTR; EXCEPTION_MAXIMUM_PARAMETERS],
807 }}
808 pub type PEXCEPTION_RECORD = *mut EXCEPTION_RECORD;
809 //9023
810 STRUCT!{struct EXCEPTION_POINTERS {
811 ExceptionRecord: PEXCEPTION_RECORD,
812 ContextRecord: PCONTEXT,
813 }}
814 pub type PEXCEPTION_POINTERS = *mut EXCEPTION_POINTERS;
815 pub type PACCESS_TOKEN = ::PVOID;
816 pub type PSECURITY_DESCRIPTOR = ::PVOID;
817 pub type PSID = ::PVOID;
818 pub type PCLAIMS_BLOB = ::PVOID;
819 //9091
820 pub type ACCESS_MASK = ::DWORD;
821 pub type PACCESS_MASK = *mut ACCESS_MASK;
822 pub const DELETE: ::DWORD = 0x00010000;
823 pub const READ_CONTROL: ::DWORD = 0x00020000;
824 pub const WRITE_DAC: ::DWORD = 0x00040000;
825 pub const WRITE_OWNER: ::DWORD = 0x00080000;
826 pub const SYNCHRONIZE: ::DWORD = 0x00100000;
827 pub const STANDARD_RIGHTS_REQUIRED: ::DWORD = 0x000F0000;
828 pub const STANDARD_RIGHTS_READ: ::DWORD = READ_CONTROL;
829 pub const STANDARD_RIGHTS_WRITE: ::DWORD = READ_CONTROL;
830 pub const STANDARD_RIGHTS_EXECUTE: ::DWORD = READ_CONTROL;
831 pub const STANDARD_RIGHTS_ALL: ::DWORD = 0x001F0000;
832 pub const SPECIFIC_RIGHTS_ALL: ::DWORD = 0x0000FFFF;
833 pub const ACCESS_SYSTEM_SECURITY: ::DWORD = 0x01000000;
834 pub const MAXIMUM_ALLOWED: ::DWORD = 0x02000000;
835 pub const GENERIC_READ: ::DWORD = 0x80000000;
836 pub const GENERIC_WRITE: ::DWORD = 0x40000000;
837 pub const GENERIC_EXECUTE: ::DWORD = 0x20000000;
838 pub const GENERIC_ALL: ::DWORD = 0x10000000;
839 //9170
840 STRUCT!{struct LUID_AND_ATTRIBUTES {
841 Luid: LUID,
842 Attributes: ::DWORD,
843 }}
844 pub type PLUID_AND_ATTRIBUTES = *mut LUID_AND_ATTRIBUTES;
845 //9243
846 ENUM!{enum SID_NAME_USE {
847 SidTypeUser = 1,
848 SidTypeGroup,
849 SidTypeDomain,
850 SidTypeAlias,
851 SidTypeWellKnownGroup,
852 SidTypeDeletedAccount,
853 SidTypeInvalid,
854 SidTypeUnknown,
855 SidTypeComputer,
856 SidTypeLabel,
857 }}
858 pub type PSID_NAME_USE = *mut SID_NAME_USE;
859 STRUCT!{struct SID_AND_ATTRIBUTES {
860 Sid: PSID,
861 Attributes: ::DWORD,
862 }}
863 pub type PSID_AND_ATTRIBUTES = *mut SID_AND_ATTRIBUTES;
864 //9802
865 pub const ACL_REVISION: ::BYTE = 2;
866 pub const ACL_REVISION_DS: ::BYTE = 4;
867 pub const ACL_REVISION1: ::BYTE = 1;
868 pub const MIN_ACL_REVISION: ::BYTE = ACL_REVISION2;
869 pub const ACL_REVISION2: ::BYTE = 2;
870 pub const ACL_REVISION3: ::BYTE = 3;
871 pub const ACL_REVISION4: ::BYTE = 4;
872 pub const MAX_ACL_REVISION: ::BYTE = ACL_REVISION4;
873 STRUCT!{struct ACL {
874 AclRevision: ::BYTE,
875 Sbz1: ::BYTE,
876 AclSize: ::WORD,
877 AceCount: ::WORD,
878 Sbz2: ::WORD,
879 }}
880 pub type PACL = *mut ACL;
881 //9888
882 pub const SE_PRIVILEGE_ENABLED_BY_DEFAULT: ::DWORD = 0x00000001;
883 pub const SE_PRIVILEGE_ENABLED: ::DWORD = 0x00000002;
884 pub const SE_PRIVILEGE_REMOVED: ::DWORD = 0x00000004;
885 pub const SE_PRIVILEGE_USED_FOR_ACCESS: ::DWORD = 0x80000000;
886 pub const SE_PRIVILEGE_VALID_ATTRIBUTES: ::DWORD = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS;
887 pub const PRIVILEGE_SET_ALL_NECESSARY: ::DWORD = 1;
888 //10689
889 pub const TOKEN_ASSIGN_PRIMARY: ::DWORD = 0x0001;
890 pub const TOKEN_DUPLICATE: ::DWORD = 0x0002;
891 pub const TOKEN_IMPERSONATE: ::DWORD = 0x0004;
892 pub const TOKEN_QUERY: ::DWORD = 0x0008;
893 pub const TOKEN_QUERY_SOURCE: ::DWORD = 0x0010;
894 pub const TOKEN_ADJUST_PRIVILEGES: ::DWORD = 0x0020;
895 pub const TOKEN_ADJUST_GROUPS: ::DWORD = 0x0040;
896 pub const TOKEN_ADJUST_DEFAULT: ::DWORD = 0x0080;
897 pub const TOKEN_ADJUST_SESSIONID: ::DWORD = 0x0100;
898 pub const TOKEN_ALL_ACCESS_P: ::DWORD = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY
899 | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE
900 | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT;
901 pub const TOKEN_ALL_ACCESS: ::DWORD = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID;
902 pub const TOKEN_READ: ::DWORD = STANDARD_RIGHTS_READ | TOKEN_QUERY;
903 pub const TOKEN_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES
904 | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT;
905 pub const TOKEN_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE;
906 //10823
907 STRUCT!{nodebug struct TOKEN_PRIVILEGES {
908 PrivilegeCount: ::DWORD,
909 Privileges: [LUID_AND_ATTRIBUTES; 0],
910 }}
911 pub type PTOKEN_PRIVILEGES = *mut TOKEN_PRIVILEGES;
912 //10965
913 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID: ::WORD = 0x00;
914 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64: ::WORD = 0x01;
915 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64: ::WORD = 0x02;
916 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING: ::WORD = 0x03;
917 STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE {
918 Version: ::DWORD64,
919 Name: ::PWSTR,
920 }}
921 pub type PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = *mut CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
922 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN: ::WORD = 0x04;
923 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_SID: ::WORD = 0x05;
924 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN: ::WORD = 0x06;
925 STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE {
926 pValue: ::PVOID,
927 ValueLength: ::DWORD,
928 }}
929 pub type PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE =
930 *mut CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
931 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING: ::WORD = 0x10;
932 pub const CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE: ::DWORD = 0x0001;
933 pub const CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE: ::DWORD = 0x0002;
934 pub const CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY: ::DWORD = 0x0004;
935 pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT: ::DWORD = 0x0008;
936 pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED: ::DWORD = 0x0010;
937 pub const CLAIM_SECURITY_ATTRIBUTE_MANDATORY: ::DWORD = 0x0020;
938 pub const CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS: ::DWORD = CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE
939 | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY
940 | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED
941 | CLAIM_SECURITY_ATTRIBUTE_MANDATORY;
942 pub const CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS: ::DWORD = 0xFFFF0000;
943 STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_V1 {
944 Name: ::PWSTR,
945 ValueType: ::WORD,
946 Reserved: ::WORD,
947 Flags: ::DWORD,
948 ValueCount: ::DWORD,
949 // Put data here
950 }}
951 pub type PCLAIM_SECURITY_ATTRIBUTE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_V1;
952 STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 {
953 Name: ::DWORD,
954 ValueType: ::WORD,
955 Reserved: ::WORD,
956 Flags: ::DWORD,
957 ValueCount: ::DWORD,
958 // Put array here
959 }}
960 pub type PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1;
961 pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1: ::WORD = 1;
962 pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION: ::WORD =
963 CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1;
964 STRUCT!{struct CLAIM_SECURITY_ATTRIBUTES_INFORMATION {
965 Version: ::WORD,
966 Reserved: ::WORD,
967 AttributeCount: ::DWORD,
968 pAttributeV1: PCLAIM_SECURITY_ATTRIBUTE_V1,
969 }}
970 pub type PCLAIM_SECURITY_ATTRIBUTES_INFORMATION = *mut CLAIM_SECURITY_ATTRIBUTES_INFORMATION;
971 //11257
972 pub type SECURITY_INFORMATION = ::DWORD;
973 pub type PSECURITY_INFORMATION = *mut ::DWORD;
974 pub const OWNER_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000001;
975 pub const GROUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000002;
976 pub const DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000004;
977 pub const SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000008;
978 pub const LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000010;
979 pub const ATTRIBUTE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000020;
980 pub const SCOPE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000040;
981 pub const PROCESS_TRUST_LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000080;
982 pub const BACKUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00010000;
983 pub const PROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x80000000;
984 pub const PROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x40000000;
985 pub const UNPROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x20000000;
986 pub const UNPROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x10000000;
987 ENUM!{enum SE_LEARNING_MODE_DATA_TYPE {
988 SeLearningModeInvalidType = 0,
989 SeLearningModeSettings,
990 SeLearningModeMax,
991 }}
992 STRUCT!{struct SECURITY_CAPABILITIES {
993 AppContainerSid: PSID,
994 Capabilities: PSID_AND_ATTRIBUTES,
995 CapabilityCount: ::DWORD,
996 Reserved: ::DWORD,
997 }}
998 pub type PSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES;
999 pub type LPSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES;
1000 pub const PROCESS_TERMINATE: ::DWORD = 0x0001;
1001 pub const PROCESS_CREATE_THREAD: ::DWORD = 0x0002;
1002 pub const PROCESS_SET_SESSIONID: ::DWORD = 0x0004;
1003 pub const PROCESS_VM_OPERATION: ::DWORD = 0x0008;
1004 pub const PROCESS_VM_READ: ::DWORD = 0x0010;
1005 pub const PROCESS_VM_WRITE: ::DWORD = 0x0020;
1006 pub const PROCESS_DUP_HANDLE: ::DWORD = 0x0040;
1007 pub const PROCESS_CREATE_PROCESS: ::DWORD = 0x0080;
1008 pub const PROCESS_SET_QUOTA: ::DWORD = 0x0100;
1009 pub const PROCESS_SET_INFORMATION: ::DWORD = 0x0200;
1010 pub const PROCESS_QUERY_INFORMATION: ::DWORD = 0x0400;
1011 pub const PROCESS_SUSPEND_RESUME: ::DWORD = 0x0800;
1012 pub const PROCESS_QUERY_LIMITED_INFORMATION: ::DWORD = 0x1000;
1013 pub const PROCESS_SET_LIMITED_INFORMATION: ::DWORD = 0x2000;
1014 pub const PROCESS_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF;
1015 //11007
1016 pub const THREAD_BASE_PRIORITY_LOWRT: ::DWORD = 15;
1017 pub const THREAD_BASE_PRIORITY_MAX: ::DWORD = 2;
1018 pub const THREAD_BASE_PRIORITY_MIN: ::DWORD = -2i32 as ::DWORD;
1019 pub const THREAD_BASE_PRIORITY_IDLE: ::DWORD = -15i32 as ::DWORD;
1020 //11018
1021 STRUCT!{struct QUOTA_LIMITS {
1022 PagedPoolLimit: ::SIZE_T,
1023 NonPagedPoolLimit: ::SIZE_T,
1024 MinimumWorkingSetSize: ::SIZE_T,
1025 MaximumWorkingSetSize: ::SIZE_T,
1026 PagefileLimit: ::SIZE_T,
1027 TimeLimit: ::LARGE_INTEGER,
1028 }}
1029 pub type PQUOTA_LIMITS = *mut QUOTA_LIMITS;
1030 pub const QUOTA_LIMITS_HARDWS_MIN_ENABLE: ::DWORD = 0x00000001;
1031 pub const QUOTA_LIMITS_HARDWS_MIN_DISABLE: ::DWORD = 0x00000002;
1032 pub const QUOTA_LIMITS_HARDWS_MAX_ENABLE: ::DWORD = 0x00000004;
1033 pub const QUOTA_LIMITS_HARDWS_MAX_DISABLE: ::DWORD = 0x00000008;
1034 pub const QUOTA_LIMITS_USE_DEFAULT_LIMITS: ::DWORD = 0x00000010;
1035 STRUCT!{struct RATE_QUOTA_LIMIT {
1036 RateData: ::DWORD,
1037 BitFields: ::DWORD,
1038 }}
1039 BITFIELD!(RATE_QUOTA_LIMIT BitFields: ::DWORD [
1040 RatePercent set_RatePercent[0..7],
1041 Reserved0 set_Reserved0[7..32],
1042 ]);
1043 pub type PRATE_QUOTA_LIMIT = *mut RATE_QUOTA_LIMIT;
1044 STRUCT!{struct QUOTA_LIMITS_EX {
1045 PagedPoolLimit: ::SIZE_T,
1046 NonPagedPoolLimit: ::SIZE_T,
1047 MinimumWorkingSetSize: ::SIZE_T,
1048 MaximumWorkingSetSize: ::SIZE_T,
1049 PagefileLimit: ::SIZE_T,
1050 TimeLimit: ::LARGE_INTEGER,
1051 WorkingSetLimit: ::SIZE_T,
1052 Reserved2: ::SIZE_T,
1053 Reserved3: ::SIZE_T,
1054 Reserved4: ::SIZE_T,
1055 Flags: ::DWORD,
1056 CpuRateLimit: RATE_QUOTA_LIMIT,
1057 }}
1058 pub type PQUOTA_LIMITS_EX = *mut QUOTA_LIMITS_EX;
1059 STRUCT!{struct IO_COUNTERS {
1060 ReadOperationCount: ::ULONGLONG,
1061 WriteOperationCount: ::ULONGLONG,
1062 OtherOperationCount: ::ULONGLONG,
1063 ReadTransferCount: ::ULONGLONG,
1064 WriteTransferCount: ::ULONGLONG,
1065 OtherTransferCount: ::ULONGLONG,
1066 }}
1067 pub type PIO_COUNTERS = *mut IO_COUNTERS;
1068 //11192
1069 STRUCT!{struct JOBOBJECT_BASIC_LIMIT_INFORMATION {
1070 PerProcessUserTimeLimit: ::LARGE_INTEGER,
1071 PerJobUserTimeLimit: ::LARGE_INTEGER,
1072 LimitFlags: ::DWORD,
1073 MinimumWorkingSetSize: ::SIZE_T,
1074 MaximumWorkingSetSize: ::SIZE_T,
1075 ActiveProcessLimit: ::DWORD,
1076 Affinity: ::ULONG_PTR,
1077 PriorityClass: ::DWORD,
1078 SchedulingClass: ::DWORD,
1079 }}
1080 pub type PJOBOBJECT_BASIC_LIMIT_INFORMATION = *mut JOBOBJECT_BASIC_LIMIT_INFORMATION;
1081 STRUCT!{struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
1082 BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION,
1083 IoInfo: IO_COUNTERS,
1084 ProcessMemoryLimit: ::SIZE_T,
1085 JobMemoryLimit: ::SIZE_T,
1086 PeakProcessMemoryUsed: ::SIZE_T,
1087 PeakJobMemoryUsed: ::SIZE_T,
1088 }}
1089 pub type PJOBOBJECT_EXTENDED_LIMIT_INFORMATION = *mut JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
1090 STRUCT!{struct JOBOBJECT_BASIC_PROCESS_ID_LIST {
1091 NumberOfAssignedProcesses: ::DWORD,
1092 NumberOfProcessIdsInList: ::DWORD,
1093 ProcessIdList: [::ULONG_PTR; 0],
1094 }}
1095 //11712
1096 pub const JOB_OBJECT_TERMINATE_AT_END_OF_JOB: ::DWORD = 0;
1097 pub const JOB_OBJECT_POST_AT_END_OF_JOB: ::DWORD = 1;
1098 pub const JOB_OBJECT_MSG_END_OF_JOB_TIME: ::DWORD = 1;
1099 pub const JOB_OBJECT_MSG_END_OF_PROCESS_TIME: ::DWORD = 2;
1100 pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT: ::DWORD = 3;
1101 pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO: ::DWORD = 4;
1102 pub const JOB_OBJECT_MSG_NEW_PROCESS: ::DWORD = 6;
1103 pub const JOB_OBJECT_MSG_EXIT_PROCESS: ::DWORD = 7;
1104 pub const JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS: ::DWORD = 8;
1105 pub const JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT: ::DWORD = 9;
1106 pub const JOB_OBJECT_MSG_JOB_MEMORY_LIMIT: ::DWORD = 10;
1107 pub const JOB_OBJECT_MSG_NOTIFICATION_LIMIT: ::DWORD = 11;
1108 pub const JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT: ::DWORD = 12;
1109 pub const JOB_OBJECT_MSG_MINIMUM: ::DWORD = 1;
1110 pub const JOB_OBJECT_MSG_MAXIMUM: ::DWORD = 12;
1111 pub const JOB_OBJECT_VALID_COMPLETION_FILTER: ::DWORD = ((1 << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1)
1112 - ((1 << JOB_OBJECT_MSG_MINIMUM) - 1);
1113 pub const JOB_OBJECT_LIMIT_WORKINGSET: ::DWORD = 0x00000001;
1114 pub const JOB_OBJECT_LIMIT_PROCESS_TIME: ::DWORD = 0x00000002;
1115 pub const JOB_OBJECT_LIMIT_JOB_TIME: ::DWORD = 0x00000004;
1116 pub const JOB_OBJECT_LIMIT_ACTIVE_PROCESS: ::DWORD = 0x00000008;
1117 pub const JOB_OBJECT_LIMIT_AFFINITY: ::DWORD = 0x00000010;
1118 pub const JOB_OBJECT_LIMIT_PRIORITY_CLASS: ::DWORD = 0x00000020;
1119 pub const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME: ::DWORD = 0x00000040;
1120 pub const JOB_OBJECT_LIMIT_SCHEDULING_CLASS: ::DWORD = 0x00000080;
1121 pub const JOB_OBJECT_LIMIT_PROCESS_MEMORY: ::DWORD = 0x00000100;
1122 pub const JOB_OBJECT_LIMIT_JOB_MEMORY: ::DWORD = 0x00000200;
1123 pub const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION: ::DWORD = 0x00000400;
1124 pub const JOB_OBJECT_LIMIT_BREAKAWAY_OK: ::DWORD = 0x00000800;
1125 pub const JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK: ::DWORD = 0x00001000;
1126 pub const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE: ::DWORD = 0x00002000;
1127 pub const JOB_OBJECT_LIMIT_SUBSET_AFFINITY: ::DWORD = 0x00004000;
1128 pub const JOB_OBJECT_LIMIT_JOB_READ_BYTES: ::DWORD = 0x00010000;
1129 pub const JOB_OBJECT_LIMIT_JOB_WRITE_BYTES: ::DWORD = 0x00020000;
1130 pub const JOB_OBJECT_LIMIT_RATE_CONTROL: ::DWORD = 0x00040000;
1131 pub const JOB_OBJECT_LIMIT_RESERVED3: ::DWORD = 0x00008000;
1132 pub const JOB_OBJECT_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff;
1133 pub const JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS: ::DWORD = 0x000000ff;
1134 pub const JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS: ::DWORD = 0x00007fff;
1135 pub const JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS: ::DWORD = 0x00070204;
1136 pub const JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff;
1137 pub const JOB_OBJECT_UILIMIT_NONE: ::DWORD = 0x00000000;
1138 pub const JOB_OBJECT_UILIMIT_HANDLES: ::DWORD = 0x00000001;
1139 pub const JOB_OBJECT_UILIMIT_READCLIPBOARD: ::DWORD = 0x00000002;
1140 pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD: ::DWORD = 0x00000004;
1141 pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS: ::DWORD = 0x00000008;
1142 pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS: ::DWORD = 0x00000010;
1143 pub const JOB_OBJECT_UILIMIT_GLOBALATOMS: ::DWORD = 0x00000020;
1144 pub const JOB_OBJECT_UILIMIT_DESKTOP: ::DWORD = 0x00000040;
1145 pub const JOB_OBJECT_UILIMIT_EXITWINDOWS: ::DWORD = 0x00000080;
1146 pub const JOB_OBJECT_UILIMIT_ALL: ::DWORD = 0x000000FF;
1147 pub const JOB_OBJECT_UI_VALID_FLAGS: ::DWORD = 0x000000FF;
1148 pub const JOB_OBJECT_SECURITY_NO_ADMIN: ::DWORD = 0x00000001;
1149 pub const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN: ::DWORD = 0x00000002;
1150 pub const JOB_OBJECT_SECURITY_ONLY_TOKEN: ::DWORD = 0x00000004;
1151 pub const JOB_OBJECT_SECURITY_FILTER_TOKENS: ::DWORD = 0x00000008;
1152 pub const JOB_OBJECT_SECURITY_VALID_FLAGS: ::DWORD = 0x0000000f;
1153 pub const JOB_OBJECT_CPU_RATE_CONTROL_ENABLE: ::DWORD = 0x1;
1154 pub const JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED: ::DWORD = 0x2;
1155 pub const JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP: ::DWORD = 0x4;
1156 pub const JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY: ::DWORD = 0x8;
1157 pub const JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS: ::DWORD = 0xf;
1158 ENUM!{enum JOBOBJECTINFOCLASS {
1159 JobObjectBasicAccountingInformation = 1,
1160 JobObjectBasicLimitInformation,
1161 JobObjectBasicProcessIdList,
1162 JobObjectBasicUIRestrictions,
1163 JobObjectSecurityLimitInformation,
1164 JobObjectEndOfJobTimeInformation,
1165 JobObjectAssociateCompletionPortInformation,
1166 JobObjectBasicAndIoAccountingInformation,
1167 JobObjectExtendedLimitInformation,
1168 JobObjectJobSetInformation,
1169 JobObjectGroupInformation,
1170 JobObjectNotificationLimitInformation,
1171 JobObjectLimitViolationInformation,
1172 JobObjectGroupInformationEx,
1173 JobObjectCpuRateControlInformation,
1174 JobObjectCompletionFilter,
1175 JobObjectCompletionCounter,
1176 JobObjectReserved1Information = 18,
1177 JobObjectReserved2Information,
1178 JobObjectReserved3Information,
1179 JobObjectReserved4Information,
1180 JobObjectReserved5Information,
1181 JobObjectReserved6Information,
1182 JobObjectReserved7Information,
1183 JobObjectReserved8Information,
1184 JobObjectReserved9Information,
1185 MaxJobObjectInfoClass,
1186 }}
1187 //12063
1188 pub const SECTION_QUERY: ::DWORD = 0x0001;
1189 pub const SECTION_MAP_WRITE: ::DWORD = 0x0002;
1190 pub const SECTION_MAP_READ: ::DWORD = 0x0004;
1191 pub const SECTION_MAP_EXECUTE: ::DWORD = 0x0008;
1192 pub const SECTION_EXTEND_SIZE: ::DWORD = 0x0010;
1193 pub const SECTION_MAP_EXECUTE_EXPLICIT: ::DWORD = 0x0020;
1194 pub const SECTION_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SECTION_QUERY
1195 | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE;
1196 //12100
1197 pub const PAGE_NOACCESS: ::DWORD = 0x01;
1198 pub const PAGE_READONLY: ::DWORD = 0x02;
1199 pub const PAGE_READWRITE: ::DWORD = 0x04;
1200 pub const PAGE_WRITECOPY: ::DWORD = 0x08;
1201 pub const PAGE_EXECUTE: ::DWORD = 0x10;
1202 pub const PAGE_EXECUTE_READ: ::DWORD = 0x20;
1203 pub const PAGE_EXECUTE_READWRITE: ::DWORD = 0x40;
1204 pub const PAGE_EXECUTE_WRITECOPY: ::DWORD = 0x80;
1205 pub const PAGE_GUARD: ::DWORD = 0x100;
1206 pub const PAGE_NOCACHE: ::DWORD = 0x200;
1207 pub const PAGE_WRITECOMBINE: ::DWORD = 0x400;
1208 pub const PAGE_REVERT_TO_FILE_MAP: ::DWORD = 0x80000000;
1209 pub const PAGE_TARGETS_NO_UPDATE: ::DWORD = 0x40000000;
1210 pub const PAGE_TARGETS_INVALID: ::DWORD = 0x40000000;
1211 pub const MEM_COMMIT: ::DWORD = 0x1000;
1212 pub const MEM_RESERVE: ::DWORD = 0x2000;
1213 pub const MEM_DECOMMIT: ::DWORD = 0x4000;
1214 pub const MEM_RELEASE: ::DWORD = 0x8000;
1215 pub const MEM_FREE: ::DWORD = 0x10000;
1216 pub const MEM_PRIVATE: ::DWORD = 0x20000;
1217 pub const MEM_MAPPED: ::DWORD = 0x40000;
1218 pub const MEM_RESET: ::DWORD = 0x80000;
1219 pub const MEM_TOP_DOWN: ::DWORD = 0x100000;
1220 pub const MEM_WRITE_WATCH: ::DWORD = 0x200000;
1221 pub const MEM_PHYSICAL: ::DWORD = 0x400000;
1222 pub const MEM_ROTATE: ::DWORD = 0x800000;
1223 pub const MEM_DIFFERENT_IMAGE_BASE_OK: ::DWORD = 0x800000;
1224 pub const MEM_RESET_UNDO: ::DWORD = 0x1000000;
1225 pub const MEM_LARGE_PAGES: ::DWORD = 0x20000000;
1226 pub const MEM_4MB_PAGES: ::DWORD = 0x80000000;
1227 pub const SEC_FILE: ::DWORD = 0x800000;
1228 pub const SEC_IMAGE: ::DWORD = 0x1000000;
1229 pub const SEC_PROTECTED_IMAGE: ::DWORD = 0x2000000;
1230 pub const SEC_RESERVE: ::DWORD = 0x4000000;
1231 pub const SEC_COMMIT: ::DWORD = 0x8000000;
1232 pub const SEC_NOCACHE: ::DWORD = 0x10000000;
1233 pub const SEC_WRITECOMBINE: ::DWORD = 0x40000000;
1234 pub const SEC_LARGE_PAGES: ::DWORD = 0x80000000;
1235 pub const SEC_IMAGE_NO_EXECUTE: ::DWORD = (SEC_IMAGE | SEC_NOCACHE);
1236 pub const MEM_IMAGE: ::DWORD = SEC_IMAGE;
1237 pub const WRITE_WATCH_FLAG_RESET: ::DWORD = 0x01;
1238 pub const MEM_UNMAP_WITH_TRANSIENT_BOOST: ::DWORD = 0x01;
1239 //12217
1240 pub const FILE_READ_DATA: ::DWORD = 0x0001;
1241 pub const FILE_LIST_DIRECTORY: ::DWORD = 0x0001;
1242 pub const FILE_WRITE_DATA: ::DWORD = 0x0002;
1243 pub const FILE_ADD_FILE: ::DWORD = 0x0002;
1244 pub const FILE_APPEND_DATA: ::DWORD = 0x0004;
1245 pub const FILE_ADD_SUBDIRECTORY: ::DWORD = 0x0004;
1246 pub const FILE_CREATE_PIPE_INSTANCE: ::DWORD = 0x0004;
1247 pub const FILE_READ_EA: ::DWORD = 0x0008;
1248 pub const FILE_WRITE_EA: ::DWORD = 0x0010;
1249 pub const FILE_EXECUTE: ::DWORD = 0x0020;
1250 pub const FILE_TRAVERSE: ::DWORD = 0x0020;
1251 pub const FILE_DELETE_CHILD: ::DWORD = 0x0040;
1252 pub const FILE_READ_ATTRIBUTES: ::DWORD = 0x0080;
1253 pub const FILE_WRITE_ATTRIBUTES: ::DWORD = 0x0100;
1254 pub const FILE_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF;
1255 pub const FILE_GENERIC_READ: ::DWORD = STANDARD_RIGHTS_READ | FILE_READ_DATA
1256 | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE;
1257 pub const FILE_GENERIC_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA
1258 | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE;
1259 pub const FILE_GENERIC_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES
1260 | FILE_EXECUTE | SYNCHRONIZE;
1261 pub const FILE_SHARE_READ: ::DWORD = 0x00000001;
1262 pub const FILE_SHARE_WRITE: ::DWORD = 0x00000002;
1263 pub const FILE_SHARE_DELETE: ::DWORD = 0x00000004;
1264 pub const FILE_ATTRIBUTE_READONLY: ::DWORD = 0x00000001;
1265 pub const FILE_ATTRIBUTE_HIDDEN: ::DWORD = 0x00000002;
1266 pub const FILE_ATTRIBUTE_SYSTEM: ::DWORD = 0x00000004;
1267 pub const FILE_ATTRIBUTE_DIRECTORY: ::DWORD = 0x00000010;
1268 pub const FILE_ATTRIBUTE_ARCHIVE: ::DWORD = 0x00000020;
1269 pub const FILE_ATTRIBUTE_DEVICE: ::DWORD = 0x00000040;
1270 pub const FILE_ATTRIBUTE_NORMAL: ::DWORD = 0x00000080;
1271 pub const FILE_ATTRIBUTE_TEMPORARY: ::DWORD = 0x00000100;
1272 pub const FILE_ATTRIBUTE_SPARSE_FILE: ::DWORD = 0x00000200;
1273 pub const FILE_ATTRIBUTE_REPARSE_POINT: ::DWORD = 0x00000400;
1274 pub const FILE_ATTRIBUTE_COMPRESSED: ::DWORD = 0x00000800;
1275 pub const FILE_ATTRIBUTE_OFFLINE: ::DWORD = 0x00001000;
1276 pub const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED: ::DWORD = 0x00002000;
1277 pub const FILE_ATTRIBUTE_ENCRYPTED: ::DWORD = 0x00004000;
1278 pub const FILE_ATTRIBUTE_INTEGRITY_STREAM: ::DWORD = 0x00008000;
1279 pub const FILE_ATTRIBUTE_VIRTUAL: ::DWORD = 0x00010000;
1280 pub const FILE_ATTRIBUTE_NO_SCRUB_DATA: ::DWORD = 0x00020000;
1281 pub const FILE_ATTRIBUTE_EA: ::DWORD = 0x00040000;
1282 pub const FILE_NOTIFY_CHANGE_FILE_NAME: ::DWORD = 0x00000001;
1283 pub const FILE_NOTIFY_CHANGE_DIR_NAME: ::DWORD = 0x00000002;
1284 pub const FILE_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000004;
1285 pub const FILE_NOTIFY_CHANGE_SIZE: ::DWORD = 0x00000008;
1286 pub const FILE_NOTIFY_CHANGE_LAST_WRITE: ::DWORD = 0x00000010;
1287 pub const FILE_NOTIFY_CHANGE_LAST_ACCESS: ::DWORD = 0x00000020;
1288 pub const FILE_NOTIFY_CHANGE_CREATION: ::DWORD = 0x00000040;
1289 pub const FILE_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000100;
1290 pub const FILE_ACTION_ADDED: ::DWORD = 0x00000001;
1291 pub const FILE_ACTION_REMOVED: ::DWORD = 0x00000002;
1292 pub const FILE_ACTION_MODIFIED: ::DWORD = 0x00000003;
1293 pub const FILE_ACTION_RENAMED_OLD_NAME: ::DWORD = 0x00000004;
1294 pub const FILE_ACTION_RENAMED_NEW_NAME: ::DWORD = 0x00000005;
1295 pub const MAILSLOT_NO_MESSAGE: ::DWORD = 0xFFFFFFFF;
1296 pub const MAILSLOT_WAIT_FOREVER: ::DWORD = 0xFFFFFFFF;
1297 pub const FILE_CASE_SENSITIVE_SEARCH: ::DWORD = 0x00000001;
1298 pub const FILE_CASE_PRESERVED_NAMES: ::DWORD = 0x00000002;
1299 pub const FILE_UNICODE_ON_DISK: ::DWORD = 0x00000004;
1300 pub const FILE_PERSISTENT_ACLS: ::DWORD = 0x00000008;
1301 pub const FILE_FILE_COMPRESSION: ::DWORD = 0x00000010;
1302 pub const FILE_VOLUME_QUOTAS: ::DWORD = 0x00000020;
1303 pub const FILE_SUPPORTS_SPARSE_FILES: ::DWORD = 0x00000040;
1304 pub const FILE_SUPPORTS_REPARSE_POINTS: ::DWORD = 0x00000080;
1305 pub const FILE_SUPPORTS_REMOTE_STORAGE: ::DWORD = 0x00000100;
1306 pub const FILE_VOLUME_IS_COMPRESSED: ::DWORD = 0x00008000;
1307 pub const FILE_SUPPORTS_OBJECT_IDS: ::DWORD = 0x00010000;
1308 pub const FILE_SUPPORTS_ENCRYPTION: ::DWORD = 0x00020000;
1309 pub const FILE_NAMED_STREAMS: ::DWORD = 0x00040000;
1310 pub const FILE_READ_ONLY_VOLUME: ::DWORD = 0x00080000;
1311 pub const FILE_SEQUENTIAL_WRITE_ONCE: ::DWORD = 0x00100000;
1312 pub const FILE_SUPPORTS_TRANSACTIONS: ::DWORD = 0x00200000;
1313 pub const FILE_SUPPORTS_HARD_LINKS: ::DWORD = 0x00400000;
1314 pub const FILE_SUPPORTS_EXTENDED_ATTRIBUTES: ::DWORD = 0x00800000;
1315 pub const FILE_SUPPORTS_OPEN_BY_FILE_ID: ::DWORD = 0x01000000;
1316 pub const FILE_SUPPORTS_USN_JOURNAL: ::DWORD = 0x02000000;
1317 pub const FILE_SUPPORTS_INTEGRITY_STREAMS: ::DWORD = 0x04000000;
1318 pub const FILE_INVALID_FILE_ID: ::LONGLONG = -1;
1319 STRUCT!{struct FILE_ID_128 {
1320 Identifier: [::BYTE; 16],
1321 }}
1322 pub type PFILE_ID_128 = *mut FILE_ID_128;
1323 STRUCT!{struct FILE_NOTIFY_INFORMATION {
1324 NextEntryOffset: ::DWORD,
1325 Action: ::DWORD,
1326 FileNameLength: ::DWORD,
1327 FileName: [::WCHAR; 0],
1328 }}
1329 STRUCT!{struct FILE_SEGMENT_ELEMENT {
1330 Buffer: ::PVOID64,
1331 Alignment: ::ULONGLONG,
1332 }}
1333 pub type PFILE_SEGMENT_ELEMENT = *mut FILE_SEGMENT_ELEMENT;
1334 //12475
1335 pub const IO_REPARSE_TAG_MOUNT_POINT: ::DWORD = 0xA0000003;
1336 pub const IO_REPARSE_TAG_HSM: ::DWORD = 0xC0000004;
1337 pub const IO_REPARSE_TAG_HSM2: ::DWORD = 0x80000006;
1338 pub const IO_REPARSE_TAG_SIS: ::DWORD = 0x80000007;
1339 pub const IO_REPARSE_TAG_WIM: ::DWORD = 0x80000008;
1340 pub const IO_REPARSE_TAG_CSV: ::DWORD = 0x80000009;
1341 pub const IO_REPARSE_TAG_DFS: ::DWORD = 0x8000000A;
1342 pub const IO_REPARSE_TAG_SYMLINK: ::DWORD = 0xA000000C;
1343 pub const IO_REPARSE_TAG_DFSR: ::DWORD = 0x80000012;
1344 pub const IO_REPARSE_TAG_DEDUP: ::DWORD = 0x80000013;
1345 pub const IO_REPARSE_TAG_NFS: ::DWORD = 0x80000014;
1346 pub const IO_REPARSE_TAG_FILE_PLACEHOLDER: ::DWORD = 0x80000015;
1347 pub const IO_REPARSE_TAG_WOF: ::DWORD = 0x80000017;
1348 //12788
1349 pub const DUPLICATE_CLOSE_SOURCE: ::DWORD = 0x00000001;
1350 pub const DUPLICATE_SAME_ACCESS: ::DWORD = 0x00000002;
1351 //14708
1352 STRUCT!{struct PROCESSOR_POWER_POLICY_INFO {
1353 TimeCheck: ::DWORD,
1354 DemoteLimit: ::DWORD,
1355 PromoteLimit: ::DWORD,
1356 DemotePercent: ::BYTE,
1357 PromotePercent: ::BYTE,
1358 Spare: [::BYTE; 2],
1359 Reserved: ::DWORD,
1360 }}
1361 BITFIELD!(PROCESSOR_POWER_POLICY_INFO Reserved: ::DWORD [
1362 AllowDemotion set_AllowDemotion[0..1],
1363 AllowPromotion set_AllowPromotion[1..2],
1364 ]);
1365 pub type PPROCESSOR_POWER_POLICY_INFO = *mut PROCESSOR_POWER_POLICY_INFO;
1366 //15000
1367 STRUCT!{struct IMAGE_FILE_HEADER {
1368 Machine: ::WORD,
1369 NumberOfSections: ::WORD,
1370 TimeDateStamp: ::DWORD,
1371 PointerToSymbolTable: ::DWORD,
1372 NumberOfSymbols: ::DWORD,
1373 SizeOfOptionalHeader: ::WORD,
1374 Characteristics: ::WORD,
1375 }}
1376 pub type PIMAGE_FILE_HEADER = *mut IMAGE_FILE_HEADER;
1377 pub const IMAGE_SIZEOF_FILE_HEADER: usize = 20;
1378 pub const IMAGE_FILE_RELOCS_STRIPPED: ::WORD = 0x0001;
1379 pub const IMAGE_FILE_EXECUTABLE_IMAGE: ::WORD = 0x0002;
1380 pub const IMAGE_FILE_LINE_NUMS_STRIPPED: ::WORD = 0x0004;
1381 pub const IMAGE_FILE_LOCAL_SYMS_STRIPPED: ::WORD = 0x0008;
1382 pub const IMAGE_FILE_AGGRESIVE_WS_TRIM: ::WORD = 0x0010;
1383 pub const IMAGE_FILE_LARGE_ADDRESS_AWARE: ::WORD = 0x0020;
1384 pub const IMAGE_FILE_BYTES_REVERSED_LO: ::WORD = 0x0080;
1385 pub const IMAGE_FILE_32BIT_MACHINE: ::WORD = 0x0100;
1386 pub const IMAGE_FILE_DEBUG_STRIPPED: ::WORD = 0x0200;
1387 pub const IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP: ::WORD = 0x0400;
1388 pub const IMAGE_FILE_NET_RUN_FROM_SWAP: ::WORD = 0x0800;
1389 pub const IMAGE_FILE_SYSTEM: ::WORD = 0x1000;
1390 pub const IMAGE_FILE_DLL: ::WORD = 0x2000;
1391 pub const IMAGE_FILE_UP_SYSTEM_ONLY: ::WORD = 0x4000;
1392 pub const IMAGE_FILE_BYTES_REVERSED_HI: ::WORD = 0x8000;
1393 pub const IMAGE_FILE_MACHINE_UNKNOWN: ::WORD = 0;
1394 pub const IMAGE_FILE_MACHINE_I386: ::WORD = 0x014c;
1395 pub const IMAGE_FILE_MACHINE_R3000: ::WORD = 0x0162;
1396 pub const IMAGE_FILE_MACHINE_R4000: ::WORD = 0x0166;
1397 pub const IMAGE_FILE_MACHINE_R10000: ::WORD = 0x0168;
1398 pub const IMAGE_FILE_MACHINE_WCEMIPSV2: ::WORD = 0x0169;
1399 pub const IMAGE_FILE_MACHINE_ALPHA: ::WORD = 0x0184;
1400 pub const IMAGE_FILE_MACHINE_SH3: ::WORD = 0x01a2;
1401 pub const IMAGE_FILE_MACHINE_SH3DSP: ::WORD = 0x01a3;
1402 pub const IMAGE_FILE_MACHINE_SH3E: ::WORD = 0x01a4;
1403 pub const IMAGE_FILE_MACHINE_SH4: ::WORD = 0x01a6;
1404 pub const IMAGE_FILE_MACHINE_SH5: ::WORD = 0x01a8;
1405 pub const IMAGE_FILE_MACHINE_ARM: ::WORD = 0x01c0;
1406 pub const IMAGE_FILE_MACHINE_THUMB: ::WORD = 0x01c2;
1407 pub const IMAGE_FILE_MACHINE_ARMNT: ::WORD = 0x01c4;
1408 pub const IMAGE_FILE_MACHINE_AM33: ::WORD = 0x01d3;
1409 pub const IMAGE_FILE_MACHINE_POWERPC: ::WORD = 0x01F0;
1410 pub const IMAGE_FILE_MACHINE_POWERPCFP: ::WORD = 0x01f1;
1411 pub const IMAGE_FILE_MACHINE_IA64: ::WORD = 0x0200;
1412 pub const IMAGE_FILE_MACHINE_MIPS16: ::WORD = 0x0266;
1413 pub const IMAGE_FILE_MACHINE_ALPHA64: ::WORD = 0x0284;
1414 pub const IMAGE_FILE_MACHINE_MIPSFPU: ::WORD = 0x0366;
1415 pub const IMAGE_FILE_MACHINE_MIPSFPU16: ::WORD = 0x0466;
1416 pub const IMAGE_FILE_MACHINE_AXP64: ::WORD = IMAGE_FILE_MACHINE_ALPHA64;
1417 pub const IMAGE_FILE_MACHINE_TRICORE: ::WORD = 0x0520;
1418 pub const IMAGE_FILE_MACHINE_CEF: ::WORD = 0x0CEF;
1419 pub const IMAGE_FILE_MACHINE_EBC: ::WORD = 0x0EBC;
1420 pub const IMAGE_FILE_MACHINE_AMD64: ::WORD = 0x8664;
1421 pub const IMAGE_FILE_MACHINE_M32R: ::WORD = 0x9041;
1422 pub const IMAGE_FILE_MACHINE_CEE: ::WORD = 0xC0EE;
1423 STRUCT!{struct IMAGE_DATA_DIRECTORY {
1424 VirtualAddress: ::DWORD,
1425 Size: ::DWORD,
1426 }}
1427 pub type PIMAGE_DATA_DIRECTORY = *mut IMAGE_DATA_DIRECTORY;
1428 pub const IMAGE_NUMBEROF_DIRECTORY_ENTRIES: usize = 16;
1429 STRUCT!{struct IMAGE_OPTIONAL_HEADER32 {
1430 Magic: ::WORD,
1431 MajorLinkerVersion: ::BYTE,
1432 MinorLinkerVersion: ::BYTE,
1433 SizeOfCode: ::DWORD,
1434 SizeOfInitializedData: ::DWORD,
1435 SizeOfUninitializedData: ::DWORD,
1436 AddressOfEntryPoint: ::DWORD,
1437 BaseOfCode: ::DWORD,
1438 BaseOfData: ::DWORD,
1439 ImageBase: ::DWORD,
1440 SectionAlignment: ::DWORD,
1441 FileAlignment: ::DWORD,
1442 MajorOperatingSystemVersion: ::WORD,
1443 MinorOperatingSystemVersion: ::WORD,
1444 MajorImageVersion: ::WORD,
1445 MinorImageVersion: ::WORD,
1446 MajorSubsystemVersion: ::WORD,
1447 MinorSubsystemVersion: ::WORD,
1448 Win32VersionValue: ::DWORD,
1449 SizeOfImage: ::DWORD,
1450 SizeOfHeaders: ::DWORD,
1451 CheckSum: ::DWORD,
1452 Subsystem: ::WORD,
1453 DllCharacteristics: ::WORD,
1454 SizeOfStackReserve: ::DWORD,
1455 SizeOfStackCommit: ::DWORD,
1456 SizeOfHeapReserve: ::DWORD,
1457 SizeOfHeapCommit: ::DWORD,
1458 LoaderFlags: ::DWORD,
1459 NumberOfRvaAndSizes: ::DWORD,
1460 DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES],
1461 }}
1462 pub type PIMAGE_OPTIONAL_HEADER32 = *mut IMAGE_OPTIONAL_HEADER32;
1463 STRUCT!{struct IMAGE_ROM_OPTIONAL_HEADER {
1464 Magic: ::WORD,
1465 MajorLinkerVersion: ::BYTE,
1466 MinorLinkerVersion: ::BYTE,
1467 SizeOfCode: ::DWORD,
1468 SizeOfInitializedData: ::DWORD,
1469 SizeOfUninitializedData: ::DWORD,
1470 AddressOfEntryPoint: ::DWORD,
1471 BaseOfCode: ::DWORD,
1472 BaseOfData: ::DWORD,
1473 BaseOfBss: ::DWORD,
1474 GprMask: ::DWORD,
1475 CprMask: [::DWORD; 4],
1476 GpValue: ::DWORD,
1477 }}
1478 pub type PIMAGE_ROM_OPTIONAL_HEADER = *mut IMAGE_ROM_OPTIONAL_HEADER;
1479 STRUCT!{struct IMAGE_OPTIONAL_HEADER64 {
1480 Magic: ::WORD,
1481 MajorLinkerVersion: ::BYTE,
1482 MinorLinkerVersion: ::BYTE,
1483 SizeOfCode: ::DWORD,
1484 SizeOfInitializedData: ::DWORD,
1485 SizeOfUninitializedData: ::DWORD,
1486 AddressOfEntryPoint: ::DWORD,
1487 BaseOfCode: ::DWORD,
1488 ImageBase: ::ULONGLONG,
1489 SectionAlignment: ::DWORD,
1490 FileAlignment: ::DWORD,
1491 MajorOperatingSystemVersion: ::WORD,
1492 MinorOperatingSystemVersion: ::WORD,
1493 MajorImageVersion: ::WORD,
1494 MinorImageVersion: ::WORD,
1495 MajorSubsystemVersion: ::WORD,
1496 MinorSubsystemVersion: ::WORD,
1497 Win32VersionValue: ::DWORD,
1498 SizeOfImage: ::DWORD,
1499 SizeOfHeaders: ::DWORD,
1500 CheckSum: ::DWORD,
1501 Subsystem: ::WORD,
1502 DllCharacteristics: ::WORD,
1503 SizeOfStackReserve: ULONGLONG,
1504 SizeOfStackCommit: ULONGLONG,
1505 SizeOfHeapReserve: ULONGLONG,
1506 SizeOfHeapCommit: ULONGLONG,
1507 LoaderFlags: ::DWORD,
1508 NumberOfRvaAndSizes: ::DWORD,
1509 DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES],
1510 }}
1511 pub type PIMAGE_OPTIONAL_HEADER64 = *mut IMAGE_OPTIONAL_HEADER64;
1512 pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: ::WORD = 0x10b;
1513 pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: ::WORD = 0x20b;
1514 pub const IMAGE_ROM_OPTIONAL_HDR_MAGIC: ::WORD = 0x107;
1515 #[cfg(target_arch = "x86_64")]
1516 pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER64;
1517 #[cfg(target_arch = "x86_64")]
1518 pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER64;
1519 #[cfg(target_arch = "x86")]
1520 pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
1521 #[cfg(target_arch = "x86")]
1522 pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
1523 STRUCT!{struct IMAGE_NT_HEADERS64 {
1524 Signature: ::DWORD,
1525 FileHeader: IMAGE_FILE_HEADER,
1526 OptionalHeader: IMAGE_OPTIONAL_HEADER64,
1527 }}
1528 pub type PIMAGE_NT_HEADERS64 = *mut IMAGE_NT_HEADERS64;
1529 STRUCT!{struct IMAGE_NT_HEADERS32 {
1530 Signature: ::DWORD,
1531 FileHeader: IMAGE_FILE_HEADER,
1532 OptionalHeader: IMAGE_OPTIONAL_HEADER32,
1533 }}
1534 pub type PIMAGE_NT_HEADERS32 = *mut IMAGE_NT_HEADERS32;
1535 STRUCT!{struct IMAGE_ROM_HEADERS {
1536 FileHeader: IMAGE_FILE_HEADER,
1537 OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER,
1538 }}
1539 pub type PIMAGE_ROM_HEADERS = *mut IMAGE_ROM_HEADERS;
1540 #[cfg(target_arch = "x86_64")]
1541 pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS64;
1542 #[cfg(target_arch = "x86_64")]
1543 pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS64;
1544 #[cfg(target_arch = "x86")]
1545 pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32;
1546 #[cfg(target_arch = "x86")]
1547 pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32;
1548 pub const IMAGE_SUBSYSTEM_UNKNOWN: ::WORD = 0;
1549 pub const IMAGE_SUBSYSTEM_NATIVE: ::WORD = 1;
1550 pub const IMAGE_SUBSYSTEM_WINDOWS_GUI: ::WORD = 2;
1551 pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: ::WORD = 3;
1552 pub const IMAGE_SUBSYSTEM_OS2_CUI: ::WORD = 5;
1553 pub const IMAGE_SUBSYSTEM_POSIX_CUI: ::WORD = 7;
1554 pub const IMAGE_SUBSYSTEM_NATIVE_WINDOWS: ::WORD = 8;
1555 pub const IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: ::WORD = 9;
1556 pub const IMAGE_SUBSYSTEM_EFI_APPLICATION: ::WORD = 10;
1557 pub const IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER: ::WORD = 11;
1558 pub const IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER: ::WORD = 12;
1559 pub const IMAGE_SUBSYSTEM_EFI_ROM: ::WORD = 13;
1560 pub const IMAGE_SUBSYSTEM_XBOX: ::WORD = 14;
1561 pub const IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION: ::WORD = 16;
1562 pub const IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA: ::WORD = 0x0020;
1563 pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: ::WORD = 0x0040;
1564 pub const IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY: ::WORD = 0x0080;
1565 pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: ::WORD = 0x0100;
1566 pub const IMAGE_DLLCHARACTERISTICS_NO_ISOLATION: ::WORD = 0x0200;
1567 pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: ::WORD = 0x0400;
1568 pub const IMAGE_DLLCHARACTERISTICS_NO_BIND: ::WORD = 0x0800;
1569 pub const IMAGE_DLLCHARACTERISTICS_APPCONTAINER: ::WORD = 0x1000;
1570 pub const IMAGE_DLLCHARACTERISTICS_WDM_DRIVER: ::WORD = 0x2000;
1571 pub const IMAGE_DLLCHARACTERISTICS_GUARD_CF: ::WORD = 0x4000;
1572 pub const IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE: ::WORD = 0x8000;
1573 pub const IMAGE_DIRECTORY_ENTRY_EXPORT: ::WORD = 0;
1574 pub const IMAGE_DIRECTORY_ENTRY_IMPORT: ::WORD = 1;
1575 pub const IMAGE_DIRECTORY_ENTRY_RESOURCE: ::WORD = 2;
1576 pub const IMAGE_DIRECTORY_ENTRY_EXCEPTION: ::WORD = 3;
1577 pub const IMAGE_DIRECTORY_ENTRY_SECURITY: ::WORD = 4;
1578 pub const IMAGE_DIRECTORY_ENTRY_BASERELOC: ::WORD = 5;
1579 pub const IMAGE_DIRECTORY_ENTRY_DEBUG: ::WORD = 6;
1580 pub const IMAGE_DIRECTORY_ENTRY_ARCHITECTURE: ::WORD = 7;
1581 pub const IMAGE_DIRECTORY_ENTRY_GLOBALPTR: ::WORD = 8;
1582 pub const IMAGE_DIRECTORY_ENTRY_TLS: ::WORD = 9;
1583 pub const IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG: ::WORD = 10;
1584 pub const IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT: ::WORD = 11;
1585 pub const IMAGE_DIRECTORY_ENTRY_IAT: ::WORD = 12;
1586 pub const IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT: ::WORD = 13;
1587 pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: ::WORD = 14;
1588 STRUCT!{struct ANON_OBJECT_HEADER {
1589 Sig1: ::WORD,
1590 Sig2: ::WORD,
1591 Version: ::WORD,
1592 Machine: ::WORD,
1593 TimeDateStamp: ::DWORD,
1594 ClassID: ::CLSID,
1595 SizeOfData: ::DWORD,
1596 }}
1597 STRUCT!{struct ANON_OBJECT_HEADER_V2 {
1598 Sig1: ::WORD,
1599 Sig2: ::WORD,
1600 Version: ::WORD,
1601 Machine: ::WORD,
1602 TimeDateStamp: ::DWORD,
1603 ClassID: ::CLSID,
1604 SizeOfData: ::DWORD,
1605 Flags: ::DWORD,
1606 MetaDataSize: ::DWORD,
1607 MetaDataOffset: ::DWORD,
1608 }}
1609 STRUCT!{struct ANON_OBJECT_HEADER_BIGOBJ {
1610 Sig1: ::WORD,
1611 Sig2: ::WORD,
1612 Version: ::WORD,
1613 Machine: ::WORD,
1614 TimeDateStamp: ::DWORD,
1615 ClassID: ::CLSID,
1616 SizeOfData: ::DWORD,
1617 Flags: ::DWORD,
1618 MetaDataSize: ::DWORD,
1619 MetaDataOffset: ::DWORD,
1620 NumberOfSections: ::DWORD,
1621 PointerToSymbolTable: ::DWORD,
1622 NumberOfSymbols: ::DWORD,
1623 }}
1624 pub const IMAGE_SIZEOF_SHORT_NAME: usize = 8;
1625 STRUCT!{struct IMAGE_SECTION_HEADER {
1626 Name: [::BYTE; IMAGE_SIZEOF_SHORT_NAME],
1627 PhysicalAddressOrVirtualSize: ::DWORD,
1628 VirtualAddress: ::DWORD,
1629 SizeOfRawData: ::DWORD,
1630 PointerToRawData: ::DWORD,
1631 PointerToRelocations: ::DWORD,
1632 PointerToLinenumbers: ::DWORD,
1633 NumberOfRelocations: ::WORD,
1634 NumberOfLinenumbers: ::WORD,
1635 Characteristics: ::DWORD,
1636 }}
1637 pub type PIMAGE_SECTION_HEADER = *mut IMAGE_SECTION_HEADER;
1638 pub const IMAGE_SIZEOF_SECTION_HEADER: usize = 40;
1639 pub const IMAGE_SCN_TYPE_NO_PAD: ::DWORD = 0x00000008;
1640 pub const IMAGE_SCN_CNT_CODE: ::DWORD = 0x00000020;
1641 pub const IMAGE_SCN_CNT_INITIALIZED_DATA: ::DWORD = 0x00000040;
1642 pub const IMAGE_SCN_CNT_UNINITIALIZED_DATA: ::DWORD = 0x00000080;
1643 pub const IMAGE_SCN_LNK_OTHER: ::DWORD = 0x00000100;
1644 pub const IMAGE_SCN_LNK_INFO: ::DWORD = 0x00000200;
1645 pub const IMAGE_SCN_LNK_REMOVE: ::DWORD = 0x00000800;
1646 pub const IMAGE_SCN_LNK_COMDAT: ::DWORD = 0x00001000;
1647 pub const IMAGE_SCN_NO_DEFER_SPEC_EXC: ::DWORD = 0x00004000;
1648 pub const IMAGE_SCN_GPREL: ::DWORD = 0x00008000;
1649 pub const IMAGE_SCN_MEM_FARDATA: ::DWORD = 0x00008000;
1650 pub const IMAGE_SCN_MEM_PURGEABLE: ::DWORD = 0x00020000;
1651 pub const IMAGE_SCN_MEM_16BIT: ::DWORD = 0x00020000;
1652 pub const IMAGE_SCN_MEM_LOCKED: ::DWORD = 0x00040000;
1653 pub const IMAGE_SCN_MEM_PRELOAD: ::DWORD = 0x00080000;
1654 pub const IMAGE_SCN_ALIGN_1BYTES: ::DWORD = 0x00100000;
1655 pub const IMAGE_SCN_ALIGN_2BYTES: ::DWORD = 0x00200000;
1656 pub const IMAGE_SCN_ALIGN_4BYTES: ::DWORD = 0x00300000;
1657 pub const IMAGE_SCN_ALIGN_8BYTES: ::DWORD = 0x00400000;
1658 pub const IMAGE_SCN_ALIGN_16BYTES: ::DWORD = 0x00500000;
1659 pub const IMAGE_SCN_ALIGN_32BYTES: ::DWORD = 0x00600000;
1660 pub const IMAGE_SCN_ALIGN_64BYTES: ::DWORD = 0x00700000;
1661 pub const IMAGE_SCN_ALIGN_128BYTES: ::DWORD = 0x00800000;
1662 pub const IMAGE_SCN_ALIGN_256BYTES: ::DWORD = 0x00900000;
1663 pub const IMAGE_SCN_ALIGN_512BYTES: ::DWORD = 0x00A00000;
1664 pub const IMAGE_SCN_ALIGN_1024BYTES: ::DWORD = 0x00B00000;
1665 pub const IMAGE_SCN_ALIGN_2048BYTES: ::DWORD = 0x00C00000;
1666 pub const IMAGE_SCN_ALIGN_4096BYTES: ::DWORD = 0x00D00000;
1667 pub const IMAGE_SCN_ALIGN_8192BYTES: ::DWORD = 0x00E00000;
1668 pub const IMAGE_SCN_ALIGN_MASK: ::DWORD = 0x00F00000;
1669 pub const IMAGE_SCN_LNK_NRELOC_OVFL: ::DWORD = 0x01000000;
1670 pub const IMAGE_SCN_MEM_DISCARDABLE: ::DWORD = 0x02000000;
1671 pub const IMAGE_SCN_MEM_NOT_CACHED: ::DWORD = 0x04000000;
1672 pub const IMAGE_SCN_MEM_NOT_PAGED: ::DWORD = 0x08000000;
1673 pub const IMAGE_SCN_MEM_SHARED: ::DWORD = 0x10000000;
1674 pub const IMAGE_SCN_MEM_EXECUTE: ::DWORD = 0x20000000;
1675 pub const IMAGE_SCN_MEM_READ: ::DWORD = 0x40000000;
1676 pub const IMAGE_SCN_MEM_WRITE: ::DWORD = 0x80000000;
1677 pub const IMAGE_SCN_SCALE_INDEX: ::DWORD = 0x00000001;
1678 //16590
1679 STRUCT!{struct IMAGE_DEBUG_DIRECTORY {
1680 Characteristics: ::DWORD,
1681 TimeDateStamp: ::DWORD,
1682 MajorVersion: ::WORD,
1683 MinorVersion: ::WORD,
1684 Type: ::DWORD,
1685 SizeOfData: ::DWORD,
1686 AddressOfRawData: ::DWORD,
1687 PointerToRawData: ::DWORD,
1688 }}
1689 pub type PIMAGE_DEBUG_DIRECTORY = *mut IMAGE_DEBUG_DIRECTORY;
1690 pub const IMAGE_DEBUG_TYPE_UNKNOWN: ::DWORD = 0;
1691 pub const IMAGE_DEBUG_TYPE_COFF: ::DWORD = 1;
1692 pub const IMAGE_DEBUG_TYPE_CODEVIEW: ::DWORD = 2;
1693 pub const IMAGE_DEBUG_TYPE_FPO: ::DWORD = 3;
1694 pub const IMAGE_DEBUG_TYPE_MISC: ::DWORD = 4;
1695 pub const IMAGE_DEBUG_TYPE_EXCEPTION: ::DWORD = 5;
1696 pub const IMAGE_DEBUG_TYPE_FIXUP: ::DWORD = 6;
1697 pub const IMAGE_DEBUG_TYPE_OMAP_TO_SRC: ::DWORD = 7;
1698 pub const IMAGE_DEBUG_TYPE_OMAP_FROM_SRC: ::DWORD = 8;
1699 pub const IMAGE_DEBUG_TYPE_BORLAND: ::DWORD = 9;
1700 pub const IMAGE_DEBUG_TYPE_RESERVED10: ::DWORD = 10;
1701 pub const IMAGE_DEBUG_TYPE_CLSID: ::DWORD = 11;
1702 STRUCT!{struct IMAGE_COFF_SYMBOLS_HEADER {
1703 NumberOfSymbols: ::DWORD,
1704 LvaToFirstSymbol: ::DWORD,
1705 NumberOfLinenumbers: ::DWORD,
1706 LvaToFirstLinenumber: ::DWORD,
1707 RvaToFirstByteOfCode: ::DWORD,
1708 RvaToLastByteOfCode: ::DWORD,
1709 RvaToFirstByteOfData: ::DWORD,
1710 RvaToLastByteOfData: ::DWORD,
1711 }}
1712 pub type PIMAGE_COFF_SYMBOLS_HEADER = *mut IMAGE_COFF_SYMBOLS_HEADER;
1713 STRUCT!{struct IMAGE_RUNTIME_FUNCTION_ENTRY {
1714 BeginAddress: ::DWORD,
1715 EndAddress: ::DWORD,
1716 UnwindInfoAddress: ::DWORD,
1717 }}
1718 UNION!(IMAGE_RUNTIME_FUNCTION_ENTRY, UnwindInfoAddress, UnwindData, UnwindData_mut, ::DWORD);
1719 pub type PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut IMAGE_RUNTIME_FUNCTION_ENTRY;
1720 pub const FRAME_FPO: ::WORD = 0;
1721 pub const FRAME_TRAP: ::WORD = 1;
1722 pub const FRAME_TSS: ::WORD = 2;
1723 pub const FRAME_NONFPO: ::WORD = 3;
1724 STRUCT!{struct FPO_DATA {
1725 ulOffStart: ::DWORD,
1726 cbProcSize: ::DWORD,
1727 cdwLocals: ::DWORD,
1728 cdwParams: ::WORD,
1729 bitfield: ::WORD,
1730 }}
1731 pub type PFPO_DATA = *mut FPO_DATA;
1732 pub const SIZEOF_RFPO_DATA: usize = 16;
1733 pub const IMAGE_DEBUG_MISC_EXENAME: ::DWORD = 1;
1734 STRUCT!{struct IMAGE_DEBUG_MISC {
1735 DataType: ::DWORD,
1736 Length: ::DWORD,
1737 Unicode: ::BOOLEAN,
1738 Reserved: [::BYTE; 3],
1739 Data: [::BYTE; 0],
1740 }}
1741 pub type PIMAGE_DEBUG_MISC = *mut IMAGE_DEBUG_MISC;
1742 STRUCT!{struct IMAGE_FUNCTION_ENTRY {
1743 StartingAddress: ::DWORD,
1744 EndingAddress: ::DWORD,
1745 EndOfPrologue: ::DWORD,
1746 }}
1747 pub type PIMAGE_FUNCTION_ENTRY = *mut IMAGE_FUNCTION_ENTRY;
1748 STRUCT!{struct IMAGE_FUNCTION_ENTRY64 {
1749 StartingAddress: ::ULONGLONG,
1750 EndingAddress: ::ULONGLONG,
1751 EndOfPrologueOrUnwindInfoAddress: ::ULONGLONG,
1752 }}
1753 pub type PIMAGE_FUNCTION_ENTRY64 = *mut IMAGE_FUNCTION_ENTRY64;
1754 //18245
1755 pub const HEAP_NO_SERIALIZE: ::DWORD = 0x00000001;
1756 pub const HEAP_GROWABLE: ::DWORD = 0x00000002;
1757 pub const HEAP_GENERATE_EXCEPTIONS: ::DWORD = 0x00000004;
1758 pub const HEAP_ZERO_MEMORY: ::DWORD = 0x00000008;
1759 pub const HEAP_REALLOC_IN_PLACE_ONLY: ::DWORD = 0x00000010;
1760 pub const HEAP_TAIL_CHECKING_ENABLED: ::DWORD = 0x00000020;
1761 pub const HEAP_FREE_CHECKING_ENABLED: ::DWORD = 0x00000040;
1762 pub const HEAP_DISABLE_COALESCE_ON_FREE: ::DWORD = 0x00000080;
1763 pub const HEAP_CREATE_ALIGN_16: ::DWORD = 0x00010000;
1764 pub const HEAP_CREATE_ENABLE_TRACING: ::DWORD = 0x00020000;
1765 pub const HEAP_CREATE_ENABLE_EXECUTE: ::DWORD = 0x00040000;
1766 pub const HEAP_MAXIMUM_TAG: ::DWORD = 0x0FFF;
1767 pub const HEAP_PSEUDO_TAG_FLAG: ::DWORD = 0x8000;
1768 pub const HEAP_TAG_SHIFT: ::DWORD = 18;
1769 //18145
1770 STRUCT!{struct RTL_CRITICAL_SECTION_DEBUG {
1771 Type: ::WORD,
1772 CreatorBackTraceIndex: ::WORD,
1773 CriticalSection: *mut ::RTL_CRITICAL_SECTION,
1774 ProcessLocksList: ::LIST_ENTRY,
1775 EntryCount: ::DWORD,
1776 ContentionCount: ::DWORD,
1777 Flags: ::DWORD,
1778 CreatorBackTraceIndexHigh: ::WORD,
1779 SpareWORD: ::WORD,
1780 }}
1781 pub type PRTL_CRITICAL_SECTION_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG;
1782 pub type RTL_RESOURCE_DEBUG = RTL_CRITICAL_SECTION_DEBUG;
1783 pub type PRTL_RESOURCE_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG;
1784 pub const RTL_CRITSECT_TYPE: ::WORD = 0;
1785 pub const RTL_RESOURCE_TYPE: ::WORD = 1;
1786 pub const RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO: ::ULONG_PTR = 0x01000000;
1787 pub const RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN: ::ULONG_PTR = 0x02000000;
1788 pub const RTL_CRITICAL_SECTION_FLAG_STATIC_INIT: ::ULONG_PTR = 0x04000000;
1789 pub const RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE: ::ULONG_PTR = 0x08000000;
1790 pub const RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO: ::ULONG_PTR = 0x10000000;
1791 pub const RTL_CRITICAL_SECTION_ALL_FLAG_BITS: ::ULONG_PTR = 0xFF000000;
1792 pub const RTL_CRITICAL_SECTION_FLAG_RESERVED: ::ULONG_PTR = RTL_CRITICAL_SECTION_ALL_FLAG_BITS & !(RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO | RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN | RTL_CRITICAL_SECTION_FLAG_STATIC_INIT | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO);
1793 pub const RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT: ::DWORD = 0x00000001;
1794 STRUCT!{struct RTL_CRITICAL_SECTION {
1795 DebugInfo: ::PRTL_CRITICAL_SECTION_DEBUG,
1796 LockCount: ::LONG,
1797 RecursionCount: ::LONG,
1798 OwningThread: ::HANDLE,
1799 LockSemaphore: ::HANDLE,
1800 SpinCount: ::ULONG_PTR,
1801 }}
1802 pub type PRTL_CRITICAL_SECTION = *mut RTL_CRITICAL_SECTION;
1803 STRUCT!{struct RTL_SRWLOCK {
1804 Ptr: ::PVOID,
1805 }}
1806 pub type PRTL_SRWLOCK = *mut RTL_SRWLOCK;
1807 pub const RTL_SRWLOCK_INIT: RTL_SRWLOCK = RTL_SRWLOCK { Ptr: 0 as PVOID };
1808 STRUCT!{struct RTL_CONDITION_VARIABLE {
1809 Ptr: ::PVOID,
1810 }}
1811 pub type PRTL_CONDITION_VARIABLE = *mut RTL_CONDITION_VARIABLE;
1812 pub const RTL_CONDITION_VARIABLE_INIT: RTL_CONDITION_VARIABLE = RTL_CONDITION_VARIABLE {
1813 Ptr: 0 as PVOID
1814 };
1815 //18204
1816 pub type PAPCFUNC = Option<unsafe extern "system" fn(Parameter: ::ULONG_PTR)>;
1817 pub type PVECTORED_EXCEPTION_HANDLER = Option<unsafe extern "system" fn(
1818 ExceptionInfo: *mut EXCEPTION_POINTERS,
1819 ) -> ::LONG>;
1820 ENUM!{enum HEAP_INFORMATION_CLASS {
1821 HeapCompatibilityInformation = 0,
1822 HeapEnableTerminationOnCorruption = 1,
1823 HeapOptimizeResources = 3,
1824 }}
1825 //pub use self::HEAP_INFORMATION_CLASS::*;
1826 pub const HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION: ::DWORD = 1;
1827 STRUCT!{struct HEAP_OPTIMIZE_RESOURCES_INFORMATION {
1828 Version: ::DWORD,
1829 Flags: ::DWORD,
1830 }}
1831 pub type PHEAP_OPTIMIZE_RESOURCES_INFORMATION = *mut HEAP_OPTIMIZE_RESOURCES_INFORMATION;
1832 pub const WT_EXECUTEDEFAULT: ::ULONG = 0x00000000;
1833 pub const WT_EXECUTEINIOTHREAD: ::ULONG = 0x00000001;
1834 pub const WT_EXECUTEINUITHREAD: ::ULONG = 0x00000002;
1835 pub const WT_EXECUTEINWAITTHREAD: ::ULONG = 0x00000004;
1836 pub const WT_EXECUTEONLYONCE: ::ULONG = 0x00000008;
1837 pub const WT_EXECUTEINTIMERTHREAD: ::ULONG = 0x00000020;
1838 pub const WT_EXECUTELONGFUNCTION: ::ULONG = 0x00000010;
1839 pub const WT_EXECUTEINPERSISTENTIOTHREAD: ::ULONG = 0x00000040;
1840 pub const WT_EXECUTEINPERSISTENTTHREAD: ::ULONG = 0x00000080;
1841 pub const WT_TRANSFER_IMPERSONATION: ::ULONG = 0x00000100;
1842 pub type WAITORTIMERCALLBACKFUNC = Option<unsafe extern "system" fn(::PVOID, ::BOOLEAN)>;
1843 pub type WORKERCALLBACKFUNC = Option<unsafe extern "system" fn(::PVOID)>;
1844 pub type APC_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(::DWORD, ::PVOID, ::PVOID)>;
1845 pub type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
1846 pub type PFLS_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(lpFlsData: ::PVOID)>;
1847 pub type PSECURE_MEMORY_CACHE_CALLBACK = Option<unsafe extern "system" fn(
1848 Addr: ::PVOID, Range: ::SIZE_T,
1849 ) -> ::BOOLEAN>;
1850 pub const WT_EXECUTEINLONGTHREAD: ::ULONG = 0x00000010;
1851 pub const WT_EXECUTEDELETEWAIT: ::ULONG = 0x00000008;
1852 //18570
1853 pub const KEY_QUERY_VALUE: ::REGSAM = 0x0001;
1854 pub const KEY_SET_VALUE: ::REGSAM = 0x0002;
1855 pub const KEY_CREATE_SUB_KEY: ::REGSAM = 0x0004;
1856 pub const KEY_ENUMERATE_SUB_KEYS: ::REGSAM = 0x0008;
1857 pub const KEY_NOTIFY: ::REGSAM = 0x0010;
1858 pub const KEY_CREATE_LINK: ::REGSAM = 0x0020;
1859 pub const KEY_WOW64_32KEY: ::REGSAM = 0x0200;
1860 pub const KEY_WOW64_64KEY: ::REGSAM = 0x0100;
1861 pub const KEY_WOW64_RES: ::REGSAM = 0x0300;
1862 pub const KEY_READ: ::REGSAM = (
1863 STANDARD_RIGHTS_READ |
1864 KEY_QUERY_VALUE |
1865 KEY_ENUMERATE_SUB_KEYS |
1866 KEY_NOTIFY
1867 ) & (!SYNCHRONIZE);
1868 pub const KEY_WRITE: ::REGSAM = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (!SYNCHRONIZE);
1869 pub const KEY_EXECUTE: ::REGSAM = KEY_READ & (!SYNCHRONIZE);
1870 pub const KEY_ALL_ACCESS: ::REGSAM = (
1871 STANDARD_RIGHTS_ALL |
1872 KEY_QUERY_VALUE |
1873 KEY_SET_VALUE |
1874 KEY_CREATE_SUB_KEY |
1875 KEY_ENUMERATE_SUB_KEYS |
1876 KEY_NOTIFY |
1877 KEY_CREATE_LINK
1878 ) & (!SYNCHRONIZE);
1879 pub const REG_CREATED_NEW_KEY: ::DWORD = 0x00000001;
1880 pub const REG_OPENED_EXISTING_KEY: ::DWORD = 0x00000002;
1881 pub const REG_NOTIFY_CHANGE_NAME: ::DWORD = 0x00000001;
1882 pub const REG_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000002;
1883 pub const REG_NOTIFY_CHANGE_LAST_SET: ::DWORD = 0x00000004;
1884 pub const REG_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000008;
1885 pub const REG_LEGAL_CHANGE_FILTER: ::DWORD = REG_NOTIFY_CHANGE_NAME |
1886 REG_NOTIFY_CHANGE_ATTRIBUTES |
1887 REG_NOTIFY_CHANGE_LAST_SET |
1888 REG_NOTIFY_CHANGE_SECURITY;
1889 pub const REG_NOTIFY_THREAD_AGNOSTIC: ::DWORD = 0x10000000; //supported only on Windows 8 and later
1890 pub const REG_OPTION_RESERVED: ::DWORD = 0x00000000;
1891 pub const REG_OPTION_NON_VOLATILE: ::DWORD = 0x00000000;
1892 pub const REG_OPTION_VOLATILE: ::DWORD = 0x00000001;
1893 pub const REG_OPTION_CREATE_LINK: ::DWORD = 0x00000002;
1894 pub const REG_OPTION_BACKUP_RESTORE: ::DWORD = 0x00000004;
1895 pub const REG_OPTION_OPEN_LINK: ::DWORD = 0x00000008;
1896 pub const REG_NONE: ::DWORD = 0;
1897 pub const REG_SZ: ::DWORD = 1;
1898 pub const REG_EXPAND_SZ: ::DWORD = 2;
1899 pub const REG_BINARY: ::DWORD = 3;
1900 pub const REG_DWORD: ::DWORD = 4;
1901 pub const REG_DWORD_LITTLE_ENDIAN: ::DWORD = 4;
1902 pub const REG_DWORD_BIG_ENDIAN: ::DWORD = 5;
1903 pub const REG_LINK: ::DWORD = 6;
1904 pub const REG_MULTI_SZ: ::DWORD = 7;
1905 pub const REG_RESOURCE_LIST: ::DWORD = 8;
1906 pub const REG_FULL_RESOURCE_DESCRIPTOR: ::DWORD = 9;
1907 pub const REG_RESOURCE_REQUIREMENTS_LIST: ::DWORD = 10;
1908 pub const REG_QWORD: ::DWORD = 11;
1909 pub const REG_QWORD_LITTLE_ENDIAN: ::DWORD = 11;
1910 //18720
1911 pub const SERVICE_KERNEL_DRIVER: ::DWORD = 0x00000001;
1912 pub const SERVICE_FILE_SYSTEM_DRIVER: ::DWORD = 0x00000002;
1913 pub const SERVICE_ADAPTER: ::DWORD = 0x00000004;
1914 pub const SERVICE_RECOGNIZER_DRIVER: ::DWORD = 0x00000008;
1915 pub const SERVICE_DRIVER: ::DWORD = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER
1916 | SERVICE_RECOGNIZER_DRIVER;
1917 pub const SERVICE_WIN32_OWN_PROCESS: ::DWORD = 0x00000010;
1918 pub const SERVICE_WIN32_SHARE_PROCESS: ::DWORD = 0x00000020;
1919 pub const SERVICE_WIN32: ::DWORD = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS;
1920 pub const SERVICE_INTERACTIVE_PROCESS: ::DWORD = 0x00000100;
1921 pub const SERVICE_TYPE_ALL: ::DWORD = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER
1922 | SERVICE_INTERACTIVE_PROCESS;
1923 STRUCT!{struct TP_CALLBACK_INSTANCE {
1924 dummy: *mut ::c_void,
1925 }}
1926 pub type PTP_CALLBACK_INSTANCE = *mut TP_CALLBACK_INSTANCE;
1927 STRUCT!{struct TP_IO {
1928 dummy: *mut ::c_void,
1929 }}
1930 pub type PTP_IO = *mut TP_IO;
1931 STRUCT!{struct TP_POOL {
1932 dummy: *mut ::c_void,
1933 }}
1934 pub type PTP_POOL = *mut TP_POOL;
1935 STRUCT!{struct TP_CLEANUP_GROUP {
1936 dummy: *mut ::c_void,
1937 }}
1938 pub type PTP_CLEANUP_GROUP = *mut TP_CLEANUP_GROUP;
1939 STRUCT!{struct TP_TIMER {
1940 dummy: *mut ::c_void,
1941 }}
1942 pub type PTP_TIMER = *mut TP_TIMER;
1943 STRUCT!{struct TP_WAIT {
1944 dummy: *mut ::c_void,
1945 }}
1946 pub type PTP_WAIT = *mut TP_WAIT;
1947 STRUCT!{struct TP_WORK {
1948 dummy: *mut ::c_void,
1949 }}
1950 pub type PTP_WORK = *mut TP_WORK;
1951 STRUCT!{struct ACTIVATION_CONTEXT {
1952 dummy: *mut ::c_void,
1953 }}
1954 ENUM!{enum TP_CALLBACK_PRIORITY {
1955 TP_CALLBACK_PRIORITY_HIGH,
1956 TP_CALLBACK_PRIORITY_NORMAL,
1957 TP_CALLBACK_PRIORITY_LOW,
1958 TP_CALLBACK_PRIORITY_INVALID,
1959 TP_CALLBACK_PRIORITY_COUNT = 4,
1960 }}
1961 pub type PTP_CLEANUP_GROUP_CANCEL_CALLBACK = Option<unsafe extern "system" fn(
1962 ObjectContext: ::PVOID, CleanupContext: ::PVOID,
1963 )>;
1964 pub type PTP_SIMPLE_CALLBACK = Option<unsafe extern "system" fn(
1965 Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID,
1966 )>;
1967 pub type PTP_WORK_CALLBACK = Option<unsafe extern "system" fn(
1968 Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Work: PTP_WORK,
1969 )>;
1970 pub type PTP_TIMER_CALLBACK = Option<unsafe extern "system" fn(
1971 Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Timer: PTP_TIMER,
1972 )>;
1973 pub type TP_WAIT_RESULT = ::DWORD;
1974 pub type PTP_WAIT_CALLBACK = Option<unsafe extern "system" fn(
1975 Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Wait: PTP_WAIT, WaitResult: TP_WAIT_RESULT,
1976 )>;
1977 pub type TP_VERSION = ::DWORD;
1978 pub type PTP_VERSION = *mut ::DWORD;
1979 STRUCT!{struct TP_POOL_STACK_INFORMATION {
1980 StackReserve: ::SIZE_T,
1981 StackCommit: ::SIZE_T,
1982 }}
1983 pub type PTP_POOL_STACK_INFORMATION = *mut TP_POOL_STACK_INFORMATION;
1984 STRUCT!{struct TP_CALLBACK_ENVIRON_V3_s {
1985 BitFields: ::DWORD,
1986 }}
1987 BITFIELD!(TP_CALLBACK_ENVIRON_V3_s BitFields: ::DWORD [
1988 LongFunction set_LongFunction[0..1],
1989 Persistent set_Persistent[1..2],
1990 Private set_Private[2..32],
1991 ]);
1992 STRUCT!{nodebug struct TP_CALLBACK_ENVIRON_V3 {
1993 Version: TP_VERSION,
1994 Pool: PTP_POOL,
1995 CleanupGroup: PTP_CLEANUP_GROUP,
1996 CleanupGroupCancelCallback: PTP_CLEANUP_GROUP_CANCEL_CALLBACK,
1997 RaceDll: ::PVOID,
1998 ActivationContext: *mut ACTIVATION_CONTEXT,
1999 FinalizationCallback: PTP_SIMPLE_CALLBACK,
2000 u: ::DWORD,
2001 CallbackPriority: TP_CALLBACK_PRIORITY,
2002 Size: ::DWORD,
2003 }}
2004 UNION!(TP_CALLBACK_ENVIRON_V3, u, Flags, Flags_mut, ::DWORD);
2005 UNION!(TP_CALLBACK_ENVIRON_V3, u, s, s_mut, TP_CALLBACK_ENVIRON_V3_s);
2006 pub type TP_CALLBACK_ENVIRON = TP_CALLBACK_ENVIRON_V3;
2007 pub type PTP_CALLBACK_ENVIRON = *mut TP_CALLBACK_ENVIRON_V3;
2008 STRUCT!{struct JOB_SET_ARRAY {
2009 JobHandle: ::HANDLE,
2010 MemberLevel: ::DWORD,
2011 Flags: ::DWORD,
2012 }}
2013 pub type PJOB_SET_ARRAY = *mut JOB_SET_ARRAY;
2014 STRUCT!{struct RTL_BARRIER {
2015 Reserved1: ::DWORD,
2016 Reserved2: ::DWORD,
2017 Reserved3: [::ULONG_PTR; 2],
2018 Reserved4: ::DWORD,
2019 Reserved5: ::DWORD,
2020 }}
2021 pub type PRTL_BARRIER = *mut RTL_BARRIER;
2022 STRUCT!{struct RTL_RUN_ONCE {
2023 Ptr: ::PVOID,
2024 }}
2025 pub type PRTL_RUN_ONCE = *mut RTL_RUN_ONCE;
2026 ENUM!{enum RTL_UMS_THREAD_INFO_CLASS {
2027 UmsThreadInvalidInfoClass = 0,
2028 UmsThreadUserContext,
2029 UmsThreadPriority, // Reserved
2030 UmsThreadAffinity, // Reserved
2031 UmsThreadTeb,
2032 UmsThreadIsSuspended,
2033 UmsThreadIsTerminated,
2034 UmsThreadMaxInfoClass,
2035 }}
2036 ENUM!{enum RTL_UMS_SCHEDULER_REASON {
2037 UmsSchedulerStartup = 0,
2038 UmsSchedulerThreadBlocked,
2039 UmsSchedulerThreadYield,
2040 }}
2041 pub type PRTL_UMS_SCHEDULER_ENTRY_POINT = Option<unsafe extern "system" fn(
2042 Reason: RTL_UMS_SCHEDULER_REASON, ActivationPayload: ::ULONG_PTR, SchedulerParam: ::PVOID,
2043 )>;
2044 ENUM!{enum FIRMWARE_TYPE {
2045 FirmwareTypeUnknown,
2046 FirmwareTypeBios,
2047 FirmwareTypeUefi,
2048 FirmwareTypeMax,
2049 }}
2050 pub type PFIRMWARE_TYPE = *mut FIRMWARE_TYPE;
2051 ENUM!{enum LOGICAL_PROCESSOR_RELATIONSHIP {
2052 RelationProcessorCore,
2053 RelationNumaNode,
2054 RelationCache,
2055 RelationProcessorPackage,
2056 RelationGroup,
2057 RelationAll = 0xffff,
2058 }}
2059 ENUM!{enum PROCESSOR_CACHE_TYPE {
2060 CacheUnified,
2061 CacheInstruction,
2062 CacheData,
2063 CacheTrace,
2064 }}
2065 STRUCT!{struct CACHE_DESCRIPTOR {
2066 Level: ::BYTE,
2067 Associativity: ::BYTE,
2068 LineSize: ::WORD,
2069 Size: ::DWORD,
2070 Type: PROCESSOR_CACHE_TYPE,
2071 }}
2072 pub type PCACHE_DESCRIPTOR = *mut CACHE_DESCRIPTOR;
2073 STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore {
2074 Flags: ::BYTE,
2075 }}
2076 STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode {
2077 NodeNumber: ::DWORD,
2078 }}
2079 STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
2080 ProcessorMask: ::ULONG_PTR,
2081 Relationship: LOGICAL_PROCESSOR_RELATIONSHIP,
2082 Reserved: [::ULONGLONG; 2],
2083 }}
2084 UNION!(
2085 SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, ProcessorCore, ProcessorCore_mut,
2086 SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore
2087 );
2088 UNION!(
2089 SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, NumaNode, NumaNode_mut,
2090 SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode
2091 );
2092 UNION!(SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, Cache, Cache_mut, CACHE_DESCRIPTOR);
2093 pub type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = *mut SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
2094 STRUCT!{struct SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION {
2095 CycleTime: ::DWORD64,
2096 }}
2097 pub type PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = *mut SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
2098 ENUM!{enum HARDWARE_COUNTER_TYPE {
2099 PMCCounter,
2100 MaxHardwareCounterType,
2101 }}
2102 pub type PHARDWARE_COUNTER_TYPE = *mut HARDWARE_COUNTER_TYPE;
2103 ENUM!{enum PROCESS_MITIGATION_POLICY {
2104 ProcessDEPPolicy,
2105 ProcessASLRPolicy,
2106 ProcessDynamicCodePolicy,
2107 ProcessStrictHandleCheckPolicy,
2108 ProcessSystemCallDisablePolicy,
2109 ProcessMitigationOptionsMask,
2110 ProcessExtensionPointDisablePolicy,
2111 ProcessReserved1Policy,
2112 ProcessSignaturePolicy,
2113 MaxProcessMitigationPolicy,
2114 }}
2115 STRUCT!{nodebug struct OSVERSIONINFOA {
2116 dwOSVersionInfoSize: ::DWORD,
2117 dwMajorVersion: ::DWORD,
2118 dwMinorVersion: ::DWORD,
2119 dwBuildNumber: ::DWORD,
2120 dwPlatformId: ::DWORD,
2121 szCSDVersion: [::CHAR; 128],
2122 }}
2123 pub type POSVERSIONINFOA = *mut OSVERSIONINFOA;
2124 pub type LPOSVERSIONINFOA = *mut OSVERSIONINFOA;
2125 STRUCT!{nodebug struct OSVERSIONINFOW {
2126 dwOSVersionInfoSize: ::DWORD,
2127 dwMajorVersion: ::DWORD,
2128 dwMinorVersion: ::DWORD,
2129 dwBuildNumber: ::DWORD,
2130 dwPlatformId: ::DWORD,
2131 szCSDVersion: [::WCHAR; 128],
2132 }}
2133 pub type POSVERSIONINFOW = *mut OSVERSIONINFOW;
2134 pub type LPOSVERSIONINFOW = *mut OSVERSIONINFOW;
2135 STRUCT!{nodebug struct OSVERSIONINFOEXA {
2136 dwOSVersionInfoSize: ::DWORD,
2137 dwMajorVersion: ::DWORD,
2138 dwMinorVersion: ::DWORD,
2139 dwBuildNumber: ::DWORD,
2140 dwPlatformId: ::DWORD,
2141 szCSDVersion: [::CHAR; 128],
2142 wServicePackMajor: ::WORD,
2143 wServicePackMinor: ::WORD,
2144 wSuiteMask: ::WORD,
2145 wProductType: ::BYTE,
2146 wReserved: ::BYTE,
2147 }}
2148 pub type POSVERSIONINFOEXA = *mut OSVERSIONINFOEXA;
2149 pub type LPOSVERSIONINFOEXA = *mut OSVERSIONINFOEXA;
2150 STRUCT!{nodebug struct OSVERSIONINFOEXW {
2151 dwOSVersionInfoSize: ::DWORD,
2152 dwMajorVersion: ::DWORD,
2153 dwMinorVersion: ::DWORD,
2154 dwBuildNumber: ::DWORD,
2155 dwPlatformId: ::DWORD,
2156 szCSDVersion: [::WCHAR; 128],
2157 wServicePackMajor: ::WORD,
2158 wServicePackMinor: ::WORD,
2159 wSuiteMask: ::WORD,
2160 wProductType: ::BYTE,
2161 wReserved: ::BYTE,
2162 }}
2163 pub type POSVERSIONINFOEXW = *mut OSVERSIONINFOEXW;
2164 pub type LPOSVERSIONINFOEXW = *mut OSVERSIONINFOEXW;
2165 STRUCT!{struct SLIST_ENTRY {
2166 Next: *mut SLIST_ENTRY,
2167 }}
2168 pub type PSLIST_ENTRY = *mut SLIST_ENTRY;
2169 STRUCT!{struct SLIST_HEADER_HeaderX64 {
2170 BitFields1: ::ULONGLONG,
2171 BitFields2: ::ULONGLONG,
2172 }}
2173 BITFIELD!(SLIST_HEADER_HeaderX64 BitFields1: ::ULONGLONG [
2174 Depth set_Depth[0..16],
2175 Sequence set_Sequence[16..64],
2176 ]);
2177 BITFIELD!(SLIST_HEADER_HeaderX64 BitFields2: ::ULONGLONG [
2178 Reserved set_Reserved[0..4],
2179 NextEntry set_NextEntry[4..64],
2180 ]);
2181 STRUCT!{struct SLIST_HEADER {
2182 Alignment: ::ULONGLONG,
2183 Region: ::ULONGLONG,
2184 }}
2185 UNION!(SLIST_HEADER, Alignment, HeaderX64, HeaderX64_mut, SLIST_HEADER_HeaderX64);
2186 pub type PSLIST_HEADER = *mut SLIST_HEADER;
2187 ENUM!{enum SYSTEM_POWER_STATE {
2188 PowerSystemUnspecified = 0,
2189 PowerSystemWorking = 1,
2190 PowerSystemSleeping1 = 2,
2191 PowerSystemSleeping2 = 3,
2192 PowerSystemSleeping3 = 4,
2193 PowerSystemHibernate = 5,
2194 PowerSystemShutdown = 6,
2195 PowerSystemMaximum = 7,
2196 }}
2197 pub type PSYSTEM_POWER_STATE = *mut SYSTEM_POWER_STATE;
2198 ENUM!{enum POWER_ACTION {
2199 PowerActionNone = 0,
2200 PowerActionReserved,
2201 PowerActionSleep,
2202 PowerActionHibernate,
2203 PowerActionShutdown,
2204 PowerActionShutdownReset,
2205 PowerActionShutdownOff,
2206 PowerActionWarmEject,
2207 }}
2208 pub type PPOWER_ACTION = *mut POWER_ACTION;
2209 ENUM!{enum DEVICE_POWER_STATE {
2210 PowerDeviceUnspecified = 0,
2211 PowerDeviceD0,
2212 PowerDeviceD1,
2213 PowerDeviceD2,
2214 PowerDeviceD3,
2215 PowerDeviceMaximum,
2216 }}
2217 pub type PDEVICE_POWER_STATE = *mut DEVICE_POWER_STATE;
2218 ENUM!{enum MONITOR_DISPLAY_STATE {
2219 PowerMonitorOff = 0,
2220 PowerMonitorOn,
2221 PowerMonitorDim,
2222 }}
2223 pub type PMONITOR_DISPLAY_STATE = *mut MONITOR_DISPLAY_STATE;
2224 ENUM!{enum USER_ACTIVITY_PRESENCE {
2225 PowerUserPresent = 0,
2226 PowerUserNotPresent,
2227 PowerUserInactive,
2228 PowerUserMaximum,
2229 //PowerUserInvalid = 3,
2230 }}
2231 pub type PUSER_ACTIVITY_PRESENCE = *mut USER_ACTIVITY_PRESENCE;
2232 pub type EXECUTION_STATE = ::DWORD;
2233 pub type PEXECUTION_STATE = *mut ::DWORD;
2234 ENUM!{enum LATENCY_TIME {
2235 LT_DONT_CARE,
2236 LT_LOWEST_LATENCY,
2237 }}
2238 ENUM!{enum POWER_REQUEST_TYPE {
2239 PowerRequestDisplayRequired,
2240 PowerRequestSystemRequired,
2241 PowerRequestAwayModeRequired,
2242 PowerRequestExecutionRequired,
2243 }}
2244 pub type PPOWER_REQUEST_TYPE = *mut POWER_REQUEST_TYPE;
2245 pub const MAX_HW_COUNTERS: usize = 16;
2246 STRUCT!{struct HARDWARE_COUNTER_DATA {
2247 Type: HARDWARE_COUNTER_TYPE,
2248 Reserved: ::DWORD,
2249 Value: ::DWORD64,
2250 }}
2251 pub type PHARDWARE_COUNTER_DATA = *mut HARDWARE_COUNTER_DATA;
2252 STRUCT!{struct PERFORMANCE_DATA {
2253 Size: ::WORD,
2254 Version: ::BYTE,
2255 HwCountersCount: ::BYTE,
2256 ContextSwitchCount: ::DWORD,
2257 WaitReasonBitMap: ::DWORD64,
2258 CycleTime: ::DWORD64,
2259 RetryCount: ::DWORD,
2260 Reserved: ::DWORD,
2261 HwCounters: [HARDWARE_COUNTER_DATA; MAX_HW_COUNTERS],
2262 }}
2263 pub type PPERFORMANCE_DATA = *mut PERFORMANCE_DATA;
2264 STRUCT!{struct MEMORY_BASIC_INFORMATION {
2265 BaseAddress: ::PVOID,
2266 AllocationBase: ::PVOID,
2267 AllocationProtect: ::DWORD,
2268 RegionSize: ::SIZE_T,
2269 State: ::DWORD,
2270 Protect: ::DWORD,
2271 Type: ::DWORD,
2272 }}
2273 pub type PMEMORY_BASIC_INFORMATION = *mut MEMORY_BASIC_INFORMATION;
2274 STRUCT!{struct MEMORY_BASIC_INFORMATION32 {
2275 BaseAddress: ::DWORD,
2276 AllocationBase: ::DWORD,
2277 AllocationProtect: ::DWORD,
2278 RegionSize: ::DWORD,
2279 State: ::DWORD,
2280 Protect: ::DWORD,
2281 Type: ::DWORD,
2282 }}
2283 pub type PMEMORY_BASIC_INFORMATION32 = *mut MEMORY_BASIC_INFORMATION32;
2284 STRUCT!{struct MEMORY_BASIC_INFORMATION64 { // FIXME: align 16
2285 BaseAddress: ::ULONGLONG,
2286 AllocationBase: ::ULONGLONG,
2287 AllocationProtect: ::DWORD,
2288 __alignment1: ::DWORD,
2289 RegionSize: ::ULONGLONG,
2290 State: ::DWORD,
2291 Protect: ::DWORD,
2292 Type: ::DWORD,
2293 __alignment2: ::DWORD,
2294 }}
2295 pub type PMEMORY_BASIC_INFORMATION64 = *mut MEMORY_BASIC_INFORMATION64;
2296 pub const WOW64_SIZE_OF_80387_REGISTERS: usize = 80;
2297 pub const WOW64_MAXIMUM_SUPPORTED_EXTENSION: usize = 512;
2298 STRUCT!{nodebug struct WOW64_FLOATING_SAVE_AREA {
2299 ControlWord: ::DWORD,
2300 StatusWord: ::DWORD,
2301 TagWord: ::DWORD,
2302 ErrorOffset: ::DWORD,
2303 ErrorSelector: ::DWORD,
2304 DataOffset: ::DWORD,
2305 DataSelector: ::DWORD,
2306 RegisterArea: [::BYTE; WOW64_SIZE_OF_80387_REGISTERS],
2307 Cr0NpxState: ::DWORD,
2308 }}
2309 pub type PWOW64_FLOATING_SAVE_AREA = *mut WOW64_FLOATING_SAVE_AREA;
2310 STRUCT!{nodebug struct WOW64_CONTEXT {
2311 ContextFlags: ::DWORD,
2312 Dr0: ::DWORD,
2313 Dr1: ::DWORD,
2314 Dr2: ::DWORD,
2315 Dr3: ::DWORD,
2316 Dr4: ::DWORD,
2317 Dr5: ::DWORD,
2318 Dr6: ::DWORD,
2319 Dr7: ::DWORD,
2320 FloatSave: WOW64_FLOATING_SAVE_AREA,
2321 SegGs: ::DWORD,
2322 SegFs: ::DWORD,
2323 SegEs: ::DWORD,
2324 SegDs: ::DWORD,
2325 Edi: ::DWORD,
2326 Esi: ::DWORD,
2327 Ebx: ::DWORD,
2328 Edx: ::DWORD,
2329 Ecx: ::DWORD,
2330 Eax: ::DWORD,
2331 Ebp: ::DWORD,
2332 Eip: ::DWORD,
2333 SegCs: ::DWORD,
2334 EFlags: ::DWORD,
2335 Esp: ::DWORD,
2336 SegSs: ::DWORD,
2337 ExtendedRegisters: [::BYTE; WOW64_MAXIMUM_SUPPORTED_EXTENSION],
2338 }}
2339 pub type PWOW64_CONTEXT = *mut WOW64_CONTEXT;
2340 STRUCT!{struct WOW64_LDT_ENTRY_Bytes {
2341 BaseMid: ::BYTE,
2342 Flags1: ::BYTE,
2343 Flags2: ::BYTE,
2344 BaseHi: ::BYTE,
2345 }}
2346 STRUCT!{struct WOW64_LDT_ENTRY_Bits {
2347 BitFields: ::DWORD,
2348 }}
2349 BITFIELD!(WOW64_LDT_ENTRY_Bits BitFields: ::DWORD [
2350 BaseMid set_BaseMid[0..8],
2351 Type set_Type[8..13],
2352 Dpl set_Dpl[13..15],
2353 Pres set_Pres[15..16],
2354 LimitHi set_LimitHi[16..20],
2355 Sys set_Sys[20..21],
2356 Reserved_0 set_Reserved_0[21..22],
2357 Default_Big set_Default_Big[22..23],
2358 Granularity set_Granularity[23..24],
2359 BaseHi set_BaseHi[24..32],
2360 ]);
2361 STRUCT!{struct WOW64_LDT_ENTRY {
2362 LimitLow: ::WORD,
2363 BaseLow: ::WORD,
2364 HighWord: ::DWORD,
2365 }}
2366 UNION!(WOW64_LDT_ENTRY, HighWord, Bytes, Bytes_mut, WOW64_LDT_ENTRY_Bytes);
2367 UNION!(WOW64_LDT_ENTRY, HighWord, Bits, Bits_mut, WOW64_LDT_ENTRY_Bits);
2368 pub type PWOW64_LDT_ENTRY = *mut WOW64_LDT_ENTRY;
2369