mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-14 14:26:04 +00:00
2369 lines
90 KiB
Rust
2369 lines
90 KiB
Rust
// Copyright © 2015, Peter Atashian
|
|
// Licensed under the MIT License <LICENSE.md>
|
|
//! 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<unsafe extern "system" fn(
|
|
ExceptionRecord: *mut EXCEPTION_RECORD, EstablisherFrame: PVOID, ContextRecord: *mut CONTEXT,
|
|
DispatcherContext: PVOID,
|
|
) -> ::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::<CONTEXT>(), 1232)
|
|
} else if cfg!(target_arch = "x86") {
|
|
assert_eq!(size_of::<CONTEXT>(), 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<unsafe extern "system" fn(
|
|
ControlPc: ::DWORD64, Context: ::PVOID,
|
|
) -> 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<unsafe extern "system" fn(Parameter: ::ULONG_PTR)>;
|
|
pub type PVECTORED_EXCEPTION_HANDLER = Option<unsafe extern "system" fn(
|
|
ExceptionInfo: *mut EXCEPTION_POINTERS,
|
|
) -> ::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<unsafe extern "system" fn(::PVOID, ::BOOLEAN)>;
|
|
pub type WORKERCALLBACKFUNC = Option<unsafe extern "system" fn(::PVOID)>;
|
|
pub type APC_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(::DWORD, ::PVOID, ::PVOID)>;
|
|
pub type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
|
|
pub type PFLS_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(lpFlsData: ::PVOID)>;
|
|
pub type PSECURE_MEMORY_CACHE_CALLBACK = Option<unsafe extern "system" fn(
|
|
Addr: ::PVOID, Range: ::SIZE_T,
|
|
) -> ::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<unsafe extern "system" fn(
|
|
ObjectContext: ::PVOID, CleanupContext: ::PVOID,
|
|
)>;
|
|
pub type PTP_SIMPLE_CALLBACK = Option<unsafe extern "system" fn(
|
|
Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID,
|
|
)>;
|
|
pub type PTP_WORK_CALLBACK = Option<unsafe extern "system" fn(
|
|
Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Work: PTP_WORK,
|
|
)>;
|
|
pub type PTP_TIMER_CALLBACK = Option<unsafe extern "system" fn(
|
|
Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Timer: PTP_TIMER,
|
|
)>;
|
|
pub type TP_WAIT_RESULT = ::DWORD;
|
|
pub type PTP_WAIT_CALLBACK = Option<unsafe extern "system" fn(
|
|
Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Wait: PTP_WAIT, WaitResult: TP_WAIT_RESULT,
|
|
)>;
|
|
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<unsafe extern "system" fn(
|
|
Reason: RTL_UMS_SCHEDULER_REASON, ActivationPayload: ::ULONG_PTR, SchedulerParam: ::PVOID,
|
|
)>;
|
|
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;
|