// Copyright © 2015, Peter Atashian // Licensed under the MIT License //! This module defines the 32-Bit Windows types and constants that are defined by NT, but exposed //! through the Win32 API. pub const ANYSIZE_ARRAY: usize = 1; //341 pub type PVOID = *mut ::c_void; pub type PVOID64 = u64; // This is a 64-bit pointer, even when in 32-bit //382 pub type VOID = ::c_void; pub type CHAR = ::c_char; pub type SHORT = ::c_short; pub type LONG = ::c_long; // pub type INT = ::c_int; // Already defined by minwindef.h pub type WCHAR = ::wchar_t; pub type PWCHAR = *mut WCHAR; pub type LPWCH = *mut WCHAR; pub type PWCH = *mut WCHAR; pub type LPCWCH = *const WCHAR; pub type PCWCH = *const WCHAR; pub type NWPSTR = *mut WCHAR; pub type LPWSTR = *mut WCHAR; pub type PWSTR = *mut WCHAR; pub type PZPWSTR = *mut PWSTR; pub type PCZPWSTR = *const PWSTR; pub type LPUWSTR = *mut WCHAR; pub type PUWSTR = *mut WCHAR; pub type LPCWSTR = *const WCHAR; pub type PCWSTR = *const WCHAR; pub type PZPCWSTR= *mut PCWSTR; pub type PCZPCWSTR = *const PCWSTR; pub type LPCUWSTR = *const WCHAR; pub type PCUWSTR = *const WCHAR; pub type PZZWSTR= *mut WCHAR; pub type PCZZWSTR = *const WCHAR; pub type PUZZWSTR = *mut WCHAR; pub type PCUZZWSTR = *const WCHAR; pub type PNZWCH = *mut WCHAR; pub type PCNZWCH = *const WCHAR; pub type PUNZWCH = *mut WCHAR; pub type PCUNZWCH = *const WCHAR; pub type LPCWCHAR = *const WCHAR; pub type PCWCHAR = *const WCHAR; pub type LPCUWCHAR = *const WCHAR; pub type PCUWCHAR = *const WCHAR; pub type UCSCHAR = ::c_ulong; pub type PUCSCHAR = *mut UCSCHAR; pub type PCUCSCHAR = *const UCSCHAR; pub type PUCSSTR = *mut UCSCHAR; pub type PUUCSSTR = *mut UCSCHAR; pub type PCUCSSTR = *const UCSCHAR; pub type PCUUCSSTR = *const UCSCHAR; pub type PUUCSCHAR = *mut UCSCHAR; pub type PCUUCSCHAR = *const UCSCHAR; pub type PCHAR = *mut CHAR; pub type LPCH = *mut CHAR; pub type PCH = *mut CHAR; pub type LPCCH = *const CHAR; pub type PCCH = *const CHAR; pub type NPSTR = *mut CHAR; pub type LPSTR = *mut CHAR; pub type PSTR = *mut CHAR; pub type PZPSTR = *mut PSTR; pub type PCZPSTR = *const PSTR; pub type LPCSTR = *const CHAR; pub type PCSTR = *const CHAR; pub type PZPCSTR = *mut PCSTR; pub type PCZPCSTR = *const PCSTR; pub type PZZSTR = *mut CHAR; pub type PCZZSTR = *const CHAR; pub type PNZCH = *mut CHAR; pub type PCNZCH = *const CHAR; // Skipping TCHAR things pub type PSHORT = *mut SHORT; pub type PLONG = *mut LONG; STRUCT!{struct PROCESSOR_NUMBER { Group: ::WORD, Number: ::BYTE, Reserved: ::BYTE, }} pub type PPROCESSOR_NUMBER = *mut PROCESSOR_NUMBER; STRUCT!{struct GROUP_AFFINITY { Mask: ::KAFFINITY, Group: ::WORD, Reserved: [::WORD; 3], }} pub type PGROUP_AFFINITY = *mut GROUP_AFFINITY; pub type HANDLE = *mut ::c_void; pub type PHANDLE = *mut HANDLE; pub type FCHAR = ::BYTE; pub type FSHORT = ::WORD; pub type FLONG = ::DWORD; //667 pub type CCHAR = ::c_char; pub type LCID = ::DWORD; pub type PLCID = ::PDWORD; pub type LANGID = ::WORD; ENUM!{enum COMPARTMENT_ID { UNSPECIFIED_COMPARTMENT_ID = 0, DEFAULT_COMPARTMENT_ID = 1, }} pub type PCOMPARTMENT_ID = *mut COMPARTMENT_ID; pub const APPLICATION_ERROR_MASK: ::DWORD = 0x20000000; pub const ERROR_SEVERITY_SUCCESS: ::DWORD = 0x00000000; pub const ERROR_SEVERITY_INFORMATIONAL: ::DWORD = 0x40000000; pub const ERROR_SEVERITY_WARNING: ::DWORD = 0x80000000; pub const ERROR_SEVERITY_ERROR: ::DWORD = 0xC0000000; //710 STRUCT!{struct FLOAT128 { LowPart: ::__int64, HighPart: ::__int64, }} pub type PFLOAT128 = *mut FLOAT128; pub type LONGLONG = ::__int64; pub type ULONGLONG = ::__uint64; pub type PLONGLONG = *mut LONGLONG; pub type PULONGLONG = *mut ULONGLONG; pub type USN = LONGLONG; pub type LARGE_INTEGER = LONGLONG; pub type PLARGE_INTEGER = *mut LARGE_INTEGER; pub type ULARGE_INTEGER = ULONGLONG; pub type PULARGE_INTEGER= *mut ULARGE_INTEGER; pub type RTL_REFERENCE_COUNT = ::LONG_PTR; pub type PRTL_REFERENCE_COUNT = *mut ::LONG_PTR; STRUCT!{struct LUID { LowPart: ::DWORD, HighPart: LONG, }} pub type PLUID = *mut LUID; pub type DWORDLONG = ULONGLONG; pub type PDWORDLONG = *mut DWORDLONG; //1042 pub type BOOLEAN = ::BYTE; pub type PBOOLEAN = *mut BOOLEAN; STRUCT!{struct LIST_ENTRY { Flink: *mut LIST_ENTRY, Blink: *mut LIST_ENTRY, }} pub type PLIST_ENTRY = *mut LIST_ENTRY; STRUCT!{struct SINGLE_LIST_ENTRY { Next: *mut SINGLE_LIST_ENTRY, }} pub type PSINGLE_LIST_ENTRY = *mut SINGLE_LIST_ENTRY; STRUCT!{struct LIST_ENTRY32 { Flink: ::DWORD, Blink: ::DWORD, }} pub type PLIST_ENTRY32 = *mut LIST_ENTRY32; STRUCT!{struct LIST_ENTRY64 { Flink: ULONGLONG, Blink: ULONGLONG, }} pub type PLIST_ENTRY64 = *mut LIST_ENTRY64; STRUCT!{struct OBJECTID { Lineage: ::GUID, Uniquifier: ::DWORD, }} pub const MINCHAR: ::CHAR = 0x80u8 as ::CHAR; pub const MAXCHAR: ::CHAR = 0x7f; pub const MINSHORT: ::SHORT = 0x8000u16 as ::SHORT; pub const MAXSHORT: ::SHORT = 0x7fff; pub const MINLONG: ::LONG = 0x80000000u32 as ::LONG; pub const MAXLONG: ::LONG = 0x7fffffff; pub const MAXBYTE: ::BYTE = 0xff; pub const MAXWORD: ::WORD = 0xffff; pub const MAXDWORD: ::DWORD = 0xffffffff; //1300 pub type PEXCEPTION_ROUTINE = Option ::EXCEPTION_DISPOSITION>; //1498 pub const LANG_NEUTRAL: ::WORD = 0x00; pub const LANG_INVARIANT: ::WORD = 0x7f; pub const LANG_AFRIKAANS: ::WORD = 0x36; pub const LANG_ALBANIAN: ::WORD = 0x1c; pub const LANG_ALSATIAN: ::WORD = 0x84; pub const LANG_AMHARIC: ::WORD = 0x5e; pub const LANG_ARABIC: ::WORD = 0x01; pub const LANG_ARMENIAN: ::WORD = 0x2b; pub const LANG_ASSAMESE: ::WORD = 0x4d; pub const LANG_AZERI: ::WORD = 0x2c; pub const LANG_AZERBAIJANI: ::WORD = 0x2c; pub const LANG_BANGLA: ::WORD = 0x45; pub const LANG_BASHKIR: ::WORD = 0x6d; pub const LANG_BASQUE: ::WORD = 0x2d; pub const LANG_BELARUSIAN: ::WORD = 0x23; pub const LANG_BENGALI: ::WORD = 0x45; pub const LANG_BRETON: ::WORD = 0x7e; pub const LANG_BOSNIAN: ::WORD = 0x1a; pub const LANG_BOSNIAN_NEUTRAL: ::WORD = 0x781a; pub const LANG_BULGARIAN: ::WORD = 0x02; pub const LANG_CATALAN: ::WORD = 0x03; pub const LANG_CENTRAL_KURDISH: ::WORD = 0x92; pub const LANG_CHEROKEE: ::WORD = 0x5c; pub const LANG_CHINESE: ::WORD = 0x04; pub const LANG_CHINESE_SIMPLIFIED: ::WORD = 0x04; pub const LANG_CHINESE_TRADITIONAL: ::WORD = 0x7c04; pub const LANG_CORSICAN: ::WORD = 0x83; pub const LANG_CROATIAN: ::WORD = 0x1a; pub const LANG_CZECH: ::WORD = 0x05; pub const LANG_DANISH: ::WORD = 0x06; pub const LANG_DARI: ::WORD = 0x8c; pub const LANG_DIVEHI: ::WORD = 0x65; pub const LANG_DUTCH: ::WORD = 0x13; pub const LANG_ENGLISH: ::WORD = 0x09; pub const LANG_ESTONIAN: ::WORD = 0x25; pub const LANG_FAEROESE: ::WORD = 0x38; pub const LANG_FARSI: ::WORD = 0x29; pub const LANG_FILIPINO: ::WORD = 0x64; pub const LANG_FINNISH: ::WORD = 0x0b; pub const LANG_FRENCH: ::WORD = 0x0c; pub const LANG_FRISIAN: ::WORD = 0x62; pub const LANG_FULAH: ::WORD = 0x67; pub const LANG_GALICIAN: ::WORD = 0x56; pub const LANG_GEORGIAN: ::WORD = 0x37; pub const LANG_GERMAN: ::WORD = 0x07; pub const LANG_GREEK: ::WORD = 0x08; pub const LANG_GREENLANDIC: ::WORD = 0x6f; pub const LANG_GUJARATI: ::WORD = 0x47; pub const LANG_HAUSA: ::WORD = 0x68; pub const LANG_HAWAIIAN: ::WORD = 0x75; pub const LANG_HEBREW: ::WORD = 0x0d; pub const LANG_HINDI: ::WORD = 0x39; pub const LANG_HUNGARIAN: ::WORD = 0x0e; pub const LANG_ICELANDIC: ::WORD = 0x0f; pub const LANG_IGBO: ::WORD = 0x70; pub const LANG_INDONESIAN: ::WORD = 0x21; pub const LANG_INUKTITUT: ::WORD = 0x5d; pub const LANG_IRISH: ::WORD = 0x3c; pub const LANG_ITALIAN: ::WORD = 0x10; pub const LANG_JAPANESE: ::WORD = 0x11; pub const LANG_KANNADA: ::WORD = 0x4b; pub const LANG_KASHMIRI: ::WORD = 0x60; pub const LANG_KAZAK: ::WORD = 0x3f; pub const LANG_KHMER: ::WORD = 0x53; pub const LANG_KICHE: ::WORD = 0x86; pub const LANG_KINYARWANDA: ::WORD = 0x87; pub const LANG_KONKANI: ::WORD = 0x57; pub const LANG_KOREAN: ::WORD = 0x12; pub const LANG_KYRGYZ: ::WORD = 0x40; pub const LANG_LAO: ::WORD = 0x54; pub const LANG_LATVIAN: ::WORD = 0x26; pub const LANG_LITHUANIAN: ::WORD = 0x27; pub const LANG_LOWER_SORBIAN: ::WORD = 0x2e; pub const LANG_LUXEMBOURGISH: ::WORD = 0x6e; pub const LANG_MACEDONIAN: ::WORD = 0x2f; pub const LANG_MALAY: ::WORD = 0x3e; pub const LANG_MALAYALAM: ::WORD = 0x4c; pub const LANG_MALTESE: ::WORD = 0x3a; pub const LANG_MANIPURI: ::WORD = 0x58; pub const LANG_MAORI: ::WORD = 0x81; pub const LANG_MAPUDUNGUN: ::WORD = 0x7a; pub const LANG_MARATHI: ::WORD = 0x4e; pub const LANG_MOHAWK: ::WORD = 0x7c; pub const LANG_MONGOLIAN: ::WORD = 0x50; pub const LANG_NEPALI: ::WORD = 0x61; pub const LANG_NORWEGIAN: ::WORD = 0x14; pub const LANG_OCCITAN: ::WORD = 0x82; pub const LANG_ODIA: ::WORD = 0x48; pub const LANG_ORIYA: ::WORD = 0x48; pub const LANG_PASHTO: ::WORD = 0x63; pub const LANG_PERSIAN: ::WORD = 0x29; pub const LANG_POLISH: ::WORD = 0x15; pub const LANG_PORTUGUESE: ::WORD = 0x16; pub const LANG_PULAR: ::WORD = 0x67; pub const LANG_PUNJABI: ::WORD = 0x46; pub const LANG_QUECHUA: ::WORD = 0x6b; pub const LANG_ROMANIAN: ::WORD = 0x18; pub const LANG_ROMANSH: ::WORD = 0x17; pub const LANG_RUSSIAN: ::WORD = 0x19; pub const LANG_SAKHA: ::WORD = 0x85; pub const LANG_SAMI: ::WORD = 0x3b; pub const LANG_SANSKRIT: ::WORD = 0x4f; pub const LANG_SCOTTISH_GAELIC: ::WORD = 0x91; pub const LANG_SERBIAN: ::WORD = 0x1a; pub const LANG_SERBIAN_NEUTRAL: ::WORD = 0x7c1a; pub const LANG_SINDHI: ::WORD = 0x59; pub const LANG_SINHALESE: ::WORD = 0x5b; pub const LANG_SLOVAK: ::WORD = 0x1b; pub const LANG_SLOVENIAN: ::WORD = 0x24; pub const LANG_SOTHO: ::WORD = 0x6c; pub const LANG_SPANISH: ::WORD = 0x0a; pub const LANG_SWAHILI: ::WORD = 0x41; pub const LANG_SWEDISH: ::WORD = 0x1d; pub const LANG_SYRIAC: ::WORD = 0x5a; pub const LANG_TAJIK: ::WORD = 0x28; pub const LANG_TAMAZIGHT: ::WORD = 0x5f; pub const LANG_TAMIL: ::WORD = 0x49; pub const LANG_TATAR: ::WORD = 0x44; pub const LANG_TELUGU: ::WORD = 0x4a; pub const LANG_THAI: ::WORD = 0x1e; pub const LANG_TIBETAN: ::WORD = 0x51; pub const LANG_TIGRIGNA: ::WORD = 0x73; pub const LANG_TIGRINYA: ::WORD = 0x73; pub const LANG_TSWANA: ::WORD = 0x32; pub const LANG_TURKISH: ::WORD = 0x1f; pub const LANG_TURKMEN: ::WORD = 0x42; pub const LANG_UIGHUR: ::WORD = 0x80; pub const LANG_UKRAINIAN: ::WORD = 0x22; pub const LANG_UPPER_SORBIAN: ::WORD = 0x2e; pub const LANG_URDU: ::WORD = 0x20; pub const LANG_UZBEK: ::WORD = 0x43; pub const LANG_VALENCIAN: ::WORD = 0x03; pub const LANG_VIETNAMESE: ::WORD = 0x2a; pub const LANG_WELSH: ::WORD = 0x52; pub const LANG_WOLOF: ::WORD = 0x88; pub const LANG_XHOSA: ::WORD = 0x34; pub const LANG_YAKUT: ::WORD = 0x85; pub const LANG_YI: ::WORD = 0x78; pub const LANG_YORUBA: ::WORD = 0x6a; pub const LANG_ZULU: ::WORD = 0x35; //1651 pub const SUBLANG_NEUTRAL: ::WORD = 0x00; pub const SUBLANG_DEFAULT: ::WORD = 0x01; pub const SUBLANG_SYS_DEFAULT: ::WORD = 0x02; pub const SUBLANG_CUSTOM_DEFAULT: ::WORD = 0x03; pub const SUBLANG_CUSTOM_UNSPECIFIED: ::WORD = 0x04; pub const SUBLANG_UI_CUSTOM_DEFAULT: ::WORD = 0x05; pub const SUBLANG_AFRIKAANS_SOUTH_AFRICA: ::WORD = 0x01; pub const SUBLANG_ALBANIAN_ALBANIA: ::WORD = 0x01; pub const SUBLANG_ALSATIAN_FRANCE: ::WORD = 0x01; pub const SUBLANG_AMHARIC_ETHIOPIA: ::WORD = 0x01; pub const SUBLANG_ARABIC_SAUDI_ARABIA: ::WORD = 0x01; pub const SUBLANG_ARABIC_IRAQ: ::WORD = 0x02; pub const SUBLANG_ARABIC_EGYPT: ::WORD = 0x03; pub const SUBLANG_ARABIC_LIBYA: ::WORD = 0x04; pub const SUBLANG_ARABIC_ALGERIA: ::WORD = 0x05; pub const SUBLANG_ARABIC_MOROCCO: ::WORD = 0x06; pub const SUBLANG_ARABIC_TUNISIA: ::WORD = 0x07; pub const SUBLANG_ARABIC_OMAN: ::WORD = 0x08; pub const SUBLANG_ARABIC_YEMEN: ::WORD = 0x09; pub const SUBLANG_ARABIC_SYRIA: ::WORD = 0x0a; pub const SUBLANG_ARABIC_JORDAN: ::WORD = 0x0b; pub const SUBLANG_ARABIC_LEBANON: ::WORD = 0x0c; pub const SUBLANG_ARABIC_KUWAIT: ::WORD = 0x0d; pub const SUBLANG_ARABIC_UAE: ::WORD = 0x0e; pub const SUBLANG_ARABIC_BAHRAIN: ::WORD = 0x0f; pub const SUBLANG_ARABIC_QATAR: ::WORD = 0x10; pub const SUBLANG_ARMENIAN_ARMENIA: ::WORD = 0x01; pub const SUBLANG_ASSAMESE_INDIA: ::WORD = 0x01; pub const SUBLANG_AZERI_LATIN: ::WORD = 0x01; pub const SUBLANG_AZERI_CYRILLIC: ::WORD = 0x02; pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN: ::WORD = 0x01; pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC: ::WORD = 0x02; pub const SUBLANG_BANGLA_INDIA: ::WORD = 0x01; pub const SUBLANG_BANGLA_BANGLADESH: ::WORD = 0x02; pub const SUBLANG_BASHKIR_RUSSIA: ::WORD = 0x01; pub const SUBLANG_BASQUE_BASQUE: ::WORD = 0x01; pub const SUBLANG_BELARUSIAN_BELARUS: ::WORD = 0x01; pub const SUBLANG_BENGALI_INDIA: ::WORD = 0x01; pub const SUBLANG_BENGALI_BANGLADESH: ::WORD = 0x02; pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x05; pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x08; pub const SUBLANG_BRETON_FRANCE: ::WORD = 0x01; pub const SUBLANG_BULGARIAN_BULGARIA: ::WORD = 0x01; pub const SUBLANG_CATALAN_CATALAN: ::WORD = 0x01; pub const SUBLANG_CENTRAL_KURDISH_IRAQ: ::WORD = 0x01; pub const SUBLANG_CHEROKEE_CHEROKEE: ::WORD = 0x01; pub const SUBLANG_CHINESE_TRADITIONAL: ::WORD = 0x01; pub const SUBLANG_CHINESE_SIMPLIFIED: ::WORD = 0x02; pub const SUBLANG_CHINESE_HONGKONG: ::WORD = 0x03; pub const SUBLANG_CHINESE_SINGAPORE: ::WORD = 0x04; pub const SUBLANG_CHINESE_MACAU: ::WORD = 0x05; pub const SUBLANG_CORSICAN_FRANCE: ::WORD = 0x01; pub const SUBLANG_CZECH_CZECH_REPUBLIC: ::WORD = 0x01; pub const SUBLANG_CROATIAN_CROATIA: ::WORD = 0x01; pub const SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x04; pub const SUBLANG_DANISH_DENMARK: ::WORD = 0x01; pub const SUBLANG_DARI_AFGHANISTAN: ::WORD = 0x01; pub const SUBLANG_DIVEHI_MALDIVES: ::WORD = 0x01; pub const SUBLANG_DUTCH: ::WORD = 0x01; pub const SUBLANG_DUTCH_BELGIAN: ::WORD = 0x02; pub const SUBLANG_ENGLISH_US: ::WORD = 0x01; pub const SUBLANG_ENGLISH_UK: ::WORD = 0x02; pub const SUBLANG_ENGLISH_AUS: ::WORD = 0x03; pub const SUBLANG_ENGLISH_CAN: ::WORD = 0x04; pub const SUBLANG_ENGLISH_NZ: ::WORD = 0x05; pub const SUBLANG_ENGLISH_EIRE: ::WORD = 0x06; pub const SUBLANG_ENGLISH_SOUTH_AFRICA: ::WORD = 0x07; pub const SUBLANG_ENGLISH_JAMAICA: ::WORD = 0x08; pub const SUBLANG_ENGLISH_CARIBBEAN: ::WORD = 0x09; pub const SUBLANG_ENGLISH_BELIZE: ::WORD = 0x0a; pub const SUBLANG_ENGLISH_TRINIDAD: ::WORD = 0x0b; pub const SUBLANG_ENGLISH_ZIMBABWE: ::WORD = 0x0c; pub const SUBLANG_ENGLISH_PHILIPPINES: ::WORD = 0x0d; pub const SUBLANG_ENGLISH_INDIA: ::WORD = 0x10; pub const SUBLANG_ENGLISH_MALAYSIA: ::WORD = 0x11; pub const SUBLANG_ENGLISH_SINGAPORE: ::WORD = 0x12; pub const SUBLANG_ESTONIAN_ESTONIA: ::WORD = 0x01; pub const SUBLANG_FAEROESE_FAROE_ISLANDS: ::WORD = 0x01; pub const SUBLANG_FILIPINO_PHILIPPINES: ::WORD = 0x01; pub const SUBLANG_FINNISH_FINLAND: ::WORD = 0x01; pub const SUBLANG_FRENCH: ::WORD = 0x01; pub const SUBLANG_FRENCH_BELGIAN: ::WORD = 0x02; pub const SUBLANG_FRENCH_CANADIAN: ::WORD = 0x03; pub const SUBLANG_FRENCH_SWISS: ::WORD = 0x04; pub const SUBLANG_FRENCH_LUXEMBOURG: ::WORD = 0x05; pub const SUBLANG_FRENCH_MONACO: ::WORD = 0x06; pub const SUBLANG_FRISIAN_NETHERLANDS: ::WORD = 0x01; pub const SUBLANG_FULAH_SENEGAL: ::WORD = 0x02; pub const SUBLANG_GALICIAN_GALICIAN: ::WORD = 0x01; pub const SUBLANG_GEORGIAN_GEORGIA: ::WORD = 0x01; pub const SUBLANG_GERMAN: ::WORD = 0x01; pub const SUBLANG_GERMAN_SWISS: ::WORD = 0x02; pub const SUBLANG_GERMAN_AUSTRIAN: ::WORD = 0x03; pub const SUBLANG_GERMAN_LUXEMBOURG: ::WORD = 0x04; pub const SUBLANG_GERMAN_LIECHTENSTEIN: ::WORD = 0x05; pub const SUBLANG_GREEK_GREECE: ::WORD = 0x01; pub const SUBLANG_GREENLANDIC_GREENLAND: ::WORD = 0x01; pub const SUBLANG_GUJARATI_INDIA: ::WORD = 0x01; pub const SUBLANG_HAUSA_NIGERIA_LATIN: ::WORD = 0x01; pub const SUBLANG_HAWAIIAN_US: ::WORD = 0x01; pub const SUBLANG_HEBREW_ISRAEL: ::WORD = 0x01; pub const SUBLANG_HINDI_INDIA: ::WORD = 0x01; pub const SUBLANG_HUNGARIAN_HUNGARY: ::WORD = 0x01; pub const SUBLANG_ICELANDIC_ICELAND: ::WORD = 0x01; pub const SUBLANG_IGBO_NIGERIA: ::WORD = 0x01; pub const SUBLANG_INDONESIAN_INDONESIA: ::WORD = 0x01; pub const SUBLANG_INUKTITUT_CANADA: ::WORD = 0x01; pub const SUBLANG_INUKTITUT_CANADA_LATIN: ::WORD = 0x02; pub const SUBLANG_IRISH_IRELAND: ::WORD = 0x02; pub const SUBLANG_ITALIAN: ::WORD = 0x01; pub const SUBLANG_ITALIAN_SWISS: ::WORD = 0x02; pub const SUBLANG_JAPANESE_JAPAN: ::WORD = 0x01; pub const SUBLANG_KANNADA_INDIA: ::WORD = 0x01; pub const SUBLANG_KASHMIRI_SASIA: ::WORD = 0x02; pub const SUBLANG_KASHMIRI_INDIA: ::WORD = 0x02; pub const SUBLANG_KAZAK_KAZAKHSTAN: ::WORD = 0x01; pub const SUBLANG_KHMER_CAMBODIA: ::WORD = 0x01; pub const SUBLANG_KICHE_GUATEMALA: ::WORD = 0x01; pub const SUBLANG_KINYARWANDA_RWANDA: ::WORD = 0x01; pub const SUBLANG_KONKANI_INDIA: ::WORD = 0x01; pub const SUBLANG_KOREAN: ::WORD = 0x01; pub const SUBLANG_KYRGYZ_KYRGYZSTAN: ::WORD = 0x01; pub const SUBLANG_LAO_LAO: ::WORD = 0x01; pub const SUBLANG_LATVIAN_LATVIA: ::WORD = 0x01; pub const SUBLANG_LITHUANIAN: ::WORD = 0x01; pub const SUBLANG_LOWER_SORBIAN_GERMANY: ::WORD = 0x02; pub const SUBLANG_LUXEMBOURGISH_LUXEMBOURG: ::WORD = 0x01; pub const SUBLANG_MACEDONIAN_MACEDONIA: ::WORD = 0x01; pub const SUBLANG_MALAY_MALAYSIA: ::WORD = 0x01; pub const SUBLANG_MALAY_BRUNEI_DARUSSALAM: ::WORD = 0x02; pub const SUBLANG_MALAYALAM_INDIA: ::WORD = 0x01; pub const SUBLANG_MALTESE_MALTA: ::WORD = 0x01; pub const SUBLANG_MAORI_NEW_ZEALAND: ::WORD = 0x01; pub const SUBLANG_MAPUDUNGUN_CHILE: ::WORD = 0x01; pub const SUBLANG_MARATHI_INDIA: ::WORD = 0x01; pub const SUBLANG_MOHAWK_MOHAWK: ::WORD = 0x01; pub const SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: ::WORD = 0x01; pub const SUBLANG_MONGOLIAN_PRC: ::WORD = 0x02; pub const SUBLANG_NEPALI_INDIA: ::WORD = 0x02; pub const SUBLANG_NEPALI_NEPAL: ::WORD = 0x01; pub const SUBLANG_NORWEGIAN_BOKMAL: ::WORD = 0x01; pub const SUBLANG_NORWEGIAN_NYNORSK: ::WORD = 0x02; pub const SUBLANG_OCCITAN_FRANCE: ::WORD = 0x01; pub const SUBLANG_ODIA_INDIA: ::WORD = 0x01; pub const SUBLANG_ORIYA_INDIA: ::WORD = 0x01; pub const SUBLANG_PASHTO_AFGHANISTAN: ::WORD = 0x01; pub const SUBLANG_PERSIAN_IRAN: ::WORD = 0x01; pub const SUBLANG_POLISH_POLAND: ::WORD = 0x01; pub const SUBLANG_PORTUGUESE: ::WORD = 0x02; pub const SUBLANG_PORTUGUESE_BRAZILIAN: ::WORD = 0x01; pub const SUBLANG_PULAR_SENEGAL: ::WORD = 0x02; pub const SUBLANG_PUNJABI_INDIA: ::WORD = 0x01; pub const SUBLANG_PUNJABI_PAKISTAN: ::WORD = 0x02; pub const SUBLANG_QUECHUA_BOLIVIA: ::WORD = 0x01; pub const SUBLANG_QUECHUA_ECUADOR: ::WORD = 0x02; pub const SUBLANG_QUECHUA_PERU: ::WORD = 0x03; pub const SUBLANG_ROMANIAN_ROMANIA: ::WORD = 0x01; pub const SUBLANG_ROMANSH_SWITZERLAND: ::WORD = 0x01; pub const SUBLANG_RUSSIAN_RUSSIA: ::WORD = 0x01; pub const SUBLANG_SAKHA_RUSSIA: ::WORD = 0x01; pub const SUBLANG_SAMI_NORTHERN_NORWAY: ::WORD = 0x01; pub const SUBLANG_SAMI_NORTHERN_SWEDEN: ::WORD = 0x02; pub const SUBLANG_SAMI_NORTHERN_FINLAND: ::WORD = 0x03; pub const SUBLANG_SAMI_LULE_NORWAY: ::WORD = 0x04; pub const SUBLANG_SAMI_LULE_SWEDEN: ::WORD = 0x05; pub const SUBLANG_SAMI_SOUTHERN_NORWAY: ::WORD = 0x06; pub const SUBLANG_SAMI_SOUTHERN_SWEDEN: ::WORD = 0x07; pub const SUBLANG_SAMI_SKOLT_FINLAND: ::WORD = 0x08; pub const SUBLANG_SAMI_INARI_FINLAND: ::WORD = 0x09; pub const SUBLANG_SANSKRIT_INDIA: ::WORD = 0x01; pub const SUBLANG_SCOTTISH_GAELIC: ::WORD = 0x01; pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x06; pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x07; pub const SUBLANG_SERBIAN_MONTENEGRO_LATIN: ::WORD = 0x0b; pub const SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC: ::WORD = 0x0c; pub const SUBLANG_SERBIAN_SERBIA_LATIN: ::WORD = 0x09; pub const SUBLANG_SERBIAN_SERBIA_CYRILLIC: ::WORD = 0x0a; pub const SUBLANG_SERBIAN_CROATIA: ::WORD = 0x01; pub const SUBLANG_SERBIAN_LATIN: ::WORD = 0x02; pub const SUBLANG_SERBIAN_CYRILLIC: ::WORD = 0x03; pub const SUBLANG_SINDHI_INDIA: ::WORD = 0x01; pub const SUBLANG_SINDHI_PAKISTAN: ::WORD = 0x02; pub const SUBLANG_SINDHI_AFGHANISTAN: ::WORD = 0x02; pub const SUBLANG_SINHALESE_SRI_LANKA: ::WORD = 0x01; pub const SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA: ::WORD = 0x01; pub const SUBLANG_SLOVAK_SLOVAKIA: ::WORD = 0x01; pub const SUBLANG_SLOVENIAN_SLOVENIA: ::WORD = 0x01; pub const SUBLANG_SPANISH: ::WORD = 0x01; pub const SUBLANG_SPANISH_MEXICAN: ::WORD = 0x02; pub const SUBLANG_SPANISH_MODERN: ::WORD = 0x03; pub const SUBLANG_SPANISH_GUATEMALA: ::WORD = 0x04; pub const SUBLANG_SPANISH_COSTA_RICA: ::WORD = 0x05; pub const SUBLANG_SPANISH_PANAMA: ::WORD = 0x06; pub const SUBLANG_SPANISH_DOMINICAN_REPUBLIC: ::WORD = 0x07; pub const SUBLANG_SPANISH_VENEZUELA: ::WORD = 0x08; pub const SUBLANG_SPANISH_COLOMBIA: ::WORD = 0x09; pub const SUBLANG_SPANISH_PERU: ::WORD = 0x0a; pub const SUBLANG_SPANISH_ARGENTINA: ::WORD = 0x0b; pub const SUBLANG_SPANISH_ECUADOR: ::WORD = 0x0c; pub const SUBLANG_SPANISH_CHILE: ::WORD = 0x0d; pub const SUBLANG_SPANISH_URUGUAY: ::WORD = 0x0e; pub const SUBLANG_SPANISH_PARAGUAY: ::WORD = 0x0f; pub const SUBLANG_SPANISH_BOLIVIA: ::WORD = 0x10; pub const SUBLANG_SPANISH_EL_SALVADOR: ::WORD = 0x11; pub const SUBLANG_SPANISH_HONDURAS: ::WORD = 0x12; pub const SUBLANG_SPANISH_NICARAGUA: ::WORD = 0x13; pub const SUBLANG_SPANISH_PUERTO_RICO: ::WORD = 0x14; pub const SUBLANG_SPANISH_US: ::WORD = 0x15; pub const SUBLANG_SWAHILI_KENYA: ::WORD = 0x01; pub const SUBLANG_SWEDISH: ::WORD = 0x01; pub const SUBLANG_SWEDISH_FINLAND: ::WORD = 0x02; pub const SUBLANG_SYRIAC_SYRIA: ::WORD = 0x01; pub const SUBLANG_TAJIK_TAJIKISTAN: ::WORD = 0x01; pub const SUBLANG_TAMAZIGHT_ALGERIA_LATIN: ::WORD = 0x02; pub const SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH: ::WORD = 0x04; pub const SUBLANG_TAMIL_INDIA: ::WORD = 0x01; pub const SUBLANG_TAMIL_SRI_LANKA: ::WORD = 0x02; pub const SUBLANG_TATAR_RUSSIA: ::WORD = 0x01; pub const SUBLANG_TELUGU_INDIA: ::WORD = 0x01; pub const SUBLANG_THAI_THAILAND: ::WORD = 0x01; pub const SUBLANG_TIBETAN_PRC: ::WORD = 0x01; pub const SUBLANG_TIGRIGNA_ERITREA: ::WORD = 0x02; pub const SUBLANG_TIGRINYA_ERITREA: ::WORD = 0x02; pub const SUBLANG_TIGRINYA_ETHIOPIA: ::WORD = 0x01; pub const SUBLANG_TSWANA_BOTSWANA: ::WORD = 0x02; pub const SUBLANG_TSWANA_SOUTH_AFRICA: ::WORD = 0x01; pub const SUBLANG_TURKISH_TURKEY: ::WORD = 0x01; pub const SUBLANG_TURKMEN_TURKMENISTAN: ::WORD = 0x01; pub const SUBLANG_UIGHUR_PRC: ::WORD = 0x01; pub const SUBLANG_UKRAINIAN_UKRAINE: ::WORD = 0x01; pub const SUBLANG_UPPER_SORBIAN_GERMANY: ::WORD = 0x01; pub const SUBLANG_URDU_PAKISTAN: ::WORD = 0x01; pub const SUBLANG_URDU_INDIA: ::WORD = 0x02; pub const SUBLANG_UZBEK_LATIN: ::WORD = 0x01; pub const SUBLANG_UZBEK_CYRILLIC: ::WORD = 0x02; pub const SUBLANG_VALENCIAN_VALENCIA: ::WORD = 0x02; pub const SUBLANG_VIETNAMESE_VIETNAM: ::WORD = 0x01; pub const SUBLANG_WELSH_UNITED_KINGDOM: ::WORD = 0x01; pub const SUBLANG_WOLOF_SENEGAL: ::WORD = 0x01; pub const SUBLANG_XHOSA_SOUTH_AFRICA: ::WORD = 0x01; pub const SUBLANG_YAKUT_RUSSIA: ::WORD = 0x01; pub const SUBLANG_YI_PRC: ::WORD = 0x01; pub const SUBLANG_YORUBA_NIGERIA: ::WORD = 0x01; pub const SUBLANG_ZULU_SOUTH_AFRICA: ::WORD = 0x01; //1962 // FIXME: Once feature(const_fn) or some CTFE alternative becomes stable, MAKELANGID! can go // unless we want to #[macro_export] it ... macro_rules! MAKELANGID { ($p:expr, $s:expr) => ($s << 10 | $p) } pub fn MAKELANGID(p: ::WORD, s: ::WORD) -> ::LANGID { MAKELANGID!(p, s) } pub fn PRIMARYLANGID(lgid: ::LANGID) -> ::WORD { lgid & 0x3ff } pub fn SUBLANGID(lgid: ::LANGID) -> ::WORD { lgid >> 10 } //2019 pub const LANG_SYSTEM_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT); pub const LANG_USER_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_DEFAULT); //2214 pub const MAXIMUM_WAIT_OBJECTS: ::DWORD = 64; pub const MAXIMUM_SUSPEND_COUNT: ::CHAR = MAXCHAR; //2277 pub type KSPIN_LOCK = ::ULONG_PTR; pub type PKSPIN_LOCK = *mut KSPIN_LOCK; STRUCT!{struct M128A { // FIXME align 16 Low: ULONGLONG, High: LONGLONG, }} pub type PM128A = *mut M128A; #[cfg(target_arch = "x86")] STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16 ControlWord: ::WORD, StatusWord: ::WORD, TagWord: ::BYTE, Reserved1: ::BYTE, ErrorOpcode: ::WORD, ErrorOffset: ::DWORD, ErrorSelector: ::WORD, Reserved2: ::WORD, DataOffset: ::DWORD, DataSelector: ::WORD, Reserved3: ::WORD, MxCsr: ::DWORD, MxCsr_Mask: ::DWORD, FloatRegisters: [M128A; 8], XmmRegisters: [M128A; 8], Reserved4: [::BYTE; 224], }} #[cfg(target_arch = "x86_64")] STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16 ControlWord: ::WORD, StatusWord: ::WORD, TagWord: ::BYTE, Reserved1: ::BYTE, ErrorOpcode: ::WORD, ErrorOffset: ::DWORD, ErrorSelector: ::WORD, Reserved2: ::WORD, DataOffset: ::DWORD, DataSelector: ::WORD, Reserved3: ::WORD, MxCsr: ::DWORD, MxCsr_Mask: ::DWORD, FloatRegisters: [M128A; 8], XmmRegisters: [M128A; 16], Reserved4: [::BYTE; 96], }} //3563 #[cfg(target_arch = "x86")] pub const SIZE_OF_80387_REGISTERS: usize = 80; #[cfg(target_arch = "x86")] STRUCT!{nodebug struct FLOATING_SAVE_AREA { ControlWord: ::DWORD, StatusWord: ::DWORD, TagWord: ::DWORD, ErrorOffset: ::DWORD, ErrorSelector: ::DWORD, DataOffset: ::DWORD, DataSelector: ::DWORD, RegisterArea: [::BYTE; SIZE_OF_80387_REGISTERS], Spare0: ::DWORD, }} #[cfg(target_arch = "x86")] pub type PFLOATING_SAVE_AREA = *mut FLOATING_SAVE_AREA; #[cfg(target_arch = "x86")] pub const MAXIMUM_SUPPORTED_EXTENSION: usize = 512; #[cfg(target_arch = "x86")] STRUCT!{nodebug struct CONTEXT { ContextFlags: ::DWORD, Dr0: ::DWORD, Dr1: ::DWORD, Dr2: ::DWORD, Dr3: ::DWORD, Dr6: ::DWORD, Dr7: ::DWORD, FloatSave: FLOATING_SAVE_AREA, SegGs: ::DWORD, SegFs: ::DWORD, SegEs: ::DWORD, SegDs: ::DWORD, Edi: ::DWORD, Esi: ::DWORD, Ebx: ::DWORD, Edx: ::DWORD, Ecx: ::DWORD, Eax: ::DWORD, Ebp: ::DWORD, Eip: ::DWORD, SegCs: ::DWORD, EFlags: ::DWORD, Esp: ::DWORD, SegSs: ::DWORD, ExtendedRegisters: [::BYTE; MAXIMUM_SUPPORTED_EXTENSION], }} #[cfg(target_arch = "x86_64")] pub type XMM_SAVE_AREA32 = XSAVE_FORMAT; pub type PXMM_SAVE_AREA32 = *mut XSAVE_FORMAT; // FIXME - Align 16 #[cfg(target_arch = "x86_64")] STRUCT!{nodebug struct CONTEXT { P1Home: ::DWORD64, P2Home: ::DWORD64, P3Home: ::DWORD64, P4Home: ::DWORD64, P5Home: ::DWORD64, P6Home: ::DWORD64, ContextFlags: ::DWORD, MxCsr: ::DWORD, SegCs: ::WORD, SegDs: ::WORD, SegEs: ::WORD, SegFs: ::WORD, SegGs: ::WORD, SegSs: ::WORD, EFlags: ::DWORD, Dr0: ::DWORD64, Dr1: ::DWORD64, Dr2: ::DWORD64, Dr3: ::DWORD64, Dr6: ::DWORD64, Dr7: ::DWORD64, Rax: ::DWORD64, Rcx: ::DWORD64, Rdx: ::DWORD64, Rbx: ::DWORD64, Rsp: ::DWORD64, Rbp: ::DWORD64, Rsi: ::DWORD64, Rdi: ::DWORD64, R8: ::DWORD64, R9: ::DWORD64, R10: ::DWORD64, R11: ::DWORD64, R12: ::DWORD64, R13: ::DWORD64, R14: ::DWORD64, R15: ::DWORD64, Rip: ::DWORD64, FltSave: XMM_SAVE_AREA32, VectorRegister: [::M128A; 26], VectorControl: ::DWORD64, DebugControl: ::DWORD64, LastBranchToRip: ::DWORD64, LastBranchFromRip: ::DWORD64, LastExceptionToRip: ::DWORD64, LastExceptionFromRip: ::DWORD64, }} pub type PCONTEXT = *mut CONTEXT; #[test] fn test_CONTEXT_size() { use std::mem::size_of; if cfg!(target_arch = "x86_64") { assert_eq!(size_of::(), 1232) } else if cfg!(target_arch = "x86") { assert_eq!(size_of::(), 716) } } pub type RUNTIME_FUNCTION = IMAGE_RUNTIME_FUNCTION_ENTRY; pub type PRUNTIME_FUNCTION = *mut RUNTIME_FUNCTION; pub const UNWIND_HISTORY_TABLE_SIZE: usize = 12; STRUCT!{struct UNWIND_HISTORY_TABLE_ENTRY { ImageBase: ::DWORD64, FunctionEntry: PRUNTIME_FUNCTION, }} pub type PUNWIND_HISTORY_TABLE_ENTRY = *mut UNWIND_HISTORY_TABLE_ENTRY; STRUCT!{struct UNWIND_HISTORY_TABLE { Count: ::DWORD, LocalHint: ::BYTE, GlobalHint: ::BYTE, Search: ::BYTE, Once: ::BYTE, LowAddress: ::DWORD64, HighAddress: ::DWORD64, Entry: [UNWIND_HISTORY_TABLE_ENTRY; UNWIND_HISTORY_TABLE_SIZE], }} pub type PUNWIND_HISTORY_TABLE = *mut UNWIND_HISTORY_TABLE; pub type PGET_RUNTIME_FUNCTION_CALLBACK = Option PRUNTIME_FUNCTION>; STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u1 { Xmm0: PM128A, Xmm1: PM128A, Xmm2: PM128A, Xmm3: PM128A, Xmm4: PM128A, Xmm5: PM128A, Xmm6: PM128A, Xmm7: PM128A, Xmm8: PM128A, Xmm9: PM128A, Xmm10: PM128A, Xmm11: PM128A, Xmm12: PM128A, Xmm14: PM128A, Xmm15: PM128A, }} STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u2 { Rax: ::DWORD64, Rcx: ::DWORD64, Rdx: ::DWORD64, Rbx: ::DWORD64, Rsp: ::DWORD64, Rbp: ::DWORD64, Rsi: ::DWORD64, Rdi: ::DWORD64, R8: ::DWORD64, R9: ::DWORD64, R10: ::DWORD64, R11: ::DWORD64, R12: ::DWORD64, R13: ::DWORD64, R14: ::DWORD64, R15: ::DWORD64, }} STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS { FloatingContext: [PM128A; 16], IntegerContext: [::PDWORD64; 16], }} // FIXME: all unions are untagged UNION!( KNONVOLATILE_CONTEXT_POINTERS, FloatingContext, Xmms, Xmms_mut, KNONVOLATILE_CONTEXT_POINTERS_u1 ); UNION!( KNONVOLATILE_CONTEXT_POINTERS, IntegerContext, Regs, Regs_mut, KNONVOLATILE_CONTEXT_POINTERS_u2 ); pub type PKNONVOLATILE_CONTEXT_POINTERS = *mut KNONVOLATILE_CONTEXT_POINTERS; //8983 pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15; STRUCT!{struct EXCEPTION_RECORD { ExceptionCode: ::DWORD, ExceptionFlags: ::DWORD, ExceptionRecord: *mut EXCEPTION_RECORD, ExceptionAddress: ::PVOID, NumberParameters: ::DWORD, ExceptionInformation: [::ULONG_PTR; EXCEPTION_MAXIMUM_PARAMETERS], }} pub type PEXCEPTION_RECORD = *mut EXCEPTION_RECORD; //9023 STRUCT!{struct EXCEPTION_POINTERS { ExceptionRecord: PEXCEPTION_RECORD, ContextRecord: PCONTEXT, }} pub type PEXCEPTION_POINTERS = *mut EXCEPTION_POINTERS; pub type PACCESS_TOKEN = ::PVOID; pub type PSECURITY_DESCRIPTOR = ::PVOID; pub type PSID = ::PVOID; pub type PCLAIMS_BLOB = ::PVOID; //9091 pub type ACCESS_MASK = ::DWORD; pub type PACCESS_MASK = *mut ACCESS_MASK; pub const DELETE: ::DWORD = 0x00010000; pub const READ_CONTROL: ::DWORD = 0x00020000; pub const WRITE_DAC: ::DWORD = 0x00040000; pub const WRITE_OWNER: ::DWORD = 0x00080000; pub const SYNCHRONIZE: ::DWORD = 0x00100000; pub const STANDARD_RIGHTS_REQUIRED: ::DWORD = 0x000F0000; pub const STANDARD_RIGHTS_READ: ::DWORD = READ_CONTROL; pub const STANDARD_RIGHTS_WRITE: ::DWORD = READ_CONTROL; pub const STANDARD_RIGHTS_EXECUTE: ::DWORD = READ_CONTROL; pub const STANDARD_RIGHTS_ALL: ::DWORD = 0x001F0000; pub const SPECIFIC_RIGHTS_ALL: ::DWORD = 0x0000FFFF; pub const ACCESS_SYSTEM_SECURITY: ::DWORD = 0x01000000; pub const MAXIMUM_ALLOWED: ::DWORD = 0x02000000; pub const GENERIC_READ: ::DWORD = 0x80000000; pub const GENERIC_WRITE: ::DWORD = 0x40000000; pub const GENERIC_EXECUTE: ::DWORD = 0x20000000; pub const GENERIC_ALL: ::DWORD = 0x10000000; //9170 STRUCT!{struct LUID_AND_ATTRIBUTES { Luid: LUID, Attributes: ::DWORD, }} pub type PLUID_AND_ATTRIBUTES = *mut LUID_AND_ATTRIBUTES; //9243 ENUM!{enum SID_NAME_USE { SidTypeUser = 1, SidTypeGroup, SidTypeDomain, SidTypeAlias, SidTypeWellKnownGroup, SidTypeDeletedAccount, SidTypeInvalid, SidTypeUnknown, SidTypeComputer, SidTypeLabel, }} pub type PSID_NAME_USE = *mut SID_NAME_USE; STRUCT!{struct SID_AND_ATTRIBUTES { Sid: PSID, Attributes: ::DWORD, }} pub type PSID_AND_ATTRIBUTES = *mut SID_AND_ATTRIBUTES; //9802 pub const ACL_REVISION: ::BYTE = 2; pub const ACL_REVISION_DS: ::BYTE = 4; pub const ACL_REVISION1: ::BYTE = 1; pub const MIN_ACL_REVISION: ::BYTE = ACL_REVISION2; pub const ACL_REVISION2: ::BYTE = 2; pub const ACL_REVISION3: ::BYTE = 3; pub const ACL_REVISION4: ::BYTE = 4; pub const MAX_ACL_REVISION: ::BYTE = ACL_REVISION4; STRUCT!{struct ACL { AclRevision: ::BYTE, Sbz1: ::BYTE, AclSize: ::WORD, AceCount: ::WORD, Sbz2: ::WORD, }} pub type PACL = *mut ACL; //9888 pub const SE_PRIVILEGE_ENABLED_BY_DEFAULT: ::DWORD = 0x00000001; pub const SE_PRIVILEGE_ENABLED: ::DWORD = 0x00000002; pub const SE_PRIVILEGE_REMOVED: ::DWORD = 0x00000004; pub const SE_PRIVILEGE_USED_FOR_ACCESS: ::DWORD = 0x80000000; pub const SE_PRIVILEGE_VALID_ATTRIBUTES: ::DWORD = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS; pub const PRIVILEGE_SET_ALL_NECESSARY: ::DWORD = 1; //10689 pub const TOKEN_ASSIGN_PRIMARY: ::DWORD = 0x0001; pub const TOKEN_DUPLICATE: ::DWORD = 0x0002; pub const TOKEN_IMPERSONATE: ::DWORD = 0x0004; pub const TOKEN_QUERY: ::DWORD = 0x0008; pub const TOKEN_QUERY_SOURCE: ::DWORD = 0x0010; pub const TOKEN_ADJUST_PRIVILEGES: ::DWORD = 0x0020; pub const TOKEN_ADJUST_GROUPS: ::DWORD = 0x0040; pub const TOKEN_ADJUST_DEFAULT: ::DWORD = 0x0080; pub const TOKEN_ADJUST_SESSIONID: ::DWORD = 0x0100; pub const TOKEN_ALL_ACCESS_P: ::DWORD = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT; pub const TOKEN_ALL_ACCESS: ::DWORD = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID; pub const TOKEN_READ: ::DWORD = STANDARD_RIGHTS_READ | TOKEN_QUERY; pub const TOKEN_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT; pub const TOKEN_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE; //10823 STRUCT!{nodebug struct TOKEN_PRIVILEGES { PrivilegeCount: ::DWORD, Privileges: [LUID_AND_ATTRIBUTES; 0], }} pub type PTOKEN_PRIVILEGES = *mut TOKEN_PRIVILEGES; //10965 pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID: ::WORD = 0x00; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64: ::WORD = 0x01; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64: ::WORD = 0x02; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING: ::WORD = 0x03; STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE { Version: ::DWORD64, Name: ::PWSTR, }} pub type PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = *mut CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN: ::WORD = 0x04; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_SID: ::WORD = 0x05; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN: ::WORD = 0x06; STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { pValue: ::PVOID, ValueLength: ::DWORD, }} pub type PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE = *mut CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING: ::WORD = 0x10; pub const CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE: ::DWORD = 0x0001; pub const CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE: ::DWORD = 0x0002; pub const CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY: ::DWORD = 0x0004; pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT: ::DWORD = 0x0008; pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED: ::DWORD = 0x0010; pub const CLAIM_SECURITY_ATTRIBUTE_MANDATORY: ::DWORD = 0x0020; pub const CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS: ::DWORD = CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED | CLAIM_SECURITY_ATTRIBUTE_MANDATORY; pub const CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS: ::DWORD = 0xFFFF0000; STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_V1 { Name: ::PWSTR, ValueType: ::WORD, Reserved: ::WORD, Flags: ::DWORD, ValueCount: ::DWORD, // Put data here }} pub type PCLAIM_SECURITY_ATTRIBUTE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_V1; STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 { Name: ::DWORD, ValueType: ::WORD, Reserved: ::WORD, Flags: ::DWORD, ValueCount: ::DWORD, // Put array here }} pub type PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1; pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1: ::WORD = 1; pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION: ::WORD = CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1; STRUCT!{struct CLAIM_SECURITY_ATTRIBUTES_INFORMATION { Version: ::WORD, Reserved: ::WORD, AttributeCount: ::DWORD, pAttributeV1: PCLAIM_SECURITY_ATTRIBUTE_V1, }} pub type PCLAIM_SECURITY_ATTRIBUTES_INFORMATION = *mut CLAIM_SECURITY_ATTRIBUTES_INFORMATION; //11257 pub type SECURITY_INFORMATION = ::DWORD; pub type PSECURITY_INFORMATION = *mut ::DWORD; pub const OWNER_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000001; pub const GROUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000002; pub const DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000004; pub const SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000008; pub const LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000010; pub const ATTRIBUTE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000020; pub const SCOPE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000040; pub const PROCESS_TRUST_LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000080; pub const BACKUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00010000; pub const PROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x80000000; pub const PROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x40000000; pub const UNPROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x20000000; pub const UNPROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x10000000; ENUM!{enum SE_LEARNING_MODE_DATA_TYPE { SeLearningModeInvalidType = 0, SeLearningModeSettings, SeLearningModeMax, }} STRUCT!{struct SECURITY_CAPABILITIES { AppContainerSid: PSID, Capabilities: PSID_AND_ATTRIBUTES, CapabilityCount: ::DWORD, Reserved: ::DWORD, }} pub type PSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES; pub type LPSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES; pub const PROCESS_TERMINATE: ::DWORD = 0x0001; pub const PROCESS_CREATE_THREAD: ::DWORD = 0x0002; pub const PROCESS_SET_SESSIONID: ::DWORD = 0x0004; pub const PROCESS_VM_OPERATION: ::DWORD = 0x0008; pub const PROCESS_VM_READ: ::DWORD = 0x0010; pub const PROCESS_VM_WRITE: ::DWORD = 0x0020; pub const PROCESS_DUP_HANDLE: ::DWORD = 0x0040; pub const PROCESS_CREATE_PROCESS: ::DWORD = 0x0080; pub const PROCESS_SET_QUOTA: ::DWORD = 0x0100; pub const PROCESS_SET_INFORMATION: ::DWORD = 0x0200; pub const PROCESS_QUERY_INFORMATION: ::DWORD = 0x0400; pub const PROCESS_SUSPEND_RESUME: ::DWORD = 0x0800; pub const PROCESS_QUERY_LIMITED_INFORMATION: ::DWORD = 0x1000; pub const PROCESS_SET_LIMITED_INFORMATION: ::DWORD = 0x2000; pub const PROCESS_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF; //11007 pub const THREAD_BASE_PRIORITY_LOWRT: ::DWORD = 15; pub const THREAD_BASE_PRIORITY_MAX: ::DWORD = 2; pub const THREAD_BASE_PRIORITY_MIN: ::DWORD = -2i32 as ::DWORD; pub const THREAD_BASE_PRIORITY_IDLE: ::DWORD = -15i32 as ::DWORD; //11018 STRUCT!{struct QUOTA_LIMITS { PagedPoolLimit: ::SIZE_T, NonPagedPoolLimit: ::SIZE_T, MinimumWorkingSetSize: ::SIZE_T, MaximumWorkingSetSize: ::SIZE_T, PagefileLimit: ::SIZE_T, TimeLimit: ::LARGE_INTEGER, }} pub type PQUOTA_LIMITS = *mut QUOTA_LIMITS; pub const QUOTA_LIMITS_HARDWS_MIN_ENABLE: ::DWORD = 0x00000001; pub const QUOTA_LIMITS_HARDWS_MIN_DISABLE: ::DWORD = 0x00000002; pub const QUOTA_LIMITS_HARDWS_MAX_ENABLE: ::DWORD = 0x00000004; pub const QUOTA_LIMITS_HARDWS_MAX_DISABLE: ::DWORD = 0x00000008; pub const QUOTA_LIMITS_USE_DEFAULT_LIMITS: ::DWORD = 0x00000010; STRUCT!{struct RATE_QUOTA_LIMIT { RateData: ::DWORD, BitFields: ::DWORD, }} BITFIELD!(RATE_QUOTA_LIMIT BitFields: ::DWORD [ RatePercent set_RatePercent[0..7], Reserved0 set_Reserved0[7..32], ]); pub type PRATE_QUOTA_LIMIT = *mut RATE_QUOTA_LIMIT; STRUCT!{struct QUOTA_LIMITS_EX { PagedPoolLimit: ::SIZE_T, NonPagedPoolLimit: ::SIZE_T, MinimumWorkingSetSize: ::SIZE_T, MaximumWorkingSetSize: ::SIZE_T, PagefileLimit: ::SIZE_T, TimeLimit: ::LARGE_INTEGER, WorkingSetLimit: ::SIZE_T, Reserved2: ::SIZE_T, Reserved3: ::SIZE_T, Reserved4: ::SIZE_T, Flags: ::DWORD, CpuRateLimit: RATE_QUOTA_LIMIT, }} pub type PQUOTA_LIMITS_EX = *mut QUOTA_LIMITS_EX; STRUCT!{struct IO_COUNTERS { ReadOperationCount: ::ULONGLONG, WriteOperationCount: ::ULONGLONG, OtherOperationCount: ::ULONGLONG, ReadTransferCount: ::ULONGLONG, WriteTransferCount: ::ULONGLONG, OtherTransferCount: ::ULONGLONG, }} pub type PIO_COUNTERS = *mut IO_COUNTERS; //11192 STRUCT!{struct JOBOBJECT_BASIC_LIMIT_INFORMATION { PerProcessUserTimeLimit: ::LARGE_INTEGER, PerJobUserTimeLimit: ::LARGE_INTEGER, LimitFlags: ::DWORD, MinimumWorkingSetSize: ::SIZE_T, MaximumWorkingSetSize: ::SIZE_T, ActiveProcessLimit: ::DWORD, Affinity: ::ULONG_PTR, PriorityClass: ::DWORD, SchedulingClass: ::DWORD, }} pub type PJOBOBJECT_BASIC_LIMIT_INFORMATION = *mut JOBOBJECT_BASIC_LIMIT_INFORMATION; STRUCT!{struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION, IoInfo: IO_COUNTERS, ProcessMemoryLimit: ::SIZE_T, JobMemoryLimit: ::SIZE_T, PeakProcessMemoryUsed: ::SIZE_T, PeakJobMemoryUsed: ::SIZE_T, }} pub type PJOBOBJECT_EXTENDED_LIMIT_INFORMATION = *mut JOBOBJECT_EXTENDED_LIMIT_INFORMATION; STRUCT!{struct JOBOBJECT_BASIC_PROCESS_ID_LIST { NumberOfAssignedProcesses: ::DWORD, NumberOfProcessIdsInList: ::DWORD, ProcessIdList: [::ULONG_PTR; 0], }} //11712 pub const JOB_OBJECT_TERMINATE_AT_END_OF_JOB: ::DWORD = 0; pub const JOB_OBJECT_POST_AT_END_OF_JOB: ::DWORD = 1; pub const JOB_OBJECT_MSG_END_OF_JOB_TIME: ::DWORD = 1; pub const JOB_OBJECT_MSG_END_OF_PROCESS_TIME: ::DWORD = 2; pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT: ::DWORD = 3; pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO: ::DWORD = 4; pub const JOB_OBJECT_MSG_NEW_PROCESS: ::DWORD = 6; pub const JOB_OBJECT_MSG_EXIT_PROCESS: ::DWORD = 7; pub const JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS: ::DWORD = 8; pub const JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT: ::DWORD = 9; pub const JOB_OBJECT_MSG_JOB_MEMORY_LIMIT: ::DWORD = 10; pub const JOB_OBJECT_MSG_NOTIFICATION_LIMIT: ::DWORD = 11; pub const JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT: ::DWORD = 12; pub const JOB_OBJECT_MSG_MINIMUM: ::DWORD = 1; pub const JOB_OBJECT_MSG_MAXIMUM: ::DWORD = 12; pub const JOB_OBJECT_VALID_COMPLETION_FILTER: ::DWORD = ((1 << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1) - ((1 << JOB_OBJECT_MSG_MINIMUM) - 1); pub const JOB_OBJECT_LIMIT_WORKINGSET: ::DWORD = 0x00000001; pub const JOB_OBJECT_LIMIT_PROCESS_TIME: ::DWORD = 0x00000002; pub const JOB_OBJECT_LIMIT_JOB_TIME: ::DWORD = 0x00000004; pub const JOB_OBJECT_LIMIT_ACTIVE_PROCESS: ::DWORD = 0x00000008; pub const JOB_OBJECT_LIMIT_AFFINITY: ::DWORD = 0x00000010; pub const JOB_OBJECT_LIMIT_PRIORITY_CLASS: ::DWORD = 0x00000020; pub const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME: ::DWORD = 0x00000040; pub const JOB_OBJECT_LIMIT_SCHEDULING_CLASS: ::DWORD = 0x00000080; pub const JOB_OBJECT_LIMIT_PROCESS_MEMORY: ::DWORD = 0x00000100; pub const JOB_OBJECT_LIMIT_JOB_MEMORY: ::DWORD = 0x00000200; pub const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION: ::DWORD = 0x00000400; pub const JOB_OBJECT_LIMIT_BREAKAWAY_OK: ::DWORD = 0x00000800; pub const JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK: ::DWORD = 0x00001000; pub const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE: ::DWORD = 0x00002000; pub const JOB_OBJECT_LIMIT_SUBSET_AFFINITY: ::DWORD = 0x00004000; pub const JOB_OBJECT_LIMIT_JOB_READ_BYTES: ::DWORD = 0x00010000; pub const JOB_OBJECT_LIMIT_JOB_WRITE_BYTES: ::DWORD = 0x00020000; pub const JOB_OBJECT_LIMIT_RATE_CONTROL: ::DWORD = 0x00040000; pub const JOB_OBJECT_LIMIT_RESERVED3: ::DWORD = 0x00008000; pub const JOB_OBJECT_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff; pub const JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS: ::DWORD = 0x000000ff; pub const JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS: ::DWORD = 0x00007fff; pub const JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS: ::DWORD = 0x00070204; pub const JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff; pub const JOB_OBJECT_UILIMIT_NONE: ::DWORD = 0x00000000; pub const JOB_OBJECT_UILIMIT_HANDLES: ::DWORD = 0x00000001; pub const JOB_OBJECT_UILIMIT_READCLIPBOARD: ::DWORD = 0x00000002; pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD: ::DWORD = 0x00000004; pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS: ::DWORD = 0x00000008; pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS: ::DWORD = 0x00000010; pub const JOB_OBJECT_UILIMIT_GLOBALATOMS: ::DWORD = 0x00000020; pub const JOB_OBJECT_UILIMIT_DESKTOP: ::DWORD = 0x00000040; pub const JOB_OBJECT_UILIMIT_EXITWINDOWS: ::DWORD = 0x00000080; pub const JOB_OBJECT_UILIMIT_ALL: ::DWORD = 0x000000FF; pub const JOB_OBJECT_UI_VALID_FLAGS: ::DWORD = 0x000000FF; pub const JOB_OBJECT_SECURITY_NO_ADMIN: ::DWORD = 0x00000001; pub const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN: ::DWORD = 0x00000002; pub const JOB_OBJECT_SECURITY_ONLY_TOKEN: ::DWORD = 0x00000004; pub const JOB_OBJECT_SECURITY_FILTER_TOKENS: ::DWORD = 0x00000008; pub const JOB_OBJECT_SECURITY_VALID_FLAGS: ::DWORD = 0x0000000f; pub const JOB_OBJECT_CPU_RATE_CONTROL_ENABLE: ::DWORD = 0x1; pub const JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED: ::DWORD = 0x2; pub const JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP: ::DWORD = 0x4; pub const JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY: ::DWORD = 0x8; pub const JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS: ::DWORD = 0xf; ENUM!{enum JOBOBJECTINFOCLASS { JobObjectBasicAccountingInformation = 1, JobObjectBasicLimitInformation, JobObjectBasicProcessIdList, JobObjectBasicUIRestrictions, JobObjectSecurityLimitInformation, JobObjectEndOfJobTimeInformation, JobObjectAssociateCompletionPortInformation, JobObjectBasicAndIoAccountingInformation, JobObjectExtendedLimitInformation, JobObjectJobSetInformation, JobObjectGroupInformation, JobObjectNotificationLimitInformation, JobObjectLimitViolationInformation, JobObjectGroupInformationEx, JobObjectCpuRateControlInformation, JobObjectCompletionFilter, JobObjectCompletionCounter, JobObjectReserved1Information = 18, JobObjectReserved2Information, JobObjectReserved3Information, JobObjectReserved4Information, JobObjectReserved5Information, JobObjectReserved6Information, JobObjectReserved7Information, JobObjectReserved8Information, JobObjectReserved9Information, MaxJobObjectInfoClass, }} //12063 pub const SECTION_QUERY: ::DWORD = 0x0001; pub const SECTION_MAP_WRITE: ::DWORD = 0x0002; pub const SECTION_MAP_READ: ::DWORD = 0x0004; pub const SECTION_MAP_EXECUTE: ::DWORD = 0x0008; pub const SECTION_EXTEND_SIZE: ::DWORD = 0x0010; pub const SECTION_MAP_EXECUTE_EXPLICIT: ::DWORD = 0x0020; pub const SECTION_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE; //12100 pub const PAGE_NOACCESS: ::DWORD = 0x01; pub const PAGE_READONLY: ::DWORD = 0x02; pub const PAGE_READWRITE: ::DWORD = 0x04; pub const PAGE_WRITECOPY: ::DWORD = 0x08; pub const PAGE_EXECUTE: ::DWORD = 0x10; pub const PAGE_EXECUTE_READ: ::DWORD = 0x20; pub const PAGE_EXECUTE_READWRITE: ::DWORD = 0x40; pub const PAGE_EXECUTE_WRITECOPY: ::DWORD = 0x80; pub const PAGE_GUARD: ::DWORD = 0x100; pub const PAGE_NOCACHE: ::DWORD = 0x200; pub const PAGE_WRITECOMBINE: ::DWORD = 0x400; pub const PAGE_REVERT_TO_FILE_MAP: ::DWORD = 0x80000000; pub const PAGE_TARGETS_NO_UPDATE: ::DWORD = 0x40000000; pub const PAGE_TARGETS_INVALID: ::DWORD = 0x40000000; pub const MEM_COMMIT: ::DWORD = 0x1000; pub const MEM_RESERVE: ::DWORD = 0x2000; pub const MEM_DECOMMIT: ::DWORD = 0x4000; pub const MEM_RELEASE: ::DWORD = 0x8000; pub const MEM_FREE: ::DWORD = 0x10000; pub const MEM_PRIVATE: ::DWORD = 0x20000; pub const MEM_MAPPED: ::DWORD = 0x40000; pub const MEM_RESET: ::DWORD = 0x80000; pub const MEM_TOP_DOWN: ::DWORD = 0x100000; pub const MEM_WRITE_WATCH: ::DWORD = 0x200000; pub const MEM_PHYSICAL: ::DWORD = 0x400000; pub const MEM_ROTATE: ::DWORD = 0x800000; pub const MEM_DIFFERENT_IMAGE_BASE_OK: ::DWORD = 0x800000; pub const MEM_RESET_UNDO: ::DWORD = 0x1000000; pub const MEM_LARGE_PAGES: ::DWORD = 0x20000000; pub const MEM_4MB_PAGES: ::DWORD = 0x80000000; pub const SEC_FILE: ::DWORD = 0x800000; pub const SEC_IMAGE: ::DWORD = 0x1000000; pub const SEC_PROTECTED_IMAGE: ::DWORD = 0x2000000; pub const SEC_RESERVE: ::DWORD = 0x4000000; pub const SEC_COMMIT: ::DWORD = 0x8000000; pub const SEC_NOCACHE: ::DWORD = 0x10000000; pub const SEC_WRITECOMBINE: ::DWORD = 0x40000000; pub const SEC_LARGE_PAGES: ::DWORD = 0x80000000; pub const SEC_IMAGE_NO_EXECUTE: ::DWORD = (SEC_IMAGE | SEC_NOCACHE); pub const MEM_IMAGE: ::DWORD = SEC_IMAGE; pub const WRITE_WATCH_FLAG_RESET: ::DWORD = 0x01; pub const MEM_UNMAP_WITH_TRANSIENT_BOOST: ::DWORD = 0x01; //12217 pub const FILE_READ_DATA: ::DWORD = 0x0001; pub const FILE_LIST_DIRECTORY: ::DWORD = 0x0001; pub const FILE_WRITE_DATA: ::DWORD = 0x0002; pub const FILE_ADD_FILE: ::DWORD = 0x0002; pub const FILE_APPEND_DATA: ::DWORD = 0x0004; pub const FILE_ADD_SUBDIRECTORY: ::DWORD = 0x0004; pub const FILE_CREATE_PIPE_INSTANCE: ::DWORD = 0x0004; pub const FILE_READ_EA: ::DWORD = 0x0008; pub const FILE_WRITE_EA: ::DWORD = 0x0010; pub const FILE_EXECUTE: ::DWORD = 0x0020; pub const FILE_TRAVERSE: ::DWORD = 0x0020; pub const FILE_DELETE_CHILD: ::DWORD = 0x0040; pub const FILE_READ_ATTRIBUTES: ::DWORD = 0x0080; pub const FILE_WRITE_ATTRIBUTES: ::DWORD = 0x0100; pub const FILE_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF; pub const FILE_GENERIC_READ: ::DWORD = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE; pub const FILE_GENERIC_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE; pub const FILE_GENERIC_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE; pub const FILE_SHARE_READ: ::DWORD = 0x00000001; pub const FILE_SHARE_WRITE: ::DWORD = 0x00000002; pub const FILE_SHARE_DELETE: ::DWORD = 0x00000004; pub const FILE_ATTRIBUTE_READONLY: ::DWORD = 0x00000001; pub const FILE_ATTRIBUTE_HIDDEN: ::DWORD = 0x00000002; pub const FILE_ATTRIBUTE_SYSTEM: ::DWORD = 0x00000004; pub const FILE_ATTRIBUTE_DIRECTORY: ::DWORD = 0x00000010; pub const FILE_ATTRIBUTE_ARCHIVE: ::DWORD = 0x00000020; pub const FILE_ATTRIBUTE_DEVICE: ::DWORD = 0x00000040; pub const FILE_ATTRIBUTE_NORMAL: ::DWORD = 0x00000080; pub const FILE_ATTRIBUTE_TEMPORARY: ::DWORD = 0x00000100; pub const FILE_ATTRIBUTE_SPARSE_FILE: ::DWORD = 0x00000200; pub const FILE_ATTRIBUTE_REPARSE_POINT: ::DWORD = 0x00000400; pub const FILE_ATTRIBUTE_COMPRESSED: ::DWORD = 0x00000800; pub const FILE_ATTRIBUTE_OFFLINE: ::DWORD = 0x00001000; pub const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED: ::DWORD = 0x00002000; pub const FILE_ATTRIBUTE_ENCRYPTED: ::DWORD = 0x00004000; pub const FILE_ATTRIBUTE_INTEGRITY_STREAM: ::DWORD = 0x00008000; pub const FILE_ATTRIBUTE_VIRTUAL: ::DWORD = 0x00010000; pub const FILE_ATTRIBUTE_NO_SCRUB_DATA: ::DWORD = 0x00020000; pub const FILE_ATTRIBUTE_EA: ::DWORD = 0x00040000; pub const FILE_NOTIFY_CHANGE_FILE_NAME: ::DWORD = 0x00000001; pub const FILE_NOTIFY_CHANGE_DIR_NAME: ::DWORD = 0x00000002; pub const FILE_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000004; pub const FILE_NOTIFY_CHANGE_SIZE: ::DWORD = 0x00000008; pub const FILE_NOTIFY_CHANGE_LAST_WRITE: ::DWORD = 0x00000010; pub const FILE_NOTIFY_CHANGE_LAST_ACCESS: ::DWORD = 0x00000020; pub const FILE_NOTIFY_CHANGE_CREATION: ::DWORD = 0x00000040; pub const FILE_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000100; pub const FILE_ACTION_ADDED: ::DWORD = 0x00000001; pub const FILE_ACTION_REMOVED: ::DWORD = 0x00000002; pub const FILE_ACTION_MODIFIED: ::DWORD = 0x00000003; pub const FILE_ACTION_RENAMED_OLD_NAME: ::DWORD = 0x00000004; pub const FILE_ACTION_RENAMED_NEW_NAME: ::DWORD = 0x00000005; pub const MAILSLOT_NO_MESSAGE: ::DWORD = 0xFFFFFFFF; pub const MAILSLOT_WAIT_FOREVER: ::DWORD = 0xFFFFFFFF; pub const FILE_CASE_SENSITIVE_SEARCH: ::DWORD = 0x00000001; pub const FILE_CASE_PRESERVED_NAMES: ::DWORD = 0x00000002; pub const FILE_UNICODE_ON_DISK: ::DWORD = 0x00000004; pub const FILE_PERSISTENT_ACLS: ::DWORD = 0x00000008; pub const FILE_FILE_COMPRESSION: ::DWORD = 0x00000010; pub const FILE_VOLUME_QUOTAS: ::DWORD = 0x00000020; pub const FILE_SUPPORTS_SPARSE_FILES: ::DWORD = 0x00000040; pub const FILE_SUPPORTS_REPARSE_POINTS: ::DWORD = 0x00000080; pub const FILE_SUPPORTS_REMOTE_STORAGE: ::DWORD = 0x00000100; pub const FILE_VOLUME_IS_COMPRESSED: ::DWORD = 0x00008000; pub const FILE_SUPPORTS_OBJECT_IDS: ::DWORD = 0x00010000; pub const FILE_SUPPORTS_ENCRYPTION: ::DWORD = 0x00020000; pub const FILE_NAMED_STREAMS: ::DWORD = 0x00040000; pub const FILE_READ_ONLY_VOLUME: ::DWORD = 0x00080000; pub const FILE_SEQUENTIAL_WRITE_ONCE: ::DWORD = 0x00100000; pub const FILE_SUPPORTS_TRANSACTIONS: ::DWORD = 0x00200000; pub const FILE_SUPPORTS_HARD_LINKS: ::DWORD = 0x00400000; pub const FILE_SUPPORTS_EXTENDED_ATTRIBUTES: ::DWORD = 0x00800000; pub const FILE_SUPPORTS_OPEN_BY_FILE_ID: ::DWORD = 0x01000000; pub const FILE_SUPPORTS_USN_JOURNAL: ::DWORD = 0x02000000; pub const FILE_SUPPORTS_INTEGRITY_STREAMS: ::DWORD = 0x04000000; pub const FILE_INVALID_FILE_ID: ::LONGLONG = -1; STRUCT!{struct FILE_ID_128 { Identifier: [::BYTE; 16], }} pub type PFILE_ID_128 = *mut FILE_ID_128; STRUCT!{struct FILE_NOTIFY_INFORMATION { NextEntryOffset: ::DWORD, Action: ::DWORD, FileNameLength: ::DWORD, FileName: [::WCHAR; 0], }} STRUCT!{struct FILE_SEGMENT_ELEMENT { Buffer: ::PVOID64, Alignment: ::ULONGLONG, }} pub type PFILE_SEGMENT_ELEMENT = *mut FILE_SEGMENT_ELEMENT; //12475 pub const IO_REPARSE_TAG_MOUNT_POINT: ::DWORD = 0xA0000003; pub const IO_REPARSE_TAG_HSM: ::DWORD = 0xC0000004; pub const IO_REPARSE_TAG_HSM2: ::DWORD = 0x80000006; pub const IO_REPARSE_TAG_SIS: ::DWORD = 0x80000007; pub const IO_REPARSE_TAG_WIM: ::DWORD = 0x80000008; pub const IO_REPARSE_TAG_CSV: ::DWORD = 0x80000009; pub const IO_REPARSE_TAG_DFS: ::DWORD = 0x8000000A; pub const IO_REPARSE_TAG_SYMLINK: ::DWORD = 0xA000000C; pub const IO_REPARSE_TAG_DFSR: ::DWORD = 0x80000012; pub const IO_REPARSE_TAG_DEDUP: ::DWORD = 0x80000013; pub const IO_REPARSE_TAG_NFS: ::DWORD = 0x80000014; pub const IO_REPARSE_TAG_FILE_PLACEHOLDER: ::DWORD = 0x80000015; pub const IO_REPARSE_TAG_WOF: ::DWORD = 0x80000017; //12788 pub const DUPLICATE_CLOSE_SOURCE: ::DWORD = 0x00000001; pub const DUPLICATE_SAME_ACCESS: ::DWORD = 0x00000002; //14708 STRUCT!{struct PROCESSOR_POWER_POLICY_INFO { TimeCheck: ::DWORD, DemoteLimit: ::DWORD, PromoteLimit: ::DWORD, DemotePercent: ::BYTE, PromotePercent: ::BYTE, Spare: [::BYTE; 2], Reserved: ::DWORD, }} BITFIELD!(PROCESSOR_POWER_POLICY_INFO Reserved: ::DWORD [ AllowDemotion set_AllowDemotion[0..1], AllowPromotion set_AllowPromotion[1..2], ]); pub type PPROCESSOR_POWER_POLICY_INFO = *mut PROCESSOR_POWER_POLICY_INFO; //15000 STRUCT!{struct IMAGE_FILE_HEADER { Machine: ::WORD, NumberOfSections: ::WORD, TimeDateStamp: ::DWORD, PointerToSymbolTable: ::DWORD, NumberOfSymbols: ::DWORD, SizeOfOptionalHeader: ::WORD, Characteristics: ::WORD, }} pub type PIMAGE_FILE_HEADER = *mut IMAGE_FILE_HEADER; pub const IMAGE_SIZEOF_FILE_HEADER: usize = 20; pub const IMAGE_FILE_RELOCS_STRIPPED: ::WORD = 0x0001; pub const IMAGE_FILE_EXECUTABLE_IMAGE: ::WORD = 0x0002; pub const IMAGE_FILE_LINE_NUMS_STRIPPED: ::WORD = 0x0004; pub const IMAGE_FILE_LOCAL_SYMS_STRIPPED: ::WORD = 0x0008; pub const IMAGE_FILE_AGGRESIVE_WS_TRIM: ::WORD = 0x0010; pub const IMAGE_FILE_LARGE_ADDRESS_AWARE: ::WORD = 0x0020; pub const IMAGE_FILE_BYTES_REVERSED_LO: ::WORD = 0x0080; pub const IMAGE_FILE_32BIT_MACHINE: ::WORD = 0x0100; pub const IMAGE_FILE_DEBUG_STRIPPED: ::WORD = 0x0200; pub const IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP: ::WORD = 0x0400; pub const IMAGE_FILE_NET_RUN_FROM_SWAP: ::WORD = 0x0800; pub const IMAGE_FILE_SYSTEM: ::WORD = 0x1000; pub const IMAGE_FILE_DLL: ::WORD = 0x2000; pub const IMAGE_FILE_UP_SYSTEM_ONLY: ::WORD = 0x4000; pub const IMAGE_FILE_BYTES_REVERSED_HI: ::WORD = 0x8000; pub const IMAGE_FILE_MACHINE_UNKNOWN: ::WORD = 0; pub const IMAGE_FILE_MACHINE_I386: ::WORD = 0x014c; pub const IMAGE_FILE_MACHINE_R3000: ::WORD = 0x0162; pub const IMAGE_FILE_MACHINE_R4000: ::WORD = 0x0166; pub const IMAGE_FILE_MACHINE_R10000: ::WORD = 0x0168; pub const IMAGE_FILE_MACHINE_WCEMIPSV2: ::WORD = 0x0169; pub const IMAGE_FILE_MACHINE_ALPHA: ::WORD = 0x0184; pub const IMAGE_FILE_MACHINE_SH3: ::WORD = 0x01a2; pub const IMAGE_FILE_MACHINE_SH3DSP: ::WORD = 0x01a3; pub const IMAGE_FILE_MACHINE_SH3E: ::WORD = 0x01a4; pub const IMAGE_FILE_MACHINE_SH4: ::WORD = 0x01a6; pub const IMAGE_FILE_MACHINE_SH5: ::WORD = 0x01a8; pub const IMAGE_FILE_MACHINE_ARM: ::WORD = 0x01c0; pub const IMAGE_FILE_MACHINE_THUMB: ::WORD = 0x01c2; pub const IMAGE_FILE_MACHINE_ARMNT: ::WORD = 0x01c4; pub const IMAGE_FILE_MACHINE_AM33: ::WORD = 0x01d3; pub const IMAGE_FILE_MACHINE_POWERPC: ::WORD = 0x01F0; pub const IMAGE_FILE_MACHINE_POWERPCFP: ::WORD = 0x01f1; pub const IMAGE_FILE_MACHINE_IA64: ::WORD = 0x0200; pub const IMAGE_FILE_MACHINE_MIPS16: ::WORD = 0x0266; pub const IMAGE_FILE_MACHINE_ALPHA64: ::WORD = 0x0284; pub const IMAGE_FILE_MACHINE_MIPSFPU: ::WORD = 0x0366; pub const IMAGE_FILE_MACHINE_MIPSFPU16: ::WORD = 0x0466; pub const IMAGE_FILE_MACHINE_AXP64: ::WORD = IMAGE_FILE_MACHINE_ALPHA64; pub const IMAGE_FILE_MACHINE_TRICORE: ::WORD = 0x0520; pub const IMAGE_FILE_MACHINE_CEF: ::WORD = 0x0CEF; pub const IMAGE_FILE_MACHINE_EBC: ::WORD = 0x0EBC; pub const IMAGE_FILE_MACHINE_AMD64: ::WORD = 0x8664; pub const IMAGE_FILE_MACHINE_M32R: ::WORD = 0x9041; pub const IMAGE_FILE_MACHINE_CEE: ::WORD = 0xC0EE; STRUCT!{struct IMAGE_DATA_DIRECTORY { VirtualAddress: ::DWORD, Size: ::DWORD, }} pub type PIMAGE_DATA_DIRECTORY = *mut IMAGE_DATA_DIRECTORY; pub const IMAGE_NUMBEROF_DIRECTORY_ENTRIES: usize = 16; STRUCT!{struct IMAGE_OPTIONAL_HEADER32 { Magic: ::WORD, MajorLinkerVersion: ::BYTE, MinorLinkerVersion: ::BYTE, SizeOfCode: ::DWORD, SizeOfInitializedData: ::DWORD, SizeOfUninitializedData: ::DWORD, AddressOfEntryPoint: ::DWORD, BaseOfCode: ::DWORD, BaseOfData: ::DWORD, ImageBase: ::DWORD, SectionAlignment: ::DWORD, FileAlignment: ::DWORD, MajorOperatingSystemVersion: ::WORD, MinorOperatingSystemVersion: ::WORD, MajorImageVersion: ::WORD, MinorImageVersion: ::WORD, MajorSubsystemVersion: ::WORD, MinorSubsystemVersion: ::WORD, Win32VersionValue: ::DWORD, SizeOfImage: ::DWORD, SizeOfHeaders: ::DWORD, CheckSum: ::DWORD, Subsystem: ::WORD, DllCharacteristics: ::WORD, SizeOfStackReserve: ::DWORD, SizeOfStackCommit: ::DWORD, SizeOfHeapReserve: ::DWORD, SizeOfHeapCommit: ::DWORD, LoaderFlags: ::DWORD, NumberOfRvaAndSizes: ::DWORD, DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES], }} pub type PIMAGE_OPTIONAL_HEADER32 = *mut IMAGE_OPTIONAL_HEADER32; STRUCT!{struct IMAGE_ROM_OPTIONAL_HEADER { Magic: ::WORD, MajorLinkerVersion: ::BYTE, MinorLinkerVersion: ::BYTE, SizeOfCode: ::DWORD, SizeOfInitializedData: ::DWORD, SizeOfUninitializedData: ::DWORD, AddressOfEntryPoint: ::DWORD, BaseOfCode: ::DWORD, BaseOfData: ::DWORD, BaseOfBss: ::DWORD, GprMask: ::DWORD, CprMask: [::DWORD; 4], GpValue: ::DWORD, }} pub type PIMAGE_ROM_OPTIONAL_HEADER = *mut IMAGE_ROM_OPTIONAL_HEADER; STRUCT!{struct IMAGE_OPTIONAL_HEADER64 { Magic: ::WORD, MajorLinkerVersion: ::BYTE, MinorLinkerVersion: ::BYTE, SizeOfCode: ::DWORD, SizeOfInitializedData: ::DWORD, SizeOfUninitializedData: ::DWORD, AddressOfEntryPoint: ::DWORD, BaseOfCode: ::DWORD, ImageBase: ::ULONGLONG, SectionAlignment: ::DWORD, FileAlignment: ::DWORD, MajorOperatingSystemVersion: ::WORD, MinorOperatingSystemVersion: ::WORD, MajorImageVersion: ::WORD, MinorImageVersion: ::WORD, MajorSubsystemVersion: ::WORD, MinorSubsystemVersion: ::WORD, Win32VersionValue: ::DWORD, SizeOfImage: ::DWORD, SizeOfHeaders: ::DWORD, CheckSum: ::DWORD, Subsystem: ::WORD, DllCharacteristics: ::WORD, SizeOfStackReserve: ULONGLONG, SizeOfStackCommit: ULONGLONG, SizeOfHeapReserve: ULONGLONG, SizeOfHeapCommit: ULONGLONG, LoaderFlags: ::DWORD, NumberOfRvaAndSizes: ::DWORD, DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES], }} pub type PIMAGE_OPTIONAL_HEADER64 = *mut IMAGE_OPTIONAL_HEADER64; pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: ::WORD = 0x10b; pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: ::WORD = 0x20b; pub const IMAGE_ROM_OPTIONAL_HDR_MAGIC: ::WORD = 0x107; #[cfg(target_arch = "x86_64")] pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER64; #[cfg(target_arch = "x86_64")] pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER64; #[cfg(target_arch = "x86")] pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32; #[cfg(target_arch = "x86")] pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32; STRUCT!{struct IMAGE_NT_HEADERS64 { Signature: ::DWORD, FileHeader: IMAGE_FILE_HEADER, OptionalHeader: IMAGE_OPTIONAL_HEADER64, }} pub type PIMAGE_NT_HEADERS64 = *mut IMAGE_NT_HEADERS64; STRUCT!{struct IMAGE_NT_HEADERS32 { Signature: ::DWORD, FileHeader: IMAGE_FILE_HEADER, OptionalHeader: IMAGE_OPTIONAL_HEADER32, }} pub type PIMAGE_NT_HEADERS32 = *mut IMAGE_NT_HEADERS32; STRUCT!{struct IMAGE_ROM_HEADERS { FileHeader: IMAGE_FILE_HEADER, OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER, }} pub type PIMAGE_ROM_HEADERS = *mut IMAGE_ROM_HEADERS; #[cfg(target_arch = "x86_64")] pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS64; #[cfg(target_arch = "x86_64")] pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS64; #[cfg(target_arch = "x86")] pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32; #[cfg(target_arch = "x86")] pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32; pub const IMAGE_SUBSYSTEM_UNKNOWN: ::WORD = 0; pub const IMAGE_SUBSYSTEM_NATIVE: ::WORD = 1; pub const IMAGE_SUBSYSTEM_WINDOWS_GUI: ::WORD = 2; pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: ::WORD = 3; pub const IMAGE_SUBSYSTEM_OS2_CUI: ::WORD = 5; pub const IMAGE_SUBSYSTEM_POSIX_CUI: ::WORD = 7; pub const IMAGE_SUBSYSTEM_NATIVE_WINDOWS: ::WORD = 8; pub const IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: ::WORD = 9; pub const IMAGE_SUBSYSTEM_EFI_APPLICATION: ::WORD = 10; pub const IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER: ::WORD = 11; pub const IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER: ::WORD = 12; pub const IMAGE_SUBSYSTEM_EFI_ROM: ::WORD = 13; pub const IMAGE_SUBSYSTEM_XBOX: ::WORD = 14; pub const IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION: ::WORD = 16; pub const IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA: ::WORD = 0x0020; pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: ::WORD = 0x0040; pub const IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY: ::WORD = 0x0080; pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: ::WORD = 0x0100; pub const IMAGE_DLLCHARACTERISTICS_NO_ISOLATION: ::WORD = 0x0200; pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: ::WORD = 0x0400; pub const IMAGE_DLLCHARACTERISTICS_NO_BIND: ::WORD = 0x0800; pub const IMAGE_DLLCHARACTERISTICS_APPCONTAINER: ::WORD = 0x1000; pub const IMAGE_DLLCHARACTERISTICS_WDM_DRIVER: ::WORD = 0x2000; pub const IMAGE_DLLCHARACTERISTICS_GUARD_CF: ::WORD = 0x4000; pub const IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE: ::WORD = 0x8000; pub const IMAGE_DIRECTORY_ENTRY_EXPORT: ::WORD = 0; pub const IMAGE_DIRECTORY_ENTRY_IMPORT: ::WORD = 1; pub const IMAGE_DIRECTORY_ENTRY_RESOURCE: ::WORD = 2; pub const IMAGE_DIRECTORY_ENTRY_EXCEPTION: ::WORD = 3; pub const IMAGE_DIRECTORY_ENTRY_SECURITY: ::WORD = 4; pub const IMAGE_DIRECTORY_ENTRY_BASERELOC: ::WORD = 5; pub const IMAGE_DIRECTORY_ENTRY_DEBUG: ::WORD = 6; pub const IMAGE_DIRECTORY_ENTRY_ARCHITECTURE: ::WORD = 7; pub const IMAGE_DIRECTORY_ENTRY_GLOBALPTR: ::WORD = 8; pub const IMAGE_DIRECTORY_ENTRY_TLS: ::WORD = 9; pub const IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG: ::WORD = 10; pub const IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT: ::WORD = 11; pub const IMAGE_DIRECTORY_ENTRY_IAT: ::WORD = 12; pub const IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT: ::WORD = 13; pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: ::WORD = 14; STRUCT!{struct ANON_OBJECT_HEADER { Sig1: ::WORD, Sig2: ::WORD, Version: ::WORD, Machine: ::WORD, TimeDateStamp: ::DWORD, ClassID: ::CLSID, SizeOfData: ::DWORD, }} STRUCT!{struct ANON_OBJECT_HEADER_V2 { Sig1: ::WORD, Sig2: ::WORD, Version: ::WORD, Machine: ::WORD, TimeDateStamp: ::DWORD, ClassID: ::CLSID, SizeOfData: ::DWORD, Flags: ::DWORD, MetaDataSize: ::DWORD, MetaDataOffset: ::DWORD, }} STRUCT!{struct ANON_OBJECT_HEADER_BIGOBJ { Sig1: ::WORD, Sig2: ::WORD, Version: ::WORD, Machine: ::WORD, TimeDateStamp: ::DWORD, ClassID: ::CLSID, SizeOfData: ::DWORD, Flags: ::DWORD, MetaDataSize: ::DWORD, MetaDataOffset: ::DWORD, NumberOfSections: ::DWORD, PointerToSymbolTable: ::DWORD, NumberOfSymbols: ::DWORD, }} pub const IMAGE_SIZEOF_SHORT_NAME: usize = 8; STRUCT!{struct IMAGE_SECTION_HEADER { Name: [::BYTE; IMAGE_SIZEOF_SHORT_NAME], PhysicalAddressOrVirtualSize: ::DWORD, VirtualAddress: ::DWORD, SizeOfRawData: ::DWORD, PointerToRawData: ::DWORD, PointerToRelocations: ::DWORD, PointerToLinenumbers: ::DWORD, NumberOfRelocations: ::WORD, NumberOfLinenumbers: ::WORD, Characteristics: ::DWORD, }} pub type PIMAGE_SECTION_HEADER = *mut IMAGE_SECTION_HEADER; pub const IMAGE_SIZEOF_SECTION_HEADER: usize = 40; pub const IMAGE_SCN_TYPE_NO_PAD: ::DWORD = 0x00000008; pub const IMAGE_SCN_CNT_CODE: ::DWORD = 0x00000020; pub const IMAGE_SCN_CNT_INITIALIZED_DATA: ::DWORD = 0x00000040; pub const IMAGE_SCN_CNT_UNINITIALIZED_DATA: ::DWORD = 0x00000080; pub const IMAGE_SCN_LNK_OTHER: ::DWORD = 0x00000100; pub const IMAGE_SCN_LNK_INFO: ::DWORD = 0x00000200; pub const IMAGE_SCN_LNK_REMOVE: ::DWORD = 0x00000800; pub const IMAGE_SCN_LNK_COMDAT: ::DWORD = 0x00001000; pub const IMAGE_SCN_NO_DEFER_SPEC_EXC: ::DWORD = 0x00004000; pub const IMAGE_SCN_GPREL: ::DWORD = 0x00008000; pub const IMAGE_SCN_MEM_FARDATA: ::DWORD = 0x00008000; pub const IMAGE_SCN_MEM_PURGEABLE: ::DWORD = 0x00020000; pub const IMAGE_SCN_MEM_16BIT: ::DWORD = 0x00020000; pub const IMAGE_SCN_MEM_LOCKED: ::DWORD = 0x00040000; pub const IMAGE_SCN_MEM_PRELOAD: ::DWORD = 0x00080000; pub const IMAGE_SCN_ALIGN_1BYTES: ::DWORD = 0x00100000; pub const IMAGE_SCN_ALIGN_2BYTES: ::DWORD = 0x00200000; pub const IMAGE_SCN_ALIGN_4BYTES: ::DWORD = 0x00300000; pub const IMAGE_SCN_ALIGN_8BYTES: ::DWORD = 0x00400000; pub const IMAGE_SCN_ALIGN_16BYTES: ::DWORD = 0x00500000; pub const IMAGE_SCN_ALIGN_32BYTES: ::DWORD = 0x00600000; pub const IMAGE_SCN_ALIGN_64BYTES: ::DWORD = 0x00700000; pub const IMAGE_SCN_ALIGN_128BYTES: ::DWORD = 0x00800000; pub const IMAGE_SCN_ALIGN_256BYTES: ::DWORD = 0x00900000; pub const IMAGE_SCN_ALIGN_512BYTES: ::DWORD = 0x00A00000; pub const IMAGE_SCN_ALIGN_1024BYTES: ::DWORD = 0x00B00000; pub const IMAGE_SCN_ALIGN_2048BYTES: ::DWORD = 0x00C00000; pub const IMAGE_SCN_ALIGN_4096BYTES: ::DWORD = 0x00D00000; pub const IMAGE_SCN_ALIGN_8192BYTES: ::DWORD = 0x00E00000; pub const IMAGE_SCN_ALIGN_MASK: ::DWORD = 0x00F00000; pub const IMAGE_SCN_LNK_NRELOC_OVFL: ::DWORD = 0x01000000; pub const IMAGE_SCN_MEM_DISCARDABLE: ::DWORD = 0x02000000; pub const IMAGE_SCN_MEM_NOT_CACHED: ::DWORD = 0x04000000; pub const IMAGE_SCN_MEM_NOT_PAGED: ::DWORD = 0x08000000; pub const IMAGE_SCN_MEM_SHARED: ::DWORD = 0x10000000; pub const IMAGE_SCN_MEM_EXECUTE: ::DWORD = 0x20000000; pub const IMAGE_SCN_MEM_READ: ::DWORD = 0x40000000; pub const IMAGE_SCN_MEM_WRITE: ::DWORD = 0x80000000; pub const IMAGE_SCN_SCALE_INDEX: ::DWORD = 0x00000001; //16590 STRUCT!{struct IMAGE_DEBUG_DIRECTORY { Characteristics: ::DWORD, TimeDateStamp: ::DWORD, MajorVersion: ::WORD, MinorVersion: ::WORD, Type: ::DWORD, SizeOfData: ::DWORD, AddressOfRawData: ::DWORD, PointerToRawData: ::DWORD, }} pub type PIMAGE_DEBUG_DIRECTORY = *mut IMAGE_DEBUG_DIRECTORY; pub const IMAGE_DEBUG_TYPE_UNKNOWN: ::DWORD = 0; pub const IMAGE_DEBUG_TYPE_COFF: ::DWORD = 1; pub const IMAGE_DEBUG_TYPE_CODEVIEW: ::DWORD = 2; pub const IMAGE_DEBUG_TYPE_FPO: ::DWORD = 3; pub const IMAGE_DEBUG_TYPE_MISC: ::DWORD = 4; pub const IMAGE_DEBUG_TYPE_EXCEPTION: ::DWORD = 5; pub const IMAGE_DEBUG_TYPE_FIXUP: ::DWORD = 6; pub const IMAGE_DEBUG_TYPE_OMAP_TO_SRC: ::DWORD = 7; pub const IMAGE_DEBUG_TYPE_OMAP_FROM_SRC: ::DWORD = 8; pub const IMAGE_DEBUG_TYPE_BORLAND: ::DWORD = 9; pub const IMAGE_DEBUG_TYPE_RESERVED10: ::DWORD = 10; pub const IMAGE_DEBUG_TYPE_CLSID: ::DWORD = 11; STRUCT!{struct IMAGE_COFF_SYMBOLS_HEADER { NumberOfSymbols: ::DWORD, LvaToFirstSymbol: ::DWORD, NumberOfLinenumbers: ::DWORD, LvaToFirstLinenumber: ::DWORD, RvaToFirstByteOfCode: ::DWORD, RvaToLastByteOfCode: ::DWORD, RvaToFirstByteOfData: ::DWORD, RvaToLastByteOfData: ::DWORD, }} pub type PIMAGE_COFF_SYMBOLS_HEADER = *mut IMAGE_COFF_SYMBOLS_HEADER; STRUCT!{struct IMAGE_RUNTIME_FUNCTION_ENTRY { BeginAddress: ::DWORD, EndAddress: ::DWORD, UnwindInfoAddress: ::DWORD, }} UNION!(IMAGE_RUNTIME_FUNCTION_ENTRY, UnwindInfoAddress, UnwindData, UnwindData_mut, ::DWORD); pub type PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut IMAGE_RUNTIME_FUNCTION_ENTRY; pub const FRAME_FPO: ::WORD = 0; pub const FRAME_TRAP: ::WORD = 1; pub const FRAME_TSS: ::WORD = 2; pub const FRAME_NONFPO: ::WORD = 3; STRUCT!{struct FPO_DATA { ulOffStart: ::DWORD, cbProcSize: ::DWORD, cdwLocals: ::DWORD, cdwParams: ::WORD, bitfield: ::WORD, }} pub type PFPO_DATA = *mut FPO_DATA; pub const SIZEOF_RFPO_DATA: usize = 16; pub const IMAGE_DEBUG_MISC_EXENAME: ::DWORD = 1; STRUCT!{struct IMAGE_DEBUG_MISC { DataType: ::DWORD, Length: ::DWORD, Unicode: ::BOOLEAN, Reserved: [::BYTE; 3], Data: [::BYTE; 0], }} pub type PIMAGE_DEBUG_MISC = *mut IMAGE_DEBUG_MISC; STRUCT!{struct IMAGE_FUNCTION_ENTRY { StartingAddress: ::DWORD, EndingAddress: ::DWORD, EndOfPrologue: ::DWORD, }} pub type PIMAGE_FUNCTION_ENTRY = *mut IMAGE_FUNCTION_ENTRY; STRUCT!{struct IMAGE_FUNCTION_ENTRY64 { StartingAddress: ::ULONGLONG, EndingAddress: ::ULONGLONG, EndOfPrologueOrUnwindInfoAddress: ::ULONGLONG, }} pub type PIMAGE_FUNCTION_ENTRY64 = *mut IMAGE_FUNCTION_ENTRY64; //18245 pub const HEAP_NO_SERIALIZE: ::DWORD = 0x00000001; pub const HEAP_GROWABLE: ::DWORD = 0x00000002; pub const HEAP_GENERATE_EXCEPTIONS: ::DWORD = 0x00000004; pub const HEAP_ZERO_MEMORY: ::DWORD = 0x00000008; pub const HEAP_REALLOC_IN_PLACE_ONLY: ::DWORD = 0x00000010; pub const HEAP_TAIL_CHECKING_ENABLED: ::DWORD = 0x00000020; pub const HEAP_FREE_CHECKING_ENABLED: ::DWORD = 0x00000040; pub const HEAP_DISABLE_COALESCE_ON_FREE: ::DWORD = 0x00000080; pub const HEAP_CREATE_ALIGN_16: ::DWORD = 0x00010000; pub const HEAP_CREATE_ENABLE_TRACING: ::DWORD = 0x00020000; pub const HEAP_CREATE_ENABLE_EXECUTE: ::DWORD = 0x00040000; pub const HEAP_MAXIMUM_TAG: ::DWORD = 0x0FFF; pub const HEAP_PSEUDO_TAG_FLAG: ::DWORD = 0x8000; pub const HEAP_TAG_SHIFT: ::DWORD = 18; //18145 STRUCT!{struct RTL_CRITICAL_SECTION_DEBUG { Type: ::WORD, CreatorBackTraceIndex: ::WORD, CriticalSection: *mut ::RTL_CRITICAL_SECTION, ProcessLocksList: ::LIST_ENTRY, EntryCount: ::DWORD, ContentionCount: ::DWORD, Flags: ::DWORD, CreatorBackTraceIndexHigh: ::WORD, SpareWORD: ::WORD, }} pub type PRTL_CRITICAL_SECTION_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG; pub type RTL_RESOURCE_DEBUG = RTL_CRITICAL_SECTION_DEBUG; pub type PRTL_RESOURCE_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG; pub const RTL_CRITSECT_TYPE: ::WORD = 0; pub const RTL_RESOURCE_TYPE: ::WORD = 1; pub const RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO: ::ULONG_PTR = 0x01000000; pub const RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN: ::ULONG_PTR = 0x02000000; pub const RTL_CRITICAL_SECTION_FLAG_STATIC_INIT: ::ULONG_PTR = 0x04000000; pub const RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE: ::ULONG_PTR = 0x08000000; pub const RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO: ::ULONG_PTR = 0x10000000; pub const RTL_CRITICAL_SECTION_ALL_FLAG_BITS: ::ULONG_PTR = 0xFF000000; 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); pub const RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT: ::DWORD = 0x00000001; STRUCT!{struct RTL_CRITICAL_SECTION { DebugInfo: ::PRTL_CRITICAL_SECTION_DEBUG, LockCount: ::LONG, RecursionCount: ::LONG, OwningThread: ::HANDLE, LockSemaphore: ::HANDLE, SpinCount: ::ULONG_PTR, }} pub type PRTL_CRITICAL_SECTION = *mut RTL_CRITICAL_SECTION; STRUCT!{struct RTL_SRWLOCK { Ptr: ::PVOID, }} pub type PRTL_SRWLOCK = *mut RTL_SRWLOCK; pub const RTL_SRWLOCK_INIT: RTL_SRWLOCK = RTL_SRWLOCK { Ptr: 0 as PVOID }; STRUCT!{struct RTL_CONDITION_VARIABLE { Ptr: ::PVOID, }} pub type PRTL_CONDITION_VARIABLE = *mut RTL_CONDITION_VARIABLE; pub const RTL_CONDITION_VARIABLE_INIT: RTL_CONDITION_VARIABLE = RTL_CONDITION_VARIABLE { Ptr: 0 as PVOID }; //18204 pub type PAPCFUNC = Option; pub type PVECTORED_EXCEPTION_HANDLER = Option ::LONG>; ENUM!{enum HEAP_INFORMATION_CLASS { HeapCompatibilityInformation = 0, HeapEnableTerminationOnCorruption = 1, HeapOptimizeResources = 3, }} //pub use self::HEAP_INFORMATION_CLASS::*; pub const HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION: ::DWORD = 1; STRUCT!{struct HEAP_OPTIMIZE_RESOURCES_INFORMATION { Version: ::DWORD, Flags: ::DWORD, }} pub type PHEAP_OPTIMIZE_RESOURCES_INFORMATION = *mut HEAP_OPTIMIZE_RESOURCES_INFORMATION; pub const WT_EXECUTEDEFAULT: ::ULONG = 0x00000000; pub const WT_EXECUTEINIOTHREAD: ::ULONG = 0x00000001; pub const WT_EXECUTEINUITHREAD: ::ULONG = 0x00000002; pub const WT_EXECUTEINWAITTHREAD: ::ULONG = 0x00000004; pub const WT_EXECUTEONLYONCE: ::ULONG = 0x00000008; pub const WT_EXECUTEINTIMERTHREAD: ::ULONG = 0x00000020; pub const WT_EXECUTELONGFUNCTION: ::ULONG = 0x00000010; pub const WT_EXECUTEINPERSISTENTIOTHREAD: ::ULONG = 0x00000040; pub const WT_EXECUTEINPERSISTENTTHREAD: ::ULONG = 0x00000080; pub const WT_TRANSFER_IMPERSONATION: ::ULONG = 0x00000100; pub type WAITORTIMERCALLBACKFUNC = Option; pub type WORKERCALLBACKFUNC = Option; pub type APC_CALLBACK_FUNCTION = Option; pub type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC; pub type PFLS_CALLBACK_FUNCTION = Option; pub type PSECURE_MEMORY_CACHE_CALLBACK = Option ::BOOLEAN>; pub const WT_EXECUTEINLONGTHREAD: ::ULONG = 0x00000010; pub const WT_EXECUTEDELETEWAIT: ::ULONG = 0x00000008; //18570 pub const KEY_QUERY_VALUE: ::REGSAM = 0x0001; pub const KEY_SET_VALUE: ::REGSAM = 0x0002; pub const KEY_CREATE_SUB_KEY: ::REGSAM = 0x0004; pub const KEY_ENUMERATE_SUB_KEYS: ::REGSAM = 0x0008; pub const KEY_NOTIFY: ::REGSAM = 0x0010; pub const KEY_CREATE_LINK: ::REGSAM = 0x0020; pub const KEY_WOW64_32KEY: ::REGSAM = 0x0200; pub const KEY_WOW64_64KEY: ::REGSAM = 0x0100; pub const KEY_WOW64_RES: ::REGSAM = 0x0300; pub const KEY_READ: ::REGSAM = ( STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY ) & (!SYNCHRONIZE); pub const KEY_WRITE: ::REGSAM = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (!SYNCHRONIZE); pub const KEY_EXECUTE: ::REGSAM = KEY_READ & (!SYNCHRONIZE); pub const KEY_ALL_ACCESS: ::REGSAM = ( STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK ) & (!SYNCHRONIZE); pub const REG_CREATED_NEW_KEY: ::DWORD = 0x00000001; pub const REG_OPENED_EXISTING_KEY: ::DWORD = 0x00000002; pub const REG_NOTIFY_CHANGE_NAME: ::DWORD = 0x00000001; pub const REG_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000002; pub const REG_NOTIFY_CHANGE_LAST_SET: ::DWORD = 0x00000004; pub const REG_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000008; pub const REG_LEGAL_CHANGE_FILTER: ::DWORD = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY; pub const REG_NOTIFY_THREAD_AGNOSTIC: ::DWORD = 0x10000000; //supported only on Windows 8 and later pub const REG_OPTION_RESERVED: ::DWORD = 0x00000000; pub const REG_OPTION_NON_VOLATILE: ::DWORD = 0x00000000; pub const REG_OPTION_VOLATILE: ::DWORD = 0x00000001; pub const REG_OPTION_CREATE_LINK: ::DWORD = 0x00000002; pub const REG_OPTION_BACKUP_RESTORE: ::DWORD = 0x00000004; pub const REG_OPTION_OPEN_LINK: ::DWORD = 0x00000008; pub const REG_NONE: ::DWORD = 0; pub const REG_SZ: ::DWORD = 1; pub const REG_EXPAND_SZ: ::DWORD = 2; pub const REG_BINARY: ::DWORD = 3; pub const REG_DWORD: ::DWORD = 4; pub const REG_DWORD_LITTLE_ENDIAN: ::DWORD = 4; pub const REG_DWORD_BIG_ENDIAN: ::DWORD = 5; pub const REG_LINK: ::DWORD = 6; pub const REG_MULTI_SZ: ::DWORD = 7; pub const REG_RESOURCE_LIST: ::DWORD = 8; pub const REG_FULL_RESOURCE_DESCRIPTOR: ::DWORD = 9; pub const REG_RESOURCE_REQUIREMENTS_LIST: ::DWORD = 10; pub const REG_QWORD: ::DWORD = 11; pub const REG_QWORD_LITTLE_ENDIAN: ::DWORD = 11; //18720 pub const SERVICE_KERNEL_DRIVER: ::DWORD = 0x00000001; pub const SERVICE_FILE_SYSTEM_DRIVER: ::DWORD = 0x00000002; pub const SERVICE_ADAPTER: ::DWORD = 0x00000004; pub const SERVICE_RECOGNIZER_DRIVER: ::DWORD = 0x00000008; pub const SERVICE_DRIVER: ::DWORD = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER; pub const SERVICE_WIN32_OWN_PROCESS: ::DWORD = 0x00000010; pub const SERVICE_WIN32_SHARE_PROCESS: ::DWORD = 0x00000020; pub const SERVICE_WIN32: ::DWORD = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS; pub const SERVICE_INTERACTIVE_PROCESS: ::DWORD = 0x00000100; pub const SERVICE_TYPE_ALL: ::DWORD = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS; STRUCT!{struct TP_CALLBACK_INSTANCE { dummy: *mut ::c_void, }} pub type PTP_CALLBACK_INSTANCE = *mut TP_CALLBACK_INSTANCE; STRUCT!{struct TP_IO { dummy: *mut ::c_void, }} pub type PTP_IO = *mut TP_IO; STRUCT!{struct TP_POOL { dummy: *mut ::c_void, }} pub type PTP_POOL = *mut TP_POOL; STRUCT!{struct TP_CLEANUP_GROUP { dummy: *mut ::c_void, }} pub type PTP_CLEANUP_GROUP = *mut TP_CLEANUP_GROUP; STRUCT!{struct TP_TIMER { dummy: *mut ::c_void, }} pub type PTP_TIMER = *mut TP_TIMER; STRUCT!{struct TP_WAIT { dummy: *mut ::c_void, }} pub type PTP_WAIT = *mut TP_WAIT; STRUCT!{struct TP_WORK { dummy: *mut ::c_void, }} pub type PTP_WORK = *mut TP_WORK; STRUCT!{struct ACTIVATION_CONTEXT { dummy: *mut ::c_void, }} ENUM!{enum TP_CALLBACK_PRIORITY { TP_CALLBACK_PRIORITY_HIGH, TP_CALLBACK_PRIORITY_NORMAL, TP_CALLBACK_PRIORITY_LOW, TP_CALLBACK_PRIORITY_INVALID, TP_CALLBACK_PRIORITY_COUNT = 4, }} pub type PTP_CLEANUP_GROUP_CANCEL_CALLBACK = Option; pub type PTP_SIMPLE_CALLBACK = Option; pub type PTP_WORK_CALLBACK = Option; pub type PTP_TIMER_CALLBACK = Option; pub type TP_WAIT_RESULT = ::DWORD; pub type PTP_WAIT_CALLBACK = Option; pub type TP_VERSION = ::DWORD; pub type PTP_VERSION = *mut ::DWORD; STRUCT!{struct TP_POOL_STACK_INFORMATION { StackReserve: ::SIZE_T, StackCommit: ::SIZE_T, }} pub type PTP_POOL_STACK_INFORMATION = *mut TP_POOL_STACK_INFORMATION; STRUCT!{struct TP_CALLBACK_ENVIRON_V3_s { BitFields: ::DWORD, }} BITFIELD!(TP_CALLBACK_ENVIRON_V3_s BitFields: ::DWORD [ LongFunction set_LongFunction[0..1], Persistent set_Persistent[1..2], Private set_Private[2..32], ]); STRUCT!{nodebug struct TP_CALLBACK_ENVIRON_V3 { Version: TP_VERSION, Pool: PTP_POOL, CleanupGroup: PTP_CLEANUP_GROUP, CleanupGroupCancelCallback: PTP_CLEANUP_GROUP_CANCEL_CALLBACK, RaceDll: ::PVOID, ActivationContext: *mut ACTIVATION_CONTEXT, FinalizationCallback: PTP_SIMPLE_CALLBACK, u: ::DWORD, CallbackPriority: TP_CALLBACK_PRIORITY, Size: ::DWORD, }} UNION!(TP_CALLBACK_ENVIRON_V3, u, Flags, Flags_mut, ::DWORD); UNION!(TP_CALLBACK_ENVIRON_V3, u, s, s_mut, TP_CALLBACK_ENVIRON_V3_s); pub type TP_CALLBACK_ENVIRON = TP_CALLBACK_ENVIRON_V3; pub type PTP_CALLBACK_ENVIRON = *mut TP_CALLBACK_ENVIRON_V3; STRUCT!{struct JOB_SET_ARRAY { JobHandle: ::HANDLE, MemberLevel: ::DWORD, Flags: ::DWORD, }} pub type PJOB_SET_ARRAY = *mut JOB_SET_ARRAY; STRUCT!{struct RTL_BARRIER { Reserved1: ::DWORD, Reserved2: ::DWORD, Reserved3: [::ULONG_PTR; 2], Reserved4: ::DWORD, Reserved5: ::DWORD, }} pub type PRTL_BARRIER = *mut RTL_BARRIER; STRUCT!{struct RTL_RUN_ONCE { Ptr: ::PVOID, }} pub type PRTL_RUN_ONCE = *mut RTL_RUN_ONCE; ENUM!{enum RTL_UMS_THREAD_INFO_CLASS { UmsThreadInvalidInfoClass = 0, UmsThreadUserContext, UmsThreadPriority, // Reserved UmsThreadAffinity, // Reserved UmsThreadTeb, UmsThreadIsSuspended, UmsThreadIsTerminated, UmsThreadMaxInfoClass, }} ENUM!{enum RTL_UMS_SCHEDULER_REASON { UmsSchedulerStartup = 0, UmsSchedulerThreadBlocked, UmsSchedulerThreadYield, }} pub type PRTL_UMS_SCHEDULER_ENTRY_POINT = Option; ENUM!{enum FIRMWARE_TYPE { FirmwareTypeUnknown, FirmwareTypeBios, FirmwareTypeUefi, FirmwareTypeMax, }} pub type PFIRMWARE_TYPE = *mut FIRMWARE_TYPE; ENUM!{enum LOGICAL_PROCESSOR_RELATIONSHIP { RelationProcessorCore, RelationNumaNode, RelationCache, RelationProcessorPackage, RelationGroup, RelationAll = 0xffff, }} ENUM!{enum PROCESSOR_CACHE_TYPE { CacheUnified, CacheInstruction, CacheData, CacheTrace, }} STRUCT!{struct CACHE_DESCRIPTOR { Level: ::BYTE, Associativity: ::BYTE, LineSize: ::WORD, Size: ::DWORD, Type: PROCESSOR_CACHE_TYPE, }} pub type PCACHE_DESCRIPTOR = *mut CACHE_DESCRIPTOR; STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore { Flags: ::BYTE, }} STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode { NodeNumber: ::DWORD, }} STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION { ProcessorMask: ::ULONG_PTR, Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, Reserved: [::ULONGLONG; 2], }} UNION!( SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, ProcessorCore, ProcessorCore_mut, SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore ); UNION!( SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, NumaNode, NumaNode_mut, SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode ); UNION!(SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, Cache, Cache_mut, CACHE_DESCRIPTOR); pub type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = *mut SYSTEM_LOGICAL_PROCESSOR_INFORMATION; STRUCT!{struct SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { CycleTime: ::DWORD64, }} pub type PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = *mut SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION; ENUM!{enum HARDWARE_COUNTER_TYPE { PMCCounter, MaxHardwareCounterType, }} pub type PHARDWARE_COUNTER_TYPE = *mut HARDWARE_COUNTER_TYPE; ENUM!{enum PROCESS_MITIGATION_POLICY { ProcessDEPPolicy, ProcessASLRPolicy, ProcessDynamicCodePolicy, ProcessStrictHandleCheckPolicy, ProcessSystemCallDisablePolicy, ProcessMitigationOptionsMask, ProcessExtensionPointDisablePolicy, ProcessReserved1Policy, ProcessSignaturePolicy, MaxProcessMitigationPolicy, }} STRUCT!{nodebug struct OSVERSIONINFOA { dwOSVersionInfoSize: ::DWORD, dwMajorVersion: ::DWORD, dwMinorVersion: ::DWORD, dwBuildNumber: ::DWORD, dwPlatformId: ::DWORD, szCSDVersion: [::CHAR; 128], }} pub type POSVERSIONINFOA = *mut OSVERSIONINFOA; pub type LPOSVERSIONINFOA = *mut OSVERSIONINFOA; STRUCT!{nodebug struct OSVERSIONINFOW { dwOSVersionInfoSize: ::DWORD, dwMajorVersion: ::DWORD, dwMinorVersion: ::DWORD, dwBuildNumber: ::DWORD, dwPlatformId: ::DWORD, szCSDVersion: [::WCHAR; 128], }} pub type POSVERSIONINFOW = *mut OSVERSIONINFOW; pub type LPOSVERSIONINFOW = *mut OSVERSIONINFOW; STRUCT!{nodebug struct OSVERSIONINFOEXA { dwOSVersionInfoSize: ::DWORD, dwMajorVersion: ::DWORD, dwMinorVersion: ::DWORD, dwBuildNumber: ::DWORD, dwPlatformId: ::DWORD, szCSDVersion: [::CHAR; 128], wServicePackMajor: ::WORD, wServicePackMinor: ::WORD, wSuiteMask: ::WORD, wProductType: ::BYTE, wReserved: ::BYTE, }} pub type POSVERSIONINFOEXA = *mut OSVERSIONINFOEXA; pub type LPOSVERSIONINFOEXA = *mut OSVERSIONINFOEXA; STRUCT!{nodebug struct OSVERSIONINFOEXW { dwOSVersionInfoSize: ::DWORD, dwMajorVersion: ::DWORD, dwMinorVersion: ::DWORD, dwBuildNumber: ::DWORD, dwPlatformId: ::DWORD, szCSDVersion: [::WCHAR; 128], wServicePackMajor: ::WORD, wServicePackMinor: ::WORD, wSuiteMask: ::WORD, wProductType: ::BYTE, wReserved: ::BYTE, }} pub type POSVERSIONINFOEXW = *mut OSVERSIONINFOEXW; pub type LPOSVERSIONINFOEXW = *mut OSVERSIONINFOEXW; STRUCT!{struct SLIST_ENTRY { Next: *mut SLIST_ENTRY, }} pub type PSLIST_ENTRY = *mut SLIST_ENTRY; STRUCT!{struct SLIST_HEADER_HeaderX64 { BitFields1: ::ULONGLONG, BitFields2: ::ULONGLONG, }} BITFIELD!(SLIST_HEADER_HeaderX64 BitFields1: ::ULONGLONG [ Depth set_Depth[0..16], Sequence set_Sequence[16..64], ]); BITFIELD!(SLIST_HEADER_HeaderX64 BitFields2: ::ULONGLONG [ Reserved set_Reserved[0..4], NextEntry set_NextEntry[4..64], ]); STRUCT!{struct SLIST_HEADER { Alignment: ::ULONGLONG, Region: ::ULONGLONG, }} UNION!(SLIST_HEADER, Alignment, HeaderX64, HeaderX64_mut, SLIST_HEADER_HeaderX64); pub type PSLIST_HEADER = *mut SLIST_HEADER; ENUM!{enum SYSTEM_POWER_STATE { PowerSystemUnspecified = 0, PowerSystemWorking = 1, PowerSystemSleeping1 = 2, PowerSystemSleeping2 = 3, PowerSystemSleeping3 = 4, PowerSystemHibernate = 5, PowerSystemShutdown = 6, PowerSystemMaximum = 7, }} pub type PSYSTEM_POWER_STATE = *mut SYSTEM_POWER_STATE; ENUM!{enum POWER_ACTION { PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate, PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff, PowerActionWarmEject, }} pub type PPOWER_ACTION = *mut POWER_ACTION; ENUM!{enum DEVICE_POWER_STATE { PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3, PowerDeviceMaximum, }} pub type PDEVICE_POWER_STATE = *mut DEVICE_POWER_STATE; ENUM!{enum MONITOR_DISPLAY_STATE { PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim, }} pub type PMONITOR_DISPLAY_STATE = *mut MONITOR_DISPLAY_STATE; ENUM!{enum USER_ACTIVITY_PRESENCE { PowerUserPresent = 0, PowerUserNotPresent, PowerUserInactive, PowerUserMaximum, //PowerUserInvalid = 3, }} pub type PUSER_ACTIVITY_PRESENCE = *mut USER_ACTIVITY_PRESENCE; pub type EXECUTION_STATE = ::DWORD; pub type PEXECUTION_STATE = *mut ::DWORD; ENUM!{enum LATENCY_TIME { LT_DONT_CARE, LT_LOWEST_LATENCY, }} ENUM!{enum POWER_REQUEST_TYPE { PowerRequestDisplayRequired, PowerRequestSystemRequired, PowerRequestAwayModeRequired, PowerRequestExecutionRequired, }} pub type PPOWER_REQUEST_TYPE = *mut POWER_REQUEST_TYPE; pub const MAX_HW_COUNTERS: usize = 16; STRUCT!{struct HARDWARE_COUNTER_DATA { Type: HARDWARE_COUNTER_TYPE, Reserved: ::DWORD, Value: ::DWORD64, }} pub type PHARDWARE_COUNTER_DATA = *mut HARDWARE_COUNTER_DATA; STRUCT!{struct PERFORMANCE_DATA { Size: ::WORD, Version: ::BYTE, HwCountersCount: ::BYTE, ContextSwitchCount: ::DWORD, WaitReasonBitMap: ::DWORD64, CycleTime: ::DWORD64, RetryCount: ::DWORD, Reserved: ::DWORD, HwCounters: [HARDWARE_COUNTER_DATA; MAX_HW_COUNTERS], }} pub type PPERFORMANCE_DATA = *mut PERFORMANCE_DATA; STRUCT!{struct MEMORY_BASIC_INFORMATION { BaseAddress: ::PVOID, AllocationBase: ::PVOID, AllocationProtect: ::DWORD, RegionSize: ::SIZE_T, State: ::DWORD, Protect: ::DWORD, Type: ::DWORD, }} pub type PMEMORY_BASIC_INFORMATION = *mut MEMORY_BASIC_INFORMATION; STRUCT!{struct MEMORY_BASIC_INFORMATION32 { BaseAddress: ::DWORD, AllocationBase: ::DWORD, AllocationProtect: ::DWORD, RegionSize: ::DWORD, State: ::DWORD, Protect: ::DWORD, Type: ::DWORD, }} pub type PMEMORY_BASIC_INFORMATION32 = *mut MEMORY_BASIC_INFORMATION32; STRUCT!{struct MEMORY_BASIC_INFORMATION64 { // FIXME: align 16 BaseAddress: ::ULONGLONG, AllocationBase: ::ULONGLONG, AllocationProtect: ::DWORD, __alignment1: ::DWORD, RegionSize: ::ULONGLONG, State: ::DWORD, Protect: ::DWORD, Type: ::DWORD, __alignment2: ::DWORD, }} pub type PMEMORY_BASIC_INFORMATION64 = *mut MEMORY_BASIC_INFORMATION64; pub const WOW64_SIZE_OF_80387_REGISTERS: usize = 80; pub const WOW64_MAXIMUM_SUPPORTED_EXTENSION: usize = 512; STRUCT!{nodebug struct WOW64_FLOATING_SAVE_AREA { ControlWord: ::DWORD, StatusWord: ::DWORD, TagWord: ::DWORD, ErrorOffset: ::DWORD, ErrorSelector: ::DWORD, DataOffset: ::DWORD, DataSelector: ::DWORD, RegisterArea: [::BYTE; WOW64_SIZE_OF_80387_REGISTERS], Cr0NpxState: ::DWORD, }} pub type PWOW64_FLOATING_SAVE_AREA = *mut WOW64_FLOATING_SAVE_AREA; STRUCT!{nodebug struct WOW64_CONTEXT { ContextFlags: ::DWORD, Dr0: ::DWORD, Dr1: ::DWORD, Dr2: ::DWORD, Dr3: ::DWORD, Dr4: ::DWORD, Dr5: ::DWORD, Dr6: ::DWORD, Dr7: ::DWORD, FloatSave: WOW64_FLOATING_SAVE_AREA, SegGs: ::DWORD, SegFs: ::DWORD, SegEs: ::DWORD, SegDs: ::DWORD, Edi: ::DWORD, Esi: ::DWORD, Ebx: ::DWORD, Edx: ::DWORD, Ecx: ::DWORD, Eax: ::DWORD, Ebp: ::DWORD, Eip: ::DWORD, SegCs: ::DWORD, EFlags: ::DWORD, Esp: ::DWORD, SegSs: ::DWORD, ExtendedRegisters: [::BYTE; WOW64_MAXIMUM_SUPPORTED_EXTENSION], }} pub type PWOW64_CONTEXT = *mut WOW64_CONTEXT; STRUCT!{struct WOW64_LDT_ENTRY_Bytes { BaseMid: ::BYTE, Flags1: ::BYTE, Flags2: ::BYTE, BaseHi: ::BYTE, }} STRUCT!{struct WOW64_LDT_ENTRY_Bits { BitFields: ::DWORD, }} BITFIELD!(WOW64_LDT_ENTRY_Bits BitFields: ::DWORD [ BaseMid set_BaseMid[0..8], Type set_Type[8..13], Dpl set_Dpl[13..15], Pres set_Pres[15..16], LimitHi set_LimitHi[16..20], Sys set_Sys[20..21], Reserved_0 set_Reserved_0[21..22], Default_Big set_Default_Big[22..23], Granularity set_Granularity[23..24], BaseHi set_BaseHi[24..32], ]); STRUCT!{struct WOW64_LDT_ENTRY { LimitLow: ::WORD, BaseLow: ::WORD, HighWord: ::DWORD, }} UNION!(WOW64_LDT_ENTRY, HighWord, Bytes, Bytes_mut, WOW64_LDT_ENTRY_Bytes); UNION!(WOW64_LDT_ENTRY, HighWord, Bits, Bits_mut, WOW64_LDT_ENTRY_Bits); pub type PWOW64_LDT_ENTRY = *mut WOW64_LDT_ENTRY;