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