| /** |
| * Windows API header module |
| * |
| * Translated from MinGW API for MS-Windows 3.12 |
| * |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) |
| * Source: $(DRUNTIMESRC src/core/sys/windows/_winnt.d) |
| */ |
| module core.sys.windows.winnt; |
| version (Windows): |
| @system: |
| |
| version (ANSI) {} else version = Unicode; |
| |
| public import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winerror; |
| import core.sys.windows.w32api; |
| |
| /* Translation Notes: |
| The following macros are unneeded for D: |
| FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) |
| */ |
| |
| alias void VOID; |
| alias char CHAR, CCHAR; |
| alias wchar WCHAR; |
| alias bool BOOLEAN; |
| alias byte FCHAR; |
| alias ubyte UCHAR; |
| alias short SHORT; |
| alias ushort LANGID, FSHORT; |
| alias uint LCID, FLONG, ACCESS_MASK; |
| alias long LONGLONG, USN; |
| alias ulong DWORDLONG, ULONGLONG; |
| |
| alias void* PVOID, LPVOID; |
| alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; |
| alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; |
| alias bool* PBOOLEAN; |
| alias ubyte* PUCHAR; |
| alias short* PSHORT; |
| alias int* PLONG; |
| alias uint* PLCID, PACCESS_MASK; |
| alias long* PLONGLONG; |
| alias ulong* PDWORDLONG, PULONGLONG; |
| |
| // FIXME(MinGW) for __WIN64 |
| alias void* PVOID64; |
| |
| // const versions |
| alias const(char)* PCCH, LPCCH, PCSTR, LPCSTR; |
| alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; |
| |
| alias PSTR* PZPSTR; |
| alias PWSTR* PZPWSTR; |
| |
| version (Unicode) { |
| alias WCHAR TCHAR, _TCHAR; |
| } else { |
| alias CHAR TCHAR, _TCHAR; |
| } |
| |
| alias TCHAR TBYTE; |
| alias TCHAR* PTCH , PTBYTE, LPTCH , PTSTR , LPTSTR , LP, PTCHAR; |
| alias const(TCHAR)* PCTCH, LPCTCH, PCTSTR, LPCTSTR ; |
| |
| enum char ANSI_NULL = '\0'; |
| enum wchar UNICODE_NULL = '\0'; |
| |
| enum APPLICATION_ERROR_MASK = 0x20000000; |
| enum ERROR_SEVERITY_SUCCESS = 0x00000000; |
| enum ERROR_SEVERITY_INFORMATIONAL = 0x40000000; |
| enum ERROR_SEVERITY_WARNING = 0x80000000; |
| enum ERROR_SEVERITY_ERROR = 0xC0000000; |
| |
| // MinGW: also in ddk/ntifs.h |
| enum : USHORT { |
| COMPRESSION_FORMAT_NONE = 0x0000, |
| COMPRESSION_FORMAT_DEFAULT = 0x0001, |
| COMPRESSION_FORMAT_LZNT1 = 0x0002, |
| COMPRESSION_ENGINE_STANDARD = 0x0000, |
| COMPRESSION_ENGINE_MAXIMUM = 0x0100, |
| COMPRESSION_ENGINE_HIBER = 0x0200 |
| } |
| |
| // ACCESS_DENIED_OBJECT_ACE, etc |
| enum DWORD |
| ACE_OBJECT_TYPE_PRESENT = 0x00000001, |
| ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; |
| |
| // ACE_HEADER.AceType |
| // also in ddk/ntifs.h |
| enum : BYTE { |
| ACCESS_ALLOWED_ACE_TYPE, |
| ACCESS_DENIED_ACE_TYPE, |
| SYSTEM_AUDIT_ACE_TYPE, |
| SYSTEM_ALARM_ACE_TYPE |
| } |
| |
| // ACE_HEADER.AceFlags |
| enum BYTE |
| OBJECT_INHERIT_ACE = 0x01, |
| CONTAINER_INHERIT_ACE = 0x02, |
| NO_PROPAGATE_INHERIT_ACE = 0x04, |
| INHERIT_ONLY_ACE = 0x08, |
| INHERITED_ACE = 0x10, |
| VALID_INHERIT_FLAGS = 0x1F, |
| SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, |
| FAILED_ACCESS_ACE_FLAG = 0x80; |
| |
| // Access Mask Format |
| enum ACCESS_MASK |
| DELETE = 0x00010000, |
| READ_CONTROL = 0x00020000, |
| WRITE_DAC = 0x00040000, |
| WRITE_OWNER = 0x00080000, |
| SYNCHRONIZE = 0x00100000, |
| ACCESS_SYSTEM_SECURITY = 0x01000000, |
| MAXIMUM_ALLOWED = 0x02000000, |
| GENERIC_READ = 0x80000000, |
| GENERIC_WRITE = 0x40000000, |
| GENERIC_EXECUTE = 0x20000000, |
| GENERIC_ALL = 0x10000000, |
| STANDARD_RIGHTS_REQUIRED = 0x000F0000, |
| STANDARD_RIGHTS_READ = 0x00020000, |
| STANDARD_RIGHTS_WRITE = 0x00020000, |
| STANDARD_RIGHTS_EXECUTE = 0x00020000, |
| STANDARD_RIGHTS_ALL = 0x001F0000, |
| SPECIFIC_RIGHTS_ALL = 0x0000FFFF; |
| |
| |
| enum DWORD INVALID_FILE_ATTRIBUTES = -1; |
| |
| // MinGW: Also in ddk/winddk.h |
| enum DWORD |
| FILE_LIST_DIRECTORY = 0x00000001, |
| FILE_READ_DATA = 0x00000001, |
| FILE_ADD_FILE = 0x00000002, |
| FILE_WRITE_DATA = 0x00000002, |
| FILE_ADD_SUBDIRECTORY = 0x00000004, |
| FILE_APPEND_DATA = 0x00000004, |
| FILE_CREATE_PIPE_INSTANCE = 0x00000004, |
| FILE_READ_EA = 0x00000008, |
| FILE_READ_PROPERTIES = 0x00000008, |
| FILE_WRITE_EA = 0x00000010, |
| FILE_WRITE_PROPERTIES = 0x00000010, |
| FILE_EXECUTE = 0x00000020, |
| FILE_TRAVERSE = 0x00000020, |
| FILE_DELETE_CHILD = 0x00000040, |
| FILE_READ_ATTRIBUTES = 0x00000080, |
| FILE_WRITE_ATTRIBUTES = 0x00000100; |
| |
| enum DWORD |
| FILE_SHARE_READ = 0x00000001, |
| FILE_SHARE_WRITE = 0x00000002, |
| FILE_SHARE_DELETE = 0x00000004, |
| FILE_SHARE_VALID_FLAGS = 0x00000007; |
| |
| enum DWORD |
| FILE_ATTRIBUTE_READONLY = 0x00000001, |
| FILE_ATTRIBUTE_HIDDEN = 0x00000002, |
| FILE_ATTRIBUTE_SYSTEM = 0x00000004, |
| FILE_ATTRIBUTE_DIRECTORY = 0x00000010, |
| FILE_ATTRIBUTE_ARCHIVE = 0x00000020, |
| FILE_ATTRIBUTE_DEVICE = 0x00000040, |
| FILE_ATTRIBUTE_NORMAL = 0x00000080, |
| FILE_ATTRIBUTE_TEMPORARY = 0x00000100, |
| FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, |
| FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, |
| FILE_ATTRIBUTE_COMPRESSED = 0x00000800, |
| FILE_ATTRIBUTE_OFFLINE = 0x00001000, |
| FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, |
| FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, |
| FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, |
| FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; |
| |
| // These are not documented on MSDN |
| enum FILE_COPY_STRUCTURED_STORAGE = 0x00000041; |
| enum FILE_STRUCTURED_STORAGE = 0x00000441; |
| |
| // Nor are these |
| enum FILE_VALID_OPTION_FLAGS = 0x00ffffff; |
| enum FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; |
| enum FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; |
| enum FILE_VALID_SET_FLAGS = 0x00000036; |
| |
| enum ULONG |
| FILE_SUPERSEDE = 0x00000000, |
| FILE_OPEN = 0x00000001, |
| FILE_CREATE = 0x00000002, |
| FILE_OPEN_IF = 0x00000003, |
| FILE_OVERWRITE = 0x00000004, |
| FILE_OVERWRITE_IF = 0x00000005, |
| FILE_MAXIMUM_DISPOSITION = 0x00000005; |
| |
| enum ULONG |
| FILE_DIRECTORY_FILE = 0x00000001, |
| FILE_WRITE_THROUGH = 0x00000002, |
| FILE_SEQUENTIAL_ONLY = 0x00000004, |
| FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, |
| FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, |
| FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, |
| FILE_NON_DIRECTORY_FILE = 0x00000040, |
| FILE_CREATE_TREE_CONNECTION = 0x00000080, |
| FILE_COMPLETE_IF_OPLOCKED = 0x00000100, |
| FILE_NO_EA_KNOWLEDGE = 0x00000200, |
| FILE_OPEN_FOR_RECOVERY = 0x00000400, |
| FILE_RANDOM_ACCESS = 0x00000800, |
| FILE_DELETE_ON_CLOSE = 0x00001000, |
| FILE_OPEN_BY_FILE_ID = 0x00002000, |
| FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, |
| FILE_NO_COMPRESSION = 0x00008000, |
| FILE_RESERVE_OPFILTER = 0x00100000, |
| FILE_OPEN_REPARSE_POINT = 0x00200000, |
| FILE_OPEN_NO_RECALL = 0x00400000, |
| FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; |
| |
| |
| enum ACCESS_MASK |
| FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, |
| FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES |
| | FILE_EXECUTE | SYNCHRONIZE, |
| FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA |
| | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, |
| FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA |
| | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA |
| | SYNCHRONIZE; |
| |
| // MinGW: end winddk.h |
| // MinGW: also in ddk/ntifs.h |
| enum DWORD |
| FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, |
| FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, |
| FILE_NOTIFY_CHANGE_NAME = 0x00000003, |
| FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, |
| FILE_NOTIFY_CHANGE_SIZE = 0x00000008, |
| FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, |
| FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, |
| FILE_NOTIFY_CHANGE_CREATION = 0x00000040, |
| FILE_NOTIFY_CHANGE_EA = 0x00000080, |
| FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, |
| FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, |
| FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, |
| FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, |
| FILE_NOTIFY_VALID_MASK = 0x00000fff; |
| |
| enum DWORD |
| FILE_CASE_SENSITIVE_SEARCH = 0x00000001, |
| FILE_CASE_PRESERVED_NAMES = 0x00000002, |
| FILE_UNICODE_ON_DISK = 0x00000004, |
| FILE_PERSISTENT_ACLS = 0x00000008, |
| FILE_FILE_COMPRESSION = 0x00000010, |
| FILE_VOLUME_QUOTAS = 0x00000020, |
| FILE_SUPPORTS_SPARSE_FILES = 0x00000040, |
| FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, |
| FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, |
| FS_LFN_APIS = 0x00004000, |
| FILE_VOLUME_IS_COMPRESSED = 0x00008000, |
| FILE_SUPPORTS_OBJECT_IDS = 0x00010000, |
| FILE_SUPPORTS_ENCRYPTION = 0x00020000, |
| FILE_NAMED_STREAMS = 0x00040000, |
| FILE_READ_ONLY_VOLUME = 0x00080000, |
| FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, |
| FILE_SUPPORTS_TRANSACTIONS = 0x00200000; |
| |
| // These are not documented on MSDN |
| enum ACCESS_MASK |
| IO_COMPLETION_QUERY_STATE = 1, |
| IO_COMPLETION_MODIFY_STATE = 2, |
| IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; |
| // MinGW: end ntifs.h |
| |
| // MinGW: also in ddk/winddk.h |
| enum DWORD |
| DUPLICATE_CLOSE_SOURCE = 1, |
| DUPLICATE_SAME_ACCESS = 2, |
| DUPLICATE_SAME_ATTRIBUTES = 4; |
| // MinGW: end winddk.k |
| |
| enum DWORD |
| MAILSLOT_NO_MESSAGE = -1, |
| MAILSLOT_WAIT_FOREVER = -1; |
| |
| enum ACCESS_MASK |
| PROCESS_TERMINATE = 0x0001, |
| PROCESS_CREATE_THREAD = 0x0002, |
| PROCESS_SET_SESSIONID = 0x0004, |
| PROCESS_VM_OPERATION = 0x0008, |
| PROCESS_VM_READ = 0x0010, |
| PROCESS_VM_WRITE = 0x0020, |
| PROCESS_DUP_HANDLE = 0x0040, |
| PROCESS_CREATE_PROCESS = 0x0080, |
| PROCESS_SET_QUOTA = 0x0100, |
| PROCESS_SET_INFORMATION = 0x0200, |
| PROCESS_QUERY_INFORMATION = 0x0400, |
| PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; |
| |
| enum ACCESS_MASK |
| THREAD_TERMINATE = 0x0001, |
| THREAD_SUSPEND_RESUME = 0x0002, |
| THREAD_GET_CONTEXT = 0x0008, |
| THREAD_SET_CONTEXT = 0x0010, |
| THREAD_SET_INFORMATION = 0x0020, |
| THREAD_QUERY_INFORMATION = 0x0040, |
| THREAD_SET_THREAD_TOKEN = 0x0080, |
| THREAD_IMPERSONATE = 0x0100, |
| THREAD_DIRECT_IMPERSONATION = 0x0200, |
| THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; |
| |
| // These are not documented on MSDN |
| enum THREAD_BASE_PRIORITY_LOWRT = 15; |
| enum THREAD_BASE_PRIORITY_MAX = 2; |
| enum THREAD_BASE_PRIORITY_MIN = -2; |
| enum THREAD_BASE_PRIORITY_IDLE = -15; |
| |
| enum DWORD EXCEPTION_NONCONTINUABLE = 1; |
| enum size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; |
| |
| // These are not documented on MSDN |
| enum ACCESS_MASK |
| MUTANT_QUERY_STATE = 1, |
| MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; |
| |
| enum ACCESS_MASK |
| TIMER_QUERY_STATE = 1, |
| TIMER_MODIFY_STATE = 2, |
| TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE |
| | TIMER_MODIFY_STATE; |
| |
| enum SID_IDENTIFIER_AUTHORITY |
| SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, |
| SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, |
| SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, |
| SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, |
| SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, |
| SECURITY_NT_AUTHORITY = {[5: 5]}, |
| SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; |
| |
| enum DWORD |
| SECURITY_NULL_RID = 0, |
| SECURITY_WORLD_RID = 0, |
| SECURITY_LOCAL_RID = 0, |
| SECURITY_CREATOR_OWNER_RID = 0, |
| SECURITY_CREATOR_GROUP_RID = 1, |
| SECURITY_DIALUP_RID = 1, |
| SECURITY_NETWORK_RID = 2, |
| SECURITY_BATCH_RID = 3, |
| SECURITY_INTERACTIVE_RID = 4, |
| SECURITY_LOGON_IDS_RID = 5, |
| SECURITY_SERVICE_RID = 6, |
| SECURITY_LOCAL_SYSTEM_RID = 18, |
| SECURITY_BUILTIN_DOMAIN_RID = 32, |
| SECURITY_PRINCIPAL_SELF_RID = 10, |
| SECURITY_CREATOR_OWNER_SERVER_RID = 2, |
| SECURITY_CREATOR_GROUP_SERVER_RID = 3, |
| SECURITY_LOGON_IDS_RID_COUNT = 3, |
| SECURITY_ANONYMOUS_LOGON_RID = 7, |
| SECURITY_PROXY_RID = 8, |
| SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, |
| SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, |
| SECURITY_AUTHENTICATED_USER_RID = 11, |
| SECURITY_RESTRICTED_CODE_RID = 12, |
| SECURITY_NT_NON_UNIQUE_RID = 21, |
| SID_REVISION = 1; |
| |
| enum : DWORD { |
| DOMAIN_USER_RID_ADMIN = 0x01F4, |
| DOMAIN_USER_RID_GUEST = 0x01F5, |
| DOMAIN_GROUP_RID_ADMINS = 0x0200, |
| DOMAIN_GROUP_RID_USERS = 0x0201, |
| DOMAIN_ALIAS_RID_ADMINS = 0x0220, |
| DOMAIN_ALIAS_RID_USERS = 0x0221, |
| DOMAIN_ALIAS_RID_GUESTS = 0x0222, |
| DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, |
| DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, |
| DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, |
| DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, |
| DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, |
| DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 |
| } |
| |
| enum : WORD { |
| SECURITY_MANDATORY_UNTRUSTED_RID = 0, |
| SECURITY_MANDATORY_LOW_RID = 0x1000, |
| SECURITY_MANDATORY_MEDIUM_RID = 0x2000, |
| SECURITY_MANDATORY_HIGH_RID = 0x3000, |
| SECURITY_MANDATORY_SYSTEM_RID = 0x4000, |
| SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, |
| SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID |
| } |
| |
| const TCHAR[] |
| SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", |
| SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", |
| SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", |
| SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", |
| SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", |
| SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", |
| SE_TCB_NAME = "SeTcbPrivilege", |
| SE_SECURITY_NAME = "SeSecurityPrivilege", |
| SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", |
| SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", |
| SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", |
| SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", |
| SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", |
| SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", |
| SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", |
| SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", |
| SE_BACKUP_NAME = "SeBackupPrivilege", |
| SE_RESTORE_NAME = "SeRestorePrivilege", |
| SE_SHUTDOWN_NAME = "SeShutdownPrivilege", |
| SE_DEBUG_NAME = "SeDebugPrivilege", |
| SE_AUDIT_NAME = "SeAuditPrivilege", |
| SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", |
| SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", |
| SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", |
| SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", |
| SE_UNDOCK_NAME = "SeUndockPrivilege", |
| SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", |
| SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", |
| SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", |
| SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", |
| SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", |
| SE_RELABEL_NAME = "SeRelabelPrivilege", |
| SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", |
| SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", |
| SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; |
| |
| enum DWORD |
| SE_GROUP_MANDATORY = 0x00000001, |
| SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, |
| SE_GROUP_ENABLED = 0x00000004, |
| SE_GROUP_OWNER = 0x00000008, |
| SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, |
| SE_GROUP_INTEGRITY = 0x00000020, |
| SE_GROUP_INTEGRITY_ENABLED = 0x00000040, |
| SE_GROUP_RESOURCE = 0x20000000, |
| SE_GROUP_LOGON_ID = 0xC0000000; |
| |
| // Primary language identifiers |
| enum : USHORT { |
| LANG_NEUTRAL, |
| LANG_ARABIC, |
| LANG_BULGARIAN, |
| LANG_CATALAN, |
| LANG_CHINESE, |
| LANG_CZECH, |
| LANG_DANISH, |
| LANG_GERMAN, |
| LANG_GREEK, |
| LANG_ENGLISH, |
| LANG_SPANISH, |
| LANG_FINNISH, |
| LANG_FRENCH, |
| LANG_HEBREW, |
| LANG_HUNGARIAN, |
| LANG_ICELANDIC, |
| LANG_ITALIAN, |
| LANG_JAPANESE, |
| LANG_KOREAN, |
| LANG_DUTCH, |
| LANG_NORWEGIAN, |
| LANG_POLISH, |
| LANG_PORTUGUESE, // = 0x16 |
| LANG_ROMANIAN = 0x18, |
| LANG_RUSSIAN, |
| LANG_CROATIAN, // = 0x1A |
| LANG_SERBIAN = 0x1A, |
| LANG_BOSNIAN = 0x1A, |
| LANG_SLOVAK, |
| LANG_ALBANIAN, |
| LANG_SWEDISH, |
| LANG_THAI, |
| LANG_TURKISH, |
| LANG_URDU, |
| LANG_INDONESIAN, |
| LANG_UKRAINIAN, |
| LANG_BELARUSIAN, |
| LANG_SLOVENIAN, |
| LANG_ESTONIAN, |
| LANG_LATVIAN, |
| LANG_LITHUANIAN, // = 0x27 |
| LANG_FARSI = 0x29, |
| LANG_PERSIAN = 0x29, |
| LANG_VIETNAMESE, |
| LANG_ARMENIAN, |
| LANG_AZERI, |
| LANG_BASQUE, |
| LANG_LOWER_SORBIAN, // = 0x2E |
| LANG_UPPER_SORBIAN = 0x2E, |
| LANG_MACEDONIAN, // = 0x2F |
| LANG_TSWANA = 0x32, |
| LANG_XHOSA = 0x34, |
| LANG_ZULU, |
| LANG_AFRIKAANS, |
| LANG_GEORGIAN, |
| LANG_FAEROESE, |
| LANG_HINDI, |
| LANG_MALTESE, |
| LANG_SAMI, |
| LANG_IRISH, // = 0x3C |
| LANG_MALAY = 0x3E, |
| LANG_KAZAK, |
| LANG_KYRGYZ, |
| LANG_SWAHILI, // = 0x41 |
| LANG_UZBEK = 0x43, |
| LANG_TATAR, |
| LANG_BENGALI, |
| LANG_PUNJABI, |
| LANG_GUJARATI, |
| LANG_ORIYA, |
| LANG_TAMIL, |
| LANG_TELUGU, |
| LANG_KANNADA, |
| LANG_MALAYALAM, |
| LANG_ASSAMESE, |
| LANG_MARATHI, |
| LANG_SANSKRIT, |
| LANG_MONGOLIAN, |
| LANG_TIBETAN, |
| LANG_WELSH, |
| LANG_KHMER, |
| LANG_LAO, // = 0x54 |
| LANG_GALICIAN = 0x56, |
| LANG_KONKANI, |
| LANG_MANIPURI, |
| LANG_SINDHI, |
| LANG_SYRIAC, |
| LANG_SINHALESE, // = 0x5B |
| LANG_INUKTITUT = 0x5D, |
| LANG_AMHARIC, |
| LANG_TAMAZIGHT, |
| LANG_KASHMIRI, |
| LANG_NEPALI, |
| LANG_FRISIAN, |
| LANG_PASHTO, |
| LANG_FILIPINO, |
| LANG_DIVEHI, // = 0x65 |
| LANG_HAUSA = 0x68, |
| LANG_YORUBA = 0x6A, |
| LANG_QUECHUA, |
| LANG_SOTHO, |
| LANG_BASHKIR, |
| LANG_LUXEMBOURGISH, |
| LANG_GREENLANDIC, |
| LANG_IGBO, // = 0x70 |
| LANG_TIGRIGNA = 0x73, |
| LANG_YI = 0x78, |
| LANG_MAPUDUNGUN = 0x7A, |
| LANG_MOHAWK = 0x7C, |
| LANG_BRETON = 0x7E, |
| LANG_UIGHUR = 0x80, |
| LANG_MAORI, |
| LANG_OCCITAN, |
| LANG_CORSICAN, |
| LANG_ALSATIAN, |
| LANG_YAKUT, |
| LANG_KICHE, |
| LANG_KINYARWANDA, |
| LANG_WOLOF, // = 0x88 |
| LANG_DARI = 0x8C, |
| LANG_MALAGASY, // = 0x8D |
| |
| LANG_SERBIAN_NEUTRAL = 0x7C1A, |
| LANG_BOSNIAN_NEUTRAL = 0x781A, |
| |
| LANG_INVARIANT = 0x7F |
| } |
| |
| |
| // Sublanguage identifiers |
| enum : USHORT { |
| SUBLANG_NEUTRAL, |
| SUBLANG_DEFAULT, |
| SUBLANG_SYS_DEFAULT, |
| SUBLANG_CUSTOM_DEFAULT, // = 3 |
| SUBLANG_UI_CUSTOM_DEFAULT = 3, |
| SUBLANG_CUSTOM_UNSPECIFIED, // = 4 |
| |
| SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, |
| SUBLANG_ALBANIAN_ALBANIA = 1, |
| SUBLANG_ALSATIAN_FRANCE = 1, |
| SUBLANG_AMHARIC_ETHIOPIA = 1, |
| |
| SUBLANG_ARABIC_SAUDI_ARABIA = 1, |
| SUBLANG_ARABIC_IRAQ, |
| SUBLANG_ARABIC_EGYPT, |
| SUBLANG_ARABIC_LIBYA, |
| SUBLANG_ARABIC_ALGERIA, |
| SUBLANG_ARABIC_MOROCCO, |
| SUBLANG_ARABIC_TUNISIA, |
| SUBLANG_ARABIC_OMAN, |
| SUBLANG_ARABIC_YEMEN, |
| SUBLANG_ARABIC_SYRIA, |
| SUBLANG_ARABIC_JORDAN, |
| SUBLANG_ARABIC_LEBANON, |
| SUBLANG_ARABIC_KUWAIT, |
| SUBLANG_ARABIC_UAE, |
| SUBLANG_ARABIC_BAHRAIN, |
| SUBLANG_ARABIC_QATAR, // = 16 |
| |
| SUBLANG_ARMENIAN_ARMENIA = 1, |
| SUBLANG_ASSAMESE_INDIA = 1, |
| |
| SUBLANG_AZERI_LATIN = 1, |
| SUBLANG_AZERI_CYRILLIC, // = 2 |
| |
| SUBLANG_BASHKIR_RUSSIA = 1, |
| SUBLANG_BASQUE_BASQUE = 1, |
| SUBLANG_BELARUSIAN_BELARUS = 1, |
| SUBLANG_BENGALI_INDIA = 1, |
| |
| SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, |
| SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, |
| |
| SUBLANG_BRETON_FRANCE = 1, |
| SUBLANG_BULGARIAN_BULGARIA = 1, |
| SUBLANG_CATALAN_CATALAN = 1, |
| |
| SUBLANG_CHINESE_TRADITIONAL = 1, |
| SUBLANG_CHINESE_SIMPLIFIED, |
| SUBLANG_CHINESE_HONGKONG, |
| SUBLANG_CHINESE_SINGAPORE, |
| SUBLANG_CHINESE_MACAU, // = 5 |
| |
| SUBLANG_CORSICAN_FRANCE = 1, |
| |
| SUBLANG_CROATIAN_CROATIA = 1, |
| SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, |
| |
| SUBLANG_CZECH_CZECH_REPUBLIC = 1, |
| SUBLANG_DANISH_DENMARK = 1, |
| SUBLANG_DIVEHI_MALDIVES = 1, |
| |
| SUBLANG_DUTCH = 1, |
| SUBLANG_DUTCH_BELGIAN, // = 2 |
| |
| SUBLANG_ENGLISH_US = 1, |
| SUBLANG_ENGLISH_UK, |
| SUBLANG_ENGLISH_AUS, |
| SUBLANG_ENGLISH_CAN, |
| SUBLANG_ENGLISH_NZ, |
| SUBLANG_ENGLISH_EIRE, // = 6 |
| SUBLANG_ENGLISH_IRELAND = 6, |
| SUBLANG_ENGLISH_SOUTH_AFRICA, |
| SUBLANG_ENGLISH_JAMAICA, |
| SUBLANG_ENGLISH_CARIBBEAN, |
| SUBLANG_ENGLISH_BELIZE, |
| SUBLANG_ENGLISH_TRINIDAD, |
| SUBLANG_ENGLISH_ZIMBABWE, |
| SUBLANG_ENGLISH_PHILIPPINES, // = 13 |
| SUBLANG_ENGLISH_INDIA = 16, |
| SUBLANG_ENGLISH_MALAYSIA, |
| SUBLANG_ENGLISH_SINGAPORE, // = 18 |
| |
| SUBLANG_ESTONIAN_ESTONIA = 1, |
| SUBLANG_FAEROESE_FAROE_ISLANDS = 1, |
| SUBLANG_FILIPINO_PHILIPPINES = 1, |
| SUBLANG_FINNISH_FINLAND = 1, |
| |
| SUBLANG_FRENCH = 1, |
| SUBLANG_FRENCH_BELGIAN, |
| SUBLANG_FRENCH_CANADIAN, |
| SUBLANG_FRENCH_SWISS, |
| SUBLANG_FRENCH_LUXEMBOURG, |
| SUBLANG_FRENCH_MONACO, // = 6 |
| |
| SUBLANG_FRISIAN_NETHERLANDS = 1, |
| SUBLANG_GALICIAN_GALICIAN = 1, |
| SUBLANG_GEORGIAN_GEORGIA = 1, |
| |
| SUBLANG_GERMAN = 1, |
| SUBLANG_GERMAN_SWISS, |
| SUBLANG_GERMAN_AUSTRIAN, |
| SUBLANG_GERMAN_LUXEMBOURG, |
| SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 |
| |
| SUBLANG_GREEK_GREECE = 1, |
| SUBLANG_GREENLANDIC_GREENLAND = 1, |
| SUBLANG_GUJARATI_INDIA = 1, |
| SUBLANG_HAUSA_NIGERIA = 1, |
| SUBLANG_HEBREW_ISRAEL = 1, |
| SUBLANG_HINDI_INDIA = 1, |
| SUBLANG_HUNGARIAN_HUNGARY = 1, |
| SUBLANG_ICELANDIC_ICELAND = 1, |
| SUBLANG_IGBO_NIGERIA = 1, |
| SUBLANG_INDONESIAN_INDONESIA = 1, |
| |
| SUBLANG_INUKTITUT_CANADA = 1, |
| SUBLANG_INUKTITUT_CANADA_LATIN = 1, |
| |
| SUBLANG_IRISH_IRELAND = 1, |
| |
| SUBLANG_ITALIAN = 1, |
| SUBLANG_ITALIAN_SWISS, // = 2 |
| |
| SUBLANG_JAPANESE_JAPAN = 1, |
| |
| SUBLANG_KASHMIRI_INDIA = 2, |
| SUBLANG_KASHMIRI_SASIA = 2, |
| |
| SUBLANG_KAZAK_KAZAKHSTAN = 1, |
| SUBLANG_KHMER_CAMBODIA = 1, |
| SUBLANG_KICHE_GUATEMALA = 1, |
| SUBLANG_KINYARWANDA_RWANDA = 1, |
| SUBLANG_KONKANI_INDIA = 1, |
| SUBLANG_KOREAN = 1, |
| SUBLANG_KOREAN_JOHAB = 2, |
| SUBLANG_KYRGYZ_KYRGYZSTAN = 1, |
| SUBLANG_LAO_LAO_PDR = 1, |
| SUBLANG_LATVIAN_LATVIA = 1, |
| |
| SUBLANG_LITHUANIAN = 1, |
| SUBLANG_LITHUANIAN_LITHUANIA = 1, |
| |
| SUBLANG_LOWER_SORBIAN_GERMANY = 1, |
| SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, |
| SUBLANG_MACEDONIAN_MACEDONIA = 1, |
| SUBLANG_MALAYALAM_INDIA = 1, |
| SUBLANG_MALTESE_MALTA = 1, |
| SUBLANG_MAORI_NEW_ZEALAND = 1, |
| SUBLANG_MAPUDUNGUN_CHILE = 1, |
| SUBLANG_MARATHI_INDIA = 1, |
| SUBLANG_MOHAWK_MOHAWK = 1, |
| |
| SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, |
| SUBLANG_MONGOLIAN_PRC, // = 2 |
| |
| SUBLANG_MALAY_MALAYSIA = 1, |
| SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 |
| |
| SUBLANG_NEPALI_NEPAL = 1, |
| SUBLANG_NEPALI_INDIA, // = 2 |
| |
| SUBLANG_NORWEGIAN_BOKMAL = 1, |
| SUBLANG_NORWEGIAN_NYNORSK, // = 2 |
| |
| SUBLANG_OCCITAN_FRANCE = 1, |
| SUBLANG_ORIYA_INDIA = 1, |
| SUBLANG_PASHTO_AFGHANISTAN = 1, |
| SUBLANG_PERSIAN_IRAN = 1, |
| SUBLANG_POLISH_POLAND = 1, |
| |
| SUBLANG_PORTUGUESE_BRAZILIAN = 1, |
| SUBLANG_PORTUGUESE = 2, |
| SUBLANG_PORTUGUESE_PORTUGAL, // = 2 |
| |
| SUBLANG_PUNJABI_INDIA = 1, |
| |
| SUBLANG_QUECHUA_BOLIVIA = 1, |
| SUBLANG_QUECHUA_ECUADOR, |
| SUBLANG_QUECHUA_PERU, // = 3 |
| |
| SUBLANG_ROMANIAN_ROMANIA = 1, |
| SUBLANG_ROMANSH_SWITZERLAND = 1, |
| SUBLANG_RUSSIAN_RUSSIA = 1, |
| |
| SUBLANG_SAMI_NORTHERN_NORWAY = 1, |
| SUBLANG_SAMI_NORTHERN_SWEDEN, |
| SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 |
| SUBLANG_SAMI_SKOLT_FINLAND = 3, |
| SUBLANG_SAMI_INARI_FINLAND = 3, |
| SUBLANG_SAMI_LULE_NORWAY, |
| SUBLANG_SAMI_LULE_SWEDEN, |
| SUBLANG_SAMI_SOUTHERN_NORWAY, |
| SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 |
| |
| SUBLANG_SANSKRIT_INDIA = 1, |
| |
| SUBLANG_SERBIAN_LATIN = 2, |
| SUBLANG_SERBIAN_CYRILLIC, // = 3 |
| SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, |
| SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, |
| |
| SUBLANG_SINDHI_AFGHANISTAN = 2, |
| SUBLANG_SINHALESE_SRI_LANKA = 1, |
| SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, |
| SUBLANG_SLOVAK_SLOVAKIA = 1, |
| SUBLANG_SLOVENIAN_SLOVENIA = 1, |
| |
| SUBLANG_SPANISH = 1, |
| SUBLANG_SPANISH_MEXICAN, |
| SUBLANG_SPANISH_MODERN, |
| SUBLANG_SPANISH_GUATEMALA, |
| SUBLANG_SPANISH_COSTA_RICA, |
| SUBLANG_SPANISH_PANAMA, |
| SUBLANG_SPANISH_DOMINICAN_REPUBLIC, |
| SUBLANG_SPANISH_VENEZUELA, |
| SUBLANG_SPANISH_COLOMBIA, |
| SUBLANG_SPANISH_PERU, |
| SUBLANG_SPANISH_ARGENTINA, |
| SUBLANG_SPANISH_ECUADOR, |
| SUBLANG_SPANISH_CHILE, |
| SUBLANG_SPANISH_URUGUAY, |
| SUBLANG_SPANISH_PARAGUAY, |
| SUBLANG_SPANISH_BOLIVIA, |
| SUBLANG_SPANISH_EL_SALVADOR, |
| SUBLANG_SPANISH_HONDURAS, |
| SUBLANG_SPANISH_NICARAGUA, |
| SUBLANG_SPANISH_PUERTO_RICO, |
| SUBLANG_SPANISH_US, // = 21 |
| |
| SUBLANG_SWEDISH = 1, |
| SUBLANG_SWEDISH_SWEDEN = 1, |
| SUBLANG_SWEDISH_FINLAND, // = 2 |
| |
| SUBLANG_SYRIAC = 1, |
| SUBLANG_TAJIK_TAJIKISTAN = 1, |
| SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, |
| SUBLANG_TAMIL_INDIA = 1, |
| SUBLANG_TATAR_RUSSIA = 1, |
| SUBLANG_TELUGU_INDIA = 1, |
| SUBLANG_THAI_THAILAND = 1, |
| SUBLANG_TIBETAN_PRC = 1, |
| SUBLANG_TIBETAN_BHUTAN = 2, |
| SUBLANG_TIGRIGNA_ERITREA = 1, |
| SUBLANG_TSWANA_SOUTH_AFRICA = 1, |
| SUBLANG_TURKISH_TURKEY = 1, |
| SUBLANG_TURKMEN_TURKMENISTAN = 1, |
| SUBLANG_UIGHUR_PRC = 1, |
| SUBLANG_UKRAINIAN_UKRAINE = 1, |
| SUBLANG_UPPER_SORBIAN_GERMANY = 1, |
| |
| SUBLANG_URDU_PAKISTAN = 1, |
| SUBLANG_URDU_INDIA, // = 2 |
| |
| SUBLANG_UZBEK_LATIN = 1, |
| SUBLANG_UZBEK_CYRILLIC, // = 2 |
| |
| SUBLANG_VIETNAMESE_VIETNAM = 1, |
| SUBLANG_WELSH_UNITED_KINGDOM = 1, |
| SUBLANG_WOLOF_SENEGAL = 1, |
| SUBLANG_YORUBA_NIGERIA = 1, |
| SUBLANG_XHOSA_SOUTH_AFRICA = 1, |
| SUBLANG_YAKUT_RUSSIA = 1, |
| SUBLANG_YI_PRC = 1, |
| SUBLANG_ZULU_SOUTH_AFRICA = 1 |
| } |
| |
| // This is not documented on MSDN |
| enum NLS_VALID_LOCALE_MASK = 1048575; |
| |
| // Sorting identifiers |
| enum : WORD { |
| SORT_DEFAULT = 0, |
| SORT_JAPANESE_XJIS = 0, |
| SORT_JAPANESE_UNICODE = 1, |
| SORT_CHINESE_BIG5 = 0, |
| SORT_CHINESE_PRCP = 0, |
| SORT_CHINESE_UNICODE = 1, |
| SORT_CHINESE_PRC = 2, |
| SORT_CHINESE_BOPOMOFO = 3, |
| SORT_KOREAN_KSC = 0, |
| SORT_KOREAN_UNICODE = 1, |
| SORT_GERMAN_PHONE_BOOK = 1, |
| SORT_HUNGARIAN_DEFAULT = 0, |
| SORT_HUNGARIAN_TECHNICAL = 1, |
| SORT_GEORGIAN_TRADITIONAL = 0, |
| SORT_GEORGIAN_MODERN = 1 |
| } |
| |
| pure nothrow @nogc { |
| WORD MAKELANGID(/*USHORT*/uint p, /*USHORT*/ uint s) { return cast(WORD)((s << 10) | p); } |
| WORD PRIMARYLANGID(/*WORD*/uint lgid) { return cast(WORD)(lgid & 0x3FF); } |
| WORD SUBLANGID(/*WORD*/uint lgid) { return cast(WORD)(lgid >>> 10); } |
| |
| DWORD MAKELCID(/*WORD*/uint lgid, /*WORD*/uint srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } |
| // ??? |
| //DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } |
| WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } |
| WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } |
| WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } |
| } |
| |
| enum WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; |
| enum WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; |
| enum DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) |
| | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; |
| |
| // --- |
| enum : BYTE { |
| ACL_REVISION = 2, |
| ACL_REVISION_DS = 4 |
| } |
| |
| // These are not documented on MSDN |
| enum : BYTE { |
| ACL_REVISION1 = 1, |
| ACL_REVISION2, |
| ACL_REVISION3, |
| ACL_REVISION4 // = 4 |
| } |
| |
| enum BYTE |
| MIN_ACL_REVISION = 2, |
| MAX_ACL_REVISION = 4; |
| |
| /+ |
| // These aren't necessary for D. |
| enum MINCHAR=0x80; |
| enum MAXCHAR=0x7f; |
| enum MINSHORT=0x8000; |
| enum MAXSHORT=0x7fff; |
| enum MINLONG=0x80000000; |
| enum MAXLONG=0x7fffffff; |
| enum MAXBYTE=0xff; |
| enum MAXWORD=0xffff; |
| enum MAXDWORD=0xffffffff; |
| +/ |
| |
| // SYSTEM_INFO.dwProcessorType |
| enum : DWORD { |
| PROCESSOR_INTEL_386 = 386, |
| PROCESSOR_INTEL_486 = 486, |
| PROCESSOR_INTEL_PENTIUM = 586, |
| PROCESSOR_MIPS_R4000 = 4000, |
| PROCESSOR_ALPHA_21064 = 21064, |
| PROCESSOR_INTEL_IA64 = 2200 |
| } |
| |
| // SYSTEM_INFO.wProcessorArchitecture |
| enum : WORD { |
| PROCESSOR_ARCHITECTURE_INTEL, |
| PROCESSOR_ARCHITECTURE_MIPS, |
| PROCESSOR_ARCHITECTURE_ALPHA, |
| PROCESSOR_ARCHITECTURE_PPC, |
| PROCESSOR_ARCHITECTURE_SHX, |
| PROCESSOR_ARCHITECTURE_ARM, |
| PROCESSOR_ARCHITECTURE_IA64, |
| PROCESSOR_ARCHITECTURE_ALPHA64, |
| PROCESSOR_ARCHITECTURE_MSIL, |
| PROCESSOR_ARCHITECTURE_AMD64, |
| PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 |
| PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF |
| } |
| |
| // IsProcessorFeaturePresent() |
| enum : DWORD { |
| PF_FLOATING_POINT_PRECISION_ERRATA, |
| PF_FLOATING_POINT_EMULATED, |
| PF_COMPARE_EXCHANGE_DOUBLE, |
| PF_MMX_INSTRUCTIONS_AVAILABLE, |
| PF_PPC_MOVEMEM_64BIT_OK, |
| PF_ALPHA_BYTE_INSTRUCTIONS, |
| PF_XMMI_INSTRUCTIONS_AVAILABLE, |
| PF_3DNOW_INSTRUCTIONS_AVAILABLE, |
| PF_RDTSC_INSTRUCTION_AVAILABLE, |
| PF_PAE_ENABLED, |
| PF_XMMI64_INSTRUCTIONS_AVAILABLE |
| } |
| |
| // MinGW: also in ddk/ntifs.h |
| enum : DWORD { |
| FILE_ACTION_ADDED = 1, |
| FILE_ACTION_REMOVED, |
| FILE_ACTION_MODIFIED, |
| FILE_ACTION_RENAMED_OLD_NAME, |
| FILE_ACTION_RENAMED_NEW_NAME, |
| FILE_ACTION_ADDED_STREAM, |
| FILE_ACTION_REMOVED_STREAM, |
| FILE_ACTION_MODIFIED_STREAM, |
| FILE_ACTION_REMOVED_BY_DELETE, |
| FILE_ACTION_ID_NOT_TUNNELLED, |
| FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 |
| } |
| // MinGW: end ntifs.h |
| |
| enum DWORD |
| HEAP_NO_SERIALIZE = 0x01, |
| HEAP_GROWABLE = 0x02, |
| HEAP_GENERATE_EXCEPTIONS = 0x04, |
| HEAP_ZERO_MEMORY = 0x08, |
| HEAP_REALLOC_IN_PLACE_ONLY = 0x10, |
| HEAP_TAIL_CHECKING_ENABLED = 0x20, |
| HEAP_FREE_CHECKING_ENABLED = 0x40, |
| HEAP_DISABLE_COALESCE_ON_FREE = 0x80; |
| |
| // These are not documented on MSDN |
| enum HEAP_CREATE_ALIGN_16 = 0; |
| enum HEAP_CREATE_ENABLE_TRACING = 0x020000; |
| enum HEAP_MAXIMUM_TAG = 0x000FFF; |
| enum HEAP_PSEUDO_TAG_FLAG = 0x008000; |
| enum HEAP_TAG_SHIFT = 16; |
| // ??? |
| //MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) |
| |
| enum ACCESS_MASK |
| KEY_QUERY_VALUE = 0x000001, |
| KEY_SET_VALUE = 0x000002, |
| KEY_CREATE_SUB_KEY = 0x000004, |
| KEY_ENUMERATE_SUB_KEYS = 0x000008, |
| KEY_NOTIFY = 0x000010, |
| KEY_CREATE_LINK = 0x000020, |
| KEY_WRITE = 0x020006, |
| KEY_EXECUTE = 0x020019, |
| KEY_READ = 0x020019, |
| KEY_ALL_ACCESS = 0x0F003F; |
| |
| static if (_WIN32_WINNT >= 0x502) { |
| enum ACCESS_MASK |
| KEY_WOW64_64KEY = 0x000100, |
| KEY_WOW64_32KEY = 0x000200; |
| } |
| |
| enum DWORD |
| REG_WHOLE_HIVE_VOLATILE = 1, |
| REG_REFRESH_HIVE = 2, |
| REG_NO_LAZY_FLUSH = 4; |
| |
| enum DWORD |
| REG_OPTION_RESERVED = 0, |
| REG_OPTION_NON_VOLATILE = 0, |
| REG_OPTION_VOLATILE = 1, |
| REG_OPTION_CREATE_LINK = 2, |
| REG_OPTION_BACKUP_RESTORE = 4, |
| REG_OPTION_OPEN_LINK = 8, |
| REG_LEGAL_OPTION = 15; |
| |
| enum SECURITY_INFORMATION |
| OWNER_SECURITY_INFORMATION = 0x00000001, |
| GROUP_SECURITY_INFORMATION = 0x00000002, |
| DACL_SECURITY_INFORMATION = 0x00000004, |
| SACL_SECURITY_INFORMATION = 0x00000008, |
| LABEL_SECURITY_INFORMATION = 0x00000010, |
| UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, |
| UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, |
| PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, |
| PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; |
| |
| enum DWORD MAXIMUM_PROCESSORS = 32; |
| |
| // VirtualAlloc(), etc |
| // ------------------- |
| |
| enum : DWORD { |
| PAGE_NOACCESS = 0x0001, |
| PAGE_READONLY = 0x0002, |
| PAGE_READWRITE = 0x0004, |
| PAGE_WRITECOPY = 0x0008, |
| PAGE_EXECUTE = 0x0010, |
| PAGE_EXECUTE_READ = 0x0020, |
| PAGE_EXECUTE_READWRITE = 0x0040, |
| PAGE_EXECUTE_WRITECOPY = 0x0080, |
| PAGE_GUARD = 0x0100, |
| PAGE_NOCACHE = 0x0200 |
| } |
| |
| enum : DWORD { |
| MEM_COMMIT = 0x00001000, |
| MEM_RESERVE = 0x00002000, |
| MEM_DECOMMIT = 0x00004000, |
| MEM_RELEASE = 0x00008000, |
| MEM_FREE = 0x00010000, |
| MEM_PRIVATE = 0x00020000, |
| MEM_MAPPED = 0x00040000, |
| MEM_RESET = 0x00080000, |
| MEM_TOP_DOWN = 0x00100000, |
| MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me |
| MEM_PHYSICAL = 0x00400000, |
| MEM_4MB_PAGES = 0x80000000 |
| } |
| |
| // MinGW: also in ddk/ntifs.h |
| // CreateFileMapping() |
| enum DWORD |
| SEC_BASED = 0x00200000, |
| SEC_NO_CHANGE = 0x00400000, |
| SEC_FILE = 0x00800000, |
| SEC_IMAGE = 0x01000000, |
| SEC_VLM = 0x02000000, |
| SEC_RESERVE = 0x04000000, |
| SEC_COMMIT = 0x08000000, |
| SEC_NOCACHE = 0x10000000, |
| MEM_IMAGE = SEC_IMAGE; |
| // MinGW: end ntifs.h |
| |
| // ??? |
| enum ACCESS_MASK |
| SECTION_QUERY = 0x000001, |
| SECTION_MAP_WRITE = 0x000002, |
| SECTION_MAP_READ = 0x000004, |
| SECTION_MAP_EXECUTE = 0x000008, |
| SECTION_EXTEND_SIZE = 0x000010, |
| SECTION_ALL_ACCESS = 0x0F001F; |
| |
| // These are not documented on MSDN |
| enum MESSAGE_RESOURCE_UNICODE = 1; |
| enum RTL_CRITSECT_TYPE = 0; |
| enum RTL_RESOURCE_TYPE = 1; |
| |
| // COFF file format |
| // ---------------- |
| |
| // IMAGE_FILE_HEADER.Characteristics |
| enum WORD |
| IMAGE_FILE_RELOCS_STRIPPED = 0x0001, |
| IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, |
| IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, |
| IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, |
| IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, |
| IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, |
| IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, |
| IMAGE_FILE_32BIT_MACHINE = 0x0100, |
| IMAGE_FILE_DEBUG_STRIPPED = 0x0200, |
| IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, |
| IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, |
| IMAGE_FILE_SYSTEM = 0x1000, |
| IMAGE_FILE_DLL = 0x2000, |
| IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, |
| IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; |
| |
| // IMAGE_FILE_HEADER.Machine |
| enum : WORD { |
| IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, |
| IMAGE_FILE_MACHINE_I386 = 0x014C, |
| IMAGE_FILE_MACHINE_R3000 = 0x0162, |
| IMAGE_FILE_MACHINE_R4000 = 0x0166, |
| IMAGE_FILE_MACHINE_R10000 = 0x0168, |
| IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, |
| IMAGE_FILE_MACHINE_ALPHA = 0x0184, |
| IMAGE_FILE_MACHINE_SH3 = 0x01A2, |
| IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, |
| IMAGE_FILE_MACHINE_SH4 = 0x01A6, |
| IMAGE_FILE_MACHINE_SH5 = 0x01A8, |
| IMAGE_FILE_MACHINE_ARM = 0x01C0, |
| IMAGE_FILE_MACHINE_THUMB = 0x01C2, |
| IMAGE_FILE_MACHINE_AM33 = 0x01D3, |
| IMAGE_FILE_MACHINE_POWERPC = 0x01F0, |
| IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, |
| IMAGE_FILE_MACHINE_IA64 = 0x0200, |
| IMAGE_FILE_MACHINE_MIPS16 = 0x0266, |
| IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, |
| IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, |
| IMAGE_FILE_MACHINE_EBC = 0x0EBC, |
| IMAGE_FILE_MACHINE_AMD64 = 0x8664, |
| IMAGE_FILE_MACHINE_M32R = 0x9041 |
| } |
| |
| // ??? |
| enum { |
| IMAGE_DOS_SIGNATURE = 0x5A4D, |
| IMAGE_OS2_SIGNATURE = 0x454E, |
| IMAGE_OS2_SIGNATURE_LE = 0x454C, |
| IMAGE_VXD_SIGNATURE = 0x454C, |
| IMAGE_NT_SIGNATURE = 0x4550 |
| } |
| |
| // IMAGE_OPTIONAL_HEADER.Magic |
| enum : WORD { |
| IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, |
| IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, |
| IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B |
| } |
| |
| // IMAGE_OPTIONAL_HEADER.Subsystem |
| enum : WORD { |
| IMAGE_SUBSYSTEM_UNKNOWN = 0, |
| IMAGE_SUBSYSTEM_NATIVE, |
| IMAGE_SUBSYSTEM_WINDOWS_GUI, |
| IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 |
| IMAGE_SUBSYSTEM_OS2_CUI = 5, |
| IMAGE_SUBSYSTEM_POSIX_CUI = 7, |
| IMAGE_SUBSYSTEM_NATIVE_WINDOWS, |
| IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, |
| IMAGE_SUBSYSTEM_EFI_APPLICATION, |
| IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, |
| IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, |
| IMAGE_SUBSYSTEM_EFI_ROM, |
| IMAGE_SUBSYSTEM_XBOX, // = 14 |
| IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 |
| } |
| |
| // IMAGE_OPTIONAL_HEADER.DllCharacteristics |
| enum WORD |
| IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, |
| IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, |
| IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, |
| IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, |
| IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, |
| IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, |
| IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, |
| IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; |
| |
| // ??? |
| enum IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; |
| |
| enum size_t |
| IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, |
| IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, |
| IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, |
| IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, |
| IMAGE_SIZEOF_SHORT_NAME = 8, |
| IMAGE_SIZEOF_SECTION_HEADER = 40, |
| IMAGE_SIZEOF_SYMBOL = 18, |
| IMAGE_SIZEOF_AUX_SYMBOL = 18, |
| IMAGE_SIZEOF_RELOCATION = 10, |
| IMAGE_SIZEOF_BASE_RELOCATION = 8, |
| IMAGE_SIZEOF_LINENUMBER = 6, |
| IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, |
| SIZEOF_RFPO_DATA = 16; |
| |
| PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { |
| return cast(PIMAGE_SECTION_HEADER) |
| (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); |
| } |
| |
| // ImageDirectoryEntryToDataEx() |
| enum : USHORT { |
| IMAGE_DIRECTORY_ENTRY_EXPORT = 0, |
| IMAGE_DIRECTORY_ENTRY_IMPORT, |
| IMAGE_DIRECTORY_ENTRY_RESOURCE, |
| IMAGE_DIRECTORY_ENTRY_EXCEPTION, |
| IMAGE_DIRECTORY_ENTRY_SECURITY, |
| IMAGE_DIRECTORY_ENTRY_BASERELOC, |
| IMAGE_DIRECTORY_ENTRY_DEBUG, |
| IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 |
| IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, |
| IMAGE_DIRECTORY_ENTRY_GLOBALPTR, |
| IMAGE_DIRECTORY_ENTRY_TLS, |
| IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, |
| IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, |
| IMAGE_DIRECTORY_ENTRY_IAT, |
| IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, |
| IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 |
| } |
| |
| // IMAGE_SECTION_HEADER.Characteristics |
| enum DWORD |
| IMAGE_SCN_TYPE_REG = 0x00000000, |
| IMAGE_SCN_TYPE_DSECT = 0x00000001, |
| IMAGE_SCN_TYPE_NOLOAD = 0x00000002, |
| IMAGE_SCN_TYPE_GROUP = 0x00000004, |
| IMAGE_SCN_TYPE_NO_PAD = 0x00000008, |
| IMAGE_SCN_TYPE_COPY = 0x00000010, |
| IMAGE_SCN_CNT_CODE = 0x00000020, |
| IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, |
| IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, |
| IMAGE_SCN_LNK_OTHER = 0x00000100, |
| IMAGE_SCN_LNK_INFO = 0x00000200, |
| IMAGE_SCN_TYPE_OVER = 0x00000400, |
| IMAGE_SCN_LNK_REMOVE = 0x00000800, |
| IMAGE_SCN_LNK_COMDAT = 0x00001000, |
| IMAGE_SCN_MEM_FARDATA = 0x00008000, |
| IMAGE_SCN_GPREL = 0x00008000, |
| IMAGE_SCN_MEM_PURGEABLE = 0x00020000, |
| IMAGE_SCN_MEM_16BIT = 0x00020000, |
| IMAGE_SCN_MEM_LOCKED = 0x00040000, |
| IMAGE_SCN_MEM_PRELOAD = 0x00080000, |
| IMAGE_SCN_ALIGN_1BYTES = 0x00100000, |
| IMAGE_SCN_ALIGN_2BYTES = 0x00200000, |
| IMAGE_SCN_ALIGN_4BYTES = 0x00300000, |
| IMAGE_SCN_ALIGN_8BYTES = 0x00400000, |
| IMAGE_SCN_ALIGN_16BYTES = 0x00500000, |
| IMAGE_SCN_ALIGN_32BYTES = 0x00600000, |
| IMAGE_SCN_ALIGN_64BYTES = 0x00700000, |
| IMAGE_SCN_ALIGN_128BYTES = 0x00800000, |
| IMAGE_SCN_ALIGN_256BYTES = 0x00900000, |
| IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, |
| IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, |
| IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, |
| IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, |
| IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, |
| IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, |
| IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, |
| IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, |
| IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, |
| IMAGE_SCN_MEM_SHARED = 0x10000000, |
| IMAGE_SCN_MEM_EXECUTE = 0x20000000, |
| IMAGE_SCN_MEM_READ = 0x40000000, |
| IMAGE_SCN_MEM_WRITE = 0x80000000; |
| |
| /* The following constants are mostlydocumented at |
| * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc |
| * but don't seem to be defined in the HTML docs. |
| */ |
| enum : SHORT { |
| IMAGE_SYM_UNDEFINED = 0, |
| IMAGE_SYM_ABSOLUTE = -1, |
| IMAGE_SYM_DEBUG = -2 |
| } |
| |
| enum : ubyte { |
| IMAGE_SYM_TYPE_NULL, |
| IMAGE_SYM_TYPE_VOID, |
| IMAGE_SYM_TYPE_CHAR, |
| IMAGE_SYM_TYPE_SHORT, |
| IMAGE_SYM_TYPE_INT, |
| IMAGE_SYM_TYPE_LONG, |
| IMAGE_SYM_TYPE_FLOAT, |
| IMAGE_SYM_TYPE_DOUBLE, |
| IMAGE_SYM_TYPE_STRUCT, |
| IMAGE_SYM_TYPE_UNION, |
| IMAGE_SYM_TYPE_ENUM, |
| IMAGE_SYM_TYPE_MOE, |
| IMAGE_SYM_TYPE_BYTE, |
| IMAGE_SYM_TYPE_WORD, |
| IMAGE_SYM_TYPE_UINT, |
| IMAGE_SYM_TYPE_DWORD // = 15 |
| } |
| enum IMAGE_SYM_TYPE_PCODE = 32768; // ??? |
| |
| enum : ubyte { |
| IMAGE_SYM_DTYPE_NULL, |
| IMAGE_SYM_DTYPE_POINTER, |
| IMAGE_SYM_DTYPE_FUNCTION, |
| IMAGE_SYM_DTYPE_ARRAY |
| } |
| |
| enum : BYTE { |
| IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, |
| IMAGE_SYM_CLASS_NULL = 0, |
| IMAGE_SYM_CLASS_AUTOMATIC, |
| IMAGE_SYM_CLASS_EXTERNAL, |
| IMAGE_SYM_CLASS_STATIC, |
| IMAGE_SYM_CLASS_REGISTER, |
| IMAGE_SYM_CLASS_EXTERNAL_DEF, |
| IMAGE_SYM_CLASS_LABEL, |
| IMAGE_SYM_CLASS_UNDEFINED_LABEL, |
| IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, |
| IMAGE_SYM_CLASS_ARGUMENT, |
| IMAGE_SYM_CLASS_STRUCT_TAG, |
| IMAGE_SYM_CLASS_MEMBER_OF_UNION, |
| IMAGE_SYM_CLASS_UNION_TAG, |
| IMAGE_SYM_CLASS_TYPE_DEFINITION, |
| IMAGE_SYM_CLASS_UNDEFINED_STATIC, |
| IMAGE_SYM_CLASS_ENUM_TAG, |
| IMAGE_SYM_CLASS_MEMBER_OF_ENUM, |
| IMAGE_SYM_CLASS_REGISTER_PARAM, |
| IMAGE_SYM_CLASS_BIT_FIELD, // = 18 |
| IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, |
| IMAGE_SYM_CLASS_BLOCK = 100, |
| IMAGE_SYM_CLASS_FUNCTION, |
| IMAGE_SYM_CLASS_END_OF_STRUCT, |
| IMAGE_SYM_CLASS_FILE, |
| IMAGE_SYM_CLASS_SECTION, |
| IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 |
| IMAGE_SYM_CLASS_CLR_TOKEN = 107 |
| } |
| |
| enum : BYTE { |
| IMAGE_COMDAT_SELECT_NODUPLICATES = 1, |
| IMAGE_COMDAT_SELECT_ANY, |
| IMAGE_COMDAT_SELECT_SAME_SIZE, |
| IMAGE_COMDAT_SELECT_EXACT_MATCH, |
| IMAGE_COMDAT_SELECT_ASSOCIATIVE, |
| IMAGE_COMDAT_SELECT_LARGEST, |
| IMAGE_COMDAT_SELECT_NEWEST // = 7 |
| } |
| |
| enum : DWORD { |
| IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, |
| IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, |
| IMAGE_WEAK_EXTERN_SEARCH_ALIAS |
| } |
| |
| enum : WORD { |
| IMAGE_REL_I386_ABSOLUTE = 0x0000, |
| IMAGE_REL_I386_DIR16 = 0x0001, |
| IMAGE_REL_I386_REL16 = 0x0002, |
| IMAGE_REL_I386_DIR32 = 0x0006, |
| IMAGE_REL_I386_DIR32NB = 0x0007, |
| IMAGE_REL_I386_SEG12 = 0x0009, |
| IMAGE_REL_I386_SECTION = 0x000A, |
| IMAGE_REL_I386_SECREL = 0x000B, |
| IMAGE_REL_I386_TOKEN = 0x000C, |
| IMAGE_REL_I386_SECREL7 = 0x000D, |
| IMAGE_REL_I386_REL32 = 0x0014 |
| } |
| |
| enum : WORD { |
| IMAGE_REL_AMD64_ABSOLUTE = 0x0000, |
| IMAGE_REL_AMD64_ADDR64 = 0x0001, |
| IMAGE_REL_AMD64_ADDR32 = 0x0002, |
| IMAGE_REL_AMD64_ADDR32NB = 0x0003, |
| IMAGE_REL_AMD64_REL32 = 0x0004, |
| IMAGE_REL_AMD64_REL32_1 = 0x0005, |
| IMAGE_REL_AMD64_REL32_2 = 0x0006, |
| IMAGE_REL_AMD64_REL32_3 = 0x0007, |
| IMAGE_REL_AMD64_REL32_4 = 0x0008, |
| IMAGE_REL_AMD64_REL32_5 = 0x0009, |
| IMAGE_REL_AMD64_SECTION = 0x000A, |
| IMAGE_REL_AMD64_SECREL = 0x000B, |
| IMAGE_REL_AMD64_SECREL7 = 0x000C, |
| IMAGE_REL_AMD64_TOKEN = 0x000D, |
| IMAGE_REL_AMD64_SREL32 = 0x000E, |
| IMAGE_REL_AMD64_PAIR = 0x000F, |
| IMAGE_REL_AMD64_SSPAN32 = 0x0010 |
| } |
| |
| enum : WORD { |
| IMAGE_REL_IA64_ABSOLUTE = 0x0000, |
| IMAGE_REL_IA64_IMM14 = 0x0001, |
| IMAGE_REL_IA64_IMM22 = 0x0002, |
| IMAGE_REL_IA64_IMM64 = 0x0003, |
| IMAGE_REL_IA64_DIR32 = 0x0004, |
| IMAGE_REL_IA64_DIR64 = 0x0005, |
| IMAGE_REL_IA64_PCREL21B = 0x0006, |
| IMAGE_REL_IA64_PCREL21M = 0x0007, |
| IMAGE_REL_IA64_PCREL21F = 0x0008, |
| IMAGE_REL_IA64_GPREL22 = 0x0009, |
| IMAGE_REL_IA64_LTOFF22 = 0x000A, |
| IMAGE_REL_IA64_SECTION = 0x000B, |
| IMAGE_REL_IA64_SECREL22 = 0x000C, |
| IMAGE_REL_IA64_SECREL64I = 0x000D, |
| IMAGE_REL_IA64_SECREL32 = 0x000E, |
| IMAGE_REL_IA64_DIR32NB = 0x0010, |
| IMAGE_REL_IA64_SREL14 = 0x0011, |
| IMAGE_REL_IA64_SREL22 = 0x0012, |
| IMAGE_REL_IA64_SREL32 = 0x0013, |
| IMAGE_REL_IA64_UREL32 = 0x0014, |
| IMAGE_REL_IA64_PCREL60X = 0x0015, |
| IMAGE_REL_IA64_PCREL60B = 0x0016, |
| IMAGE_REL_IA64_PCREL60F = 0x0017, |
| IMAGE_REL_IA64_PCREL60I = 0x0018, |
| IMAGE_REL_IA64_PCREL60M = 0x0019, |
| IMAGE_REL_IA64_IMMGPREL64 = 0x001A, |
| IMAGE_REL_IA64_TOKEN = 0x001B, |
| IMAGE_REL_IA64_GPREL32 = 0x001C, |
| IMAGE_REL_IA64_ADDEND = 0x001F |
| } |
| |
| enum : WORD { |
| IMAGE_REL_SH3_ABSOLUTE = 0x0000, |
| IMAGE_REL_SH3_DIRECT16 = 0x0001, |
| IMAGE_REL_SH3_DIRECT32 = 0x0002, |
| IMAGE_REL_SH3_DIRECT8 = 0x0003, |
| IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, |
| IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, |
| IMAGE_REL_SH3_DIRECT4 = 0x0006, |
| IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, |
| IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, |
| IMAGE_REL_SH3_PCREL8_WORD = 0x0009, |
| IMAGE_REL_SH3_PCREL8_LONG = 0x000A, |
| IMAGE_REL_SH3_PCREL12_WORD = 0x000B, |
| IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, |
| IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, |
| IMAGE_REL_SH3_SECTION = 0x000E, |
| IMAGE_REL_SH3_SECREL = 0x000F, |
| IMAGE_REL_SH3_DIRECT32_NB = 0x0010, |
| IMAGE_REL_SH3_GPREL4_LONG = 0x0011, |
| IMAGE_REL_SH3_TOKEN = 0x0012, |
| IMAGE_REL_SHM_PCRELPT = 0x0013, |
| IMAGE_REL_SHM_REFLO = 0x0014, |
| IMAGE_REL_SHM_REFHALF = 0x0015, |
| IMAGE_REL_SHM_RELLO = 0x0016, |
| IMAGE_REL_SHM_RELHALF = 0x0017, |
| IMAGE_REL_SHM_PAIR = 0x0018, |
| IMAGE_REL_SHM_NOMODE = 0x8000 |
| } |
| |
| enum : WORD { |
| IMAGE_REL_M32R_ABSOLUTE = 0x0000, |
| IMAGE_REL_M32R_ADDR32 = 0x0001, |
| IMAGE_REL_M32R_ADDR32NB = 0x0002, |
| IMAGE_REL_M32R_ADDR24 = 0x0003, |
| IMAGE_REL_M32R_GPREL16 = 0x0004, |
| IMAGE_REL_M32R_PCREL24 = 0x0005, |
| IMAGE_REL_M32R_PCREL16 = 0x0006, |
| IMAGE_REL_M32R_PCREL8 = 0x0007, |
| IMAGE_REL_M32R_REFHALF = 0x0008, |
| IMAGE_REL_M32R_REFHI = 0x0009, |
| IMAGE_REL_M32R_REFLO = 0x000A, |
| IMAGE_REL_M32R_PAIR = 0x000B, |
| IMAGE_REL_M32R_SECTION = 0x000C, |
| IMAGE_REL_M32R_SECREL = 0x000D, |
| IMAGE_REL_M32R_TOKEN = 0x000E |
| } |
| |
| enum : WORD { |
| IMAGE_REL_MIPS_ABSOLUTE = 0x0000, |
| IMAGE_REL_MIPS_REFHALF = 0x0001, |
| IMAGE_REL_MIPS_REFWORD = 0x0002, |
| IMAGE_REL_MIPS_JMPADDR = 0x0003, |
| IMAGE_REL_MIPS_REFHI = 0x0004, |
| IMAGE_REL_MIPS_REFLO = 0x0005, |
| IMAGE_REL_MIPS_GPREL = 0x0006, |
| IMAGE_REL_MIPS_LITERAL = 0x0007, |
| IMAGE_REL_MIPS_SECTION = 0x000A, |
| IMAGE_REL_MIPS_SECREL = 0x000B, |
| IMAGE_REL_MIPS_SECRELLO = 0x000C, |
| IMAGE_REL_MIPS_SECRELHI = 0x000D, |
| IMAGE_REL_MIPS_JMPADDR16 = 0x0010, |
| IMAGE_REL_MIPS_REFWORDNB = 0x0022, |
| IMAGE_REL_MIPS_PAIR = 0x0025 |
| } |
| |
| |
| enum : WORD { |
| IMAGE_REL_ALPHA_ABSOLUTE, |
| IMAGE_REL_ALPHA_REFLONG, |
| IMAGE_REL_ALPHA_REFQUAD, |
| IMAGE_REL_ALPHA_GPREL32, |
| IMAGE_REL_ALPHA_LITERAL, |
| IMAGE_REL_ALPHA_LITUSE, |
| IMAGE_REL_ALPHA_GPDISP, |
| IMAGE_REL_ALPHA_BRADDR, |
| IMAGE_REL_ALPHA_HINT, |
| IMAGE_REL_ALPHA_INLINE_REFLONG, |
| IMAGE_REL_ALPHA_REFHI, |
| IMAGE_REL_ALPHA_REFLO, |
| IMAGE_REL_ALPHA_PAIR, |
| IMAGE_REL_ALPHA_MATCH, |
| IMAGE_REL_ALPHA_SECTION, |
| IMAGE_REL_ALPHA_SECREL, |
| IMAGE_REL_ALPHA_REFLONGNB, |
| IMAGE_REL_ALPHA_SECRELLO, |
| IMAGE_REL_ALPHA_SECRELHI // = 18 |
| } |
| |
| enum : WORD { |
| IMAGE_REL_PPC_ABSOLUTE, |
| IMAGE_REL_PPC_ADDR64, |
| IMAGE_REL_PPC_ADDR32, |
| IMAGE_REL_PPC_ADDR24, |
| IMAGE_REL_PPC_ADDR16, |
| IMAGE_REL_PPC_ADDR14, |
| IMAGE_REL_PPC_REL24, |
| IMAGE_REL_PPC_REL14, |
| IMAGE_REL_PPC_TOCREL16, |
| IMAGE_REL_PPC_TOCREL14, |
| IMAGE_REL_PPC_ADDR32NB, |
| IMAGE_REL_PPC_SECREL, |
| IMAGE_REL_PPC_SECTION, |
| IMAGE_REL_PPC_IFGLUE, |
| IMAGE_REL_PPC_IMGLUE, |
| IMAGE_REL_PPC_SECREL16, |
| IMAGE_REL_PPC_REFHI, |
| IMAGE_REL_PPC_REFLO, |
| IMAGE_REL_PPC_PAIR // = 18 |
| } |
| |
| // ??? |
| enum IMAGE_REL_PPC_TYPEMASK = 0x00FF; |
| enum IMAGE_REL_PPC_NEG = 0x0100; |
| enum IMAGE_REL_PPC_BRTAKEN = 0x0200; |
| enum IMAGE_REL_PPC_BRNTAKEN = 0x0400; |
| enum IMAGE_REL_PPC_TOCDEFN = 0x0800; |
| |
| enum { |
| IMAGE_REL_BASED_ABSOLUTE, |
| IMAGE_REL_BASED_HIGH, |
| IMAGE_REL_BASED_LOW, |
| IMAGE_REL_BASED_HIGHLOW, |
| IMAGE_REL_BASED_HIGHADJ, |
| IMAGE_REL_BASED_MIPS_JMPADDR |
| } |
| // End of constants documented in pecoff.doc |
| |
| enum size_t IMAGE_ARCHIVE_START_SIZE = 8; |
| |
| const TCHAR[] |
| IMAGE_ARCHIVE_START = "!<arch>\n", |
| IMAGE_ARCHIVE_END = "`\n", |
| IMAGE_ARCHIVE_PAD = "\n", |
| IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", |
| IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; |
| |
| enum IMAGE_ORDINAL_FLAG32 = 0x80000000; |
| |
| ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } |
| uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } |
| |
| bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { |
| return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; |
| } |
| |
| enum ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; |
| |
| bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { |
| return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; |
| } |
| |
| // ??? |
| enum IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; |
| enum IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; |
| |
| enum : DWORD { |
| IMAGE_DEBUG_TYPE_UNKNOWN, |
| IMAGE_DEBUG_TYPE_COFF, |
| IMAGE_DEBUG_TYPE_CODEVIEW, |
| IMAGE_DEBUG_TYPE_FPO, |
| IMAGE_DEBUG_TYPE_MISC, |
| IMAGE_DEBUG_TYPE_EXCEPTION, |
| IMAGE_DEBUG_TYPE_FIXUP, |
| IMAGE_DEBUG_TYPE_OMAP_TO_SRC, |
| IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, |
| IMAGE_DEBUG_TYPE_BORLAND // = 9 |
| } |
| |
| enum : ubyte { |
| FRAME_FPO, |
| FRAME_TRAP, |
| FRAME_TSS, |
| FRAME_NONFPO |
| } |
| |
| // ??? |
| enum IMAGE_DEBUG_MISC_EXENAME = 1; |
| |
| // ??? |
| enum N_BTMASK = 0x000F; |
| enum N_TMASK = 0x0030; |
| enum N_TMASK1 = 0x00C0; |
| enum N_TMASK2 = 0x00F0; |
| enum N_BTSHFT = 4; |
| enum N_TSHIFT = 2; |
| |
| enum int |
| IS_TEXT_UNICODE_ASCII16 = 0x0001, |
| IS_TEXT_UNICODE_STATISTICS = 0x0002, |
| IS_TEXT_UNICODE_CONTROLS = 0x0004, |
| IS_TEXT_UNICODE_SIGNATURE = 0x0008, |
| IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, |
| IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, |
| IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, |
| IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, |
| IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, |
| IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, |
| IS_TEXT_UNICODE_NULL_BYTES = 0x1000, |
| IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, |
| IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, |
| IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, |
| IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; |
| |
| enum DWORD |
| SERVICE_KERNEL_DRIVER = 0x0001, |
| SERVICE_FILE_SYSTEM_DRIVER = 0x0002, |
| SERVICE_ADAPTER = 0x0004, |
| SERVICE_RECOGNIZER_DRIVER = 0x0008, |
| SERVICE_WIN32_OWN_PROCESS = 0x0010, |
| SERVICE_WIN32_SHARE_PROCESS = 0x0020, |
| SERVICE_INTERACTIVE_PROCESS = 0x0100, |
| SERVICE_DRIVER = 0x000B, |
| SERVICE_WIN32 = 0x0030, |
| SERVICE_TYPE_ALL = 0x013F; |
| |
| enum : DWORD { |
| SERVICE_BOOT_START = 0, |
| SERVICE_SYSTEM_START = 1, |
| SERVICE_AUTO_START = 2, |
| SERVICE_DEMAND_START = 3, |
| SERVICE_DISABLED = 4 |
| } |
| |
| enum : DWORD { |
| SERVICE_ERROR_IGNORE = 0, |
| SERVICE_ERROR_NORMAL = 1, |
| SERVICE_ERROR_SEVERE = 2, |
| SERVICE_ERROR_CRITICAL = 3 |
| } |
| |
| |
| enum uint |
| SE_OWNER_DEFAULTED = 0x0001, |
| SE_GROUP_DEFAULTED = 0x0002, |
| SE_DACL_PRESENT = 0x0004, |
| SE_DACL_DEFAULTED = 0x0008, |
| SE_SACL_PRESENT = 0x0010, |
| SE_SACL_DEFAULTED = 0x0020, |
| SE_DACL_AUTO_INHERIT_REQ = 0x0100, |
| SE_SACL_AUTO_INHERIT_REQ = 0x0200, |
| SE_DACL_AUTO_INHERITED = 0x0400, |
| SE_SACL_AUTO_INHERITED = 0x0800, |
| SE_DACL_PROTECTED = 0x1000, |
| SE_SACL_PROTECTED = 0x2000, |
| SE_SELF_RELATIVE = 0x8000; |
| |
| enum SECURITY_IMPERSONATION_LEVEL { |
| SecurityAnonymous, |
| SecurityIdentification, |
| SecurityImpersonation, |
| SecurityDelegation |
| } |
| alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; |
| |
| alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; |
| alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; |
| |
| enum size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; |
| |
| enum DWORD |
| SECURITY_DESCRIPTOR_REVISION = 1, |
| SECURITY_DESCRIPTOR_REVISION1 = 1; |
| |
| enum DWORD |
| SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, |
| SE_PRIVILEGE_ENABLED = 0x00000002, |
| SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; |
| |
| enum DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; |
| |
| enum SECURITY_IMPERSONATION_LEVEL |
| SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, |
| DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; |
| |
| enum BOOLEAN |
| SECURITY_DYNAMIC_TRACKING = true, |
| SECURITY_STATIC_TRACKING = false; |
| |
| // also in ddk/ntifs.h |
| enum DWORD |
| TOKEN_ASSIGN_PRIMARY = 0x0001, |
| TOKEN_DUPLICATE = 0x0002, |
| TOKEN_IMPERSONATE = 0x0004, |
| TOKEN_QUERY = 0x0008, |
| TOKEN_QUERY_SOURCE = 0x0010, |
| TOKEN_ADJUST_PRIVILEGES = 0x0020, |
| TOKEN_ADJUST_GROUPS = 0x0040, |
| TOKEN_ADJUST_DEFAULT = 0x0080, |
| |
| TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |
| | TOKEN_ASSIGN_PRIMARY |
| | TOKEN_DUPLICATE |
| | TOKEN_IMPERSONATE |
| | TOKEN_QUERY |
| | TOKEN_QUERY_SOURCE |
| | TOKEN_ADJUST_PRIVILEGES |
| | TOKEN_ADJUST_GROUPS |
| | TOKEN_ADJUST_DEFAULT, |
| TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, |
| TOKEN_WRITE = STANDARD_RIGHTS_WRITE |
| | TOKEN_ADJUST_PRIVILEGES |
| | TOKEN_ADJUST_GROUPS |
| | TOKEN_ADJUST_DEFAULT, |
| TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; |
| |
| enum size_t TOKEN_SOURCE_LENGTH = 8; |
| // end ddk/ntifs.h |
| |
| enum : DWORD { |
| DLL_PROCESS_DETACH, |
| DLL_PROCESS_ATTACH, |
| DLL_THREAD_ATTACH, |
| DLL_THREAD_DETACH |
| } |
| |
| enum : DWORD { |
| DBG_CONTINUE = 0x00010002, |
| DBG_TERMINATE_THREAD = 0x40010003, |
| DBG_TERMINATE_PROCESS = 0x40010004, |
| DBG_CONTROL_C = 0x40010005, |
| DBG_CONTROL_BREAK = 0x40010008, |
| DBG_EXCEPTION_NOT_HANDLED = 0x80010001 |
| } |
| |
| enum : DWORD { |
| TAPE_ABSOLUTE_POSITION, |
| TAPE_LOGICAL_POSITION, |
| TAPE_PSEUDO_LOGICAL_POSITION |
| } |
| |
| enum : DWORD { |
| TAPE_REWIND, |
| TAPE_ABSOLUTE_BLOCK, |
| TAPE_LOGICAL_BLOCK, |
| TAPE_PSEUDO_LOGICAL_BLOCK, |
| TAPE_SPACE_END_OF_DATA, |
| TAPE_SPACE_RELATIVE_BLOCKS, |
| TAPE_SPACE_FILEMARKS, |
| TAPE_SPACE_SEQUENTIAL_FMKS, |
| TAPE_SPACE_SETMARKS, |
| TAPE_SPACE_SEQUENTIAL_SMKS |
| } |
| |
| enum DWORD |
| TAPE_DRIVE_FIXED = 0x00000001, |
| TAPE_DRIVE_SELECT = 0x00000002, |
| TAPE_DRIVE_INITIATOR = 0x00000004, |
| TAPE_DRIVE_ERASE_SHORT = 0x00000010, |
| TAPE_DRIVE_ERASE_LONG = 0x00000020, |
| TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, |
| TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, |
| TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, |
| TAPE_DRIVE_TAPE_REMAINING = 0x00000200, |
| TAPE_DRIVE_FIXED_BLOCK = 0x00000400, |
| TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, |
| TAPE_DRIVE_WRITE_PROTECT = 0x00001000, |
| TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, |
| TAPE_DRIVE_ECC = 0x00010000, |
| TAPE_DRIVE_COMPRESSION = 0x00020000, |
| TAPE_DRIVE_PADDING = 0x00040000, |
| TAPE_DRIVE_REPORT_SMKS = 0x00080000, |
| TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, |
| TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, |
| TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, |
| TAPE_DRIVE_EJECT_MEDIA = 0x01000000, |
| TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, |
| TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, |
| TAPE_DRIVE_RESERVED_BIT = 0x80000000; |
| |
| enum DWORD |
| TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, |
| TAPE_DRIVE_TENSION = 0x80000002, |
| TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, |
| TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, |
| TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, |
| TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, |
| TAPE_DRIVE_TENSION_IMMED = 0x80000040, |
| TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, |
| TAPE_DRIVE_SET_ECC = 0x80000100, |
| TAPE_DRIVE_SET_COMPRESSION = 0x80000200, |
| TAPE_DRIVE_SET_PADDING = 0x80000400, |
| TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, |
| TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, |
| TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, |
| TAPE_DRIVE_LOGICAL_BLK = 0x80004000, |
| TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, |
| TAPE_DRIVE_END_OF_DATA = 0x80010000, |
| TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, |
| TAPE_DRIVE_FILEMARKS = 0x80040000, |
| TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, |
| TAPE_DRIVE_SETMARKS = 0x80100000, |
| TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, |
| TAPE_DRIVE_REVERSE_POSITION = 0x80400000, |
| TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, |
| TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, |
| TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, |
| TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, |
| TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, |
| TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, |
| TAPE_DRIVE_FORMAT = 0xA0000000, |
| TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, |
| TAPE_DRIVE_HIGH_FEATURES = 0x80000000; |
| |
| enum : DWORD { |
| TAPE_FIXED_PARTITIONS = 0, |
| TAPE_SELECT_PARTITIONS = 1, |
| TAPE_INITIATOR_PARTITIONS = 2 |
| } |
| |
| enum : DWORD { |
| TAPE_SETMARKS, |
| TAPE_FILEMARKS, |
| TAPE_SHORT_FILEMARKS, |
| TAPE_LONG_FILEMARKS |
| } |
| |
| enum : DWORD { |
| TAPE_ERASE_SHORT, |
| TAPE_ERASE_LONG |
| } |
| |
| enum : DWORD { |
| TAPE_LOAD, |
| TAPE_UNLOAD, |
| TAPE_TENSION, |
| TAPE_LOCK, |
| TAPE_UNLOCK, |
| TAPE_FORMAT |
| } |
| |
| enum : ULONG32 { |
| VER_PLATFORM_WIN32s, |
| VER_PLATFORM_WIN32_WINDOWS, |
| VER_PLATFORM_WIN32_NT |
| } |
| |
| enum : UCHAR { |
| VER_NT_WORKSTATION = 1, |
| VER_NT_DOMAIN_CONTROLLER, |
| VER_NT_SERVER |
| } |
| |
| enum USHORT |
| VER_SUITE_SMALLBUSINESS = 0x0001, |
| VER_SUITE_ENTERPRISE = 0x0002, |
| VER_SUITE_BACKOFFICE = 0x0004, |
| VER_SUITE_TERMINAL = 0x0010, |
| VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, |
| VER_SUITE_EMBEDDEDNT = 0x0040, |
| VER_SUITE_DATACENTER = 0x0080, |
| VER_SUITE_SINGLEUSERTS = 0x0100, |
| VER_SUITE_PERSONAL = 0x0200, |
| VER_SUITE_BLADE = 0x0400, |
| VER_SUITE_STORAGE_SERVER = 0x2000, |
| VER_SUITE_COMPUTE_SERVER = 0x4000; |
| |
| enum ULONG |
| WT_EXECUTEDEFAULT = 0x00000000, |
| WT_EXECUTEINIOTHREAD = 0x00000001, |
| WT_EXECUTEINWAITTHREAD = 0x00000004, |
| WT_EXECUTEONLYONCE = 0x00000008, |
| WT_EXECUTELONGFUNCTION = 0x00000010, |
| WT_EXECUTEINTIMERTHREAD = 0x00000020, |
| WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, |
| WT_TRANSFER_IMPERSONATION = 0x00000100; |
| |
| static if (_WIN32_WINNT >= 0x500) { |
| enum DWORD |
| VER_MINORVERSION = 0x01, |
| VER_MAJORVERSION = 0x02, |
| VER_BUILDNUMBER = 0x04, |
| VER_PLATFORMID = 0x08, |
| VER_SERVICEPACKMINOR = 0x10, |
| VER_SERVICEPACKMAJOR = 0x20, |
| VER_SUITENAME = 0x40, |
| VER_PRODUCT_TYPE = 0x80; |
| |
| enum : DWORD { |
| VER_EQUAL = 1, |
| VER_GREATER, |
| VER_GREATER_EQUAL, |
| VER_LESS, |
| VER_LESS_EQUAL, |
| VER_AND, |
| VER_OR // = 7 |
| } |
| } |
| |
| static if (_WIN32_WINNT >= 0x501) { |
| enum : ULONG { |
| ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, |
| ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, |
| ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, |
| ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, |
| ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, |
| ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, |
| ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 |
| ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 |
| } |
| } |
| |
| // Macros |
| BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } |
| bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } |
| bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } |
| bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } |
| bool ISTAG(uint x) { |
| return x == IMAGE_SYM_CLASS_STRUCT_TAG |
| || x == IMAGE_SYM_CLASS_UNION_TAG |
| || x == IMAGE_SYM_CLASS_ENUM_TAG; |
| } |
| uint INCREF(uint x) { |
| return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) |
| | (x & N_BTMASK); |
| } |
| uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } |
| |
| enum DWORD TLS_MINIMUM_AVAILABLE = 64; |
| |
| enum ULONG |
| IO_REPARSE_TAG_RESERVED_ZERO = 0, |
| IO_REPARSE_TAG_RESERVED_ONE = 1, |
| IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, |
| IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, |
| IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, |
| IO_REPARSE_TAG_SYMLINK = 0xA000000C, |
| IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; |
| |
| /* Although these are semantically boolean, they are documented and |
| * implemented to return ULONG; this behaviour is preserved for compatibility |
| */ |
| ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } |
| ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } |
| ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } |
| |
| bool IsReparseTagValid(ULONG x) { |
| return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); |
| } |
| |
| // Doesn't seem to make sense, but anyway.... |
| ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { |
| return Flags |= Limit << 16; |
| } |
| |
| import core.sys.windows.basetyps; |
| /* also in core.sys.windows.basetyps |
| struct GUID { |
| uint Data1; |
| ushort Data2; |
| ushort Data3; |
| ubyte Data4[8]; |
| } |
| alias GUID* REFGUID, LPGUID; |
| */ |
| |
| struct GENERIC_MAPPING { |
| ACCESS_MASK GenericRead; |
| ACCESS_MASK GenericWrite; |
| ACCESS_MASK GenericExecute; |
| ACCESS_MASK GenericAll; |
| } |
| alias GENERIC_MAPPING* PGENERIC_MAPPING; |
| |
| struct ACE_HEADER { |
| BYTE AceType; |
| BYTE AceFlags; |
| WORD AceSize; |
| } |
| alias ACE_HEADER* PACE_HEADER; |
| |
| struct ACCESS_ALLOWED_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD SidStart; |
| } |
| alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; |
| |
| struct ACCESS_DENIED_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD SidStart; |
| } |
| alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; |
| |
| struct SYSTEM_AUDIT_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD SidStart; |
| } |
| alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; |
| |
| struct SYSTEM_ALARM_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD SidStart; |
| } |
| alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; |
| |
| struct ACCESS_ALLOWED_OBJECT_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD Flags; |
| GUID ObjectType; |
| GUID InheritedObjectType; |
| DWORD SidStart; |
| } |
| alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; |
| |
| struct ACCESS_DENIED_OBJECT_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD Flags; |
| GUID ObjectType; |
| GUID InheritedObjectType; |
| DWORD SidStart; |
| } |
| alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; |
| |
| struct SYSTEM_AUDIT_OBJECT_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD Flags; |
| GUID ObjectType; |
| GUID InheritedObjectType; |
| DWORD SidStart; |
| } |
| alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; |
| |
| struct SYSTEM_ALARM_OBJECT_ACE { |
| ACE_HEADER Header; |
| ACCESS_MASK Mask; |
| DWORD Flags; |
| GUID ObjectType; |
| GUID InheritedObjectType; |
| DWORD SidStart; |
| } |
| alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; |
| |
| struct ACL { |
| BYTE AclRevision; |
| BYTE Sbz1; |
| WORD AclSize; |
| WORD AceCount; |
| WORD Sbz2; |
| } |
| alias ACL* PACL; |
| |
| struct ACL_REVISION_INFORMATION { |
| DWORD AclRevision; |
| } |
| |
| struct ACL_SIZE_INFORMATION { |
| DWORD AceCount; |
| DWORD AclBytesInUse; |
| DWORD AclBytesFree; |
| } |
| |
| version (X86) { |
| // ??? |
| enum SIZE_OF_80387_REGISTERS = 80; |
| enum CONTEXT_i386 = 0x010000; |
| enum CONTEXT_i486 = 0x010000; |
| enum CONTEXT_CONTROL = CONTEXT_i386 | 0x01; |
| enum CONTEXT_INTEGER = CONTEXT_i386 | 0x02; |
| enum CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; |
| enum CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; |
| enum CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; |
| enum CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; |
| enum CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; |
| enum CONTEXT_ALL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | |
| CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | |
| CONTEXT_EXTENDED_REGISTERS; |
| |
| enum MAXIMUM_SUPPORTED_EXTENSION = 512; |
| |
| struct FLOATING_SAVE_AREA { |
| DWORD ControlWord; |
| DWORD StatusWord; |
| DWORD TagWord; |
| DWORD ErrorOffset; |
| DWORD ErrorSelector; |
| DWORD DataOffset; |
| DWORD DataSelector; |
| BYTE[80] RegisterArea; |
| DWORD Cr0NpxState; |
| } |
| |
| struct CONTEXT { |
| DWORD ContextFlags; |
| DWORD Dr0; |
| DWORD Dr1; |
| DWORD Dr2; |
| DWORD Dr3; |
| DWORD Dr6; |
| DWORD Dr7; |
| FLOATING_SAVE_AREA FloatSave; |
| DWORD 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; |
| BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; |
| } |
| |
| } else version (X86_64) |
| { |
| enum CONTEXT_AMD64 = 0x100000; |
| |
| enum CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); |
| enum CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); |
| enum CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); |
| enum CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); |
| enum CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); |
| |
| enum CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); |
| enum CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); |
| |
| enum CONTEXT_EXCEPTION_ACTIVE = 0x8000000; |
| enum CONTEXT_SERVICE_ACTIVE = 0x10000000; |
| enum CONTEXT_EXCEPTION_REQUEST = 0x40000000; |
| enum CONTEXT_EXCEPTION_REPORTING = 0x80000000; |
| |
| enum INITIAL_MXCSR = 0x1f80; |
| enum INITIAL_FPCSR = 0x027f; |
| |
| align(16) struct M128A |
| { |
| ULONGLONG Low; |
| LONGLONG High; |
| } |
| alias M128A* PM128A; |
| |
| struct XMM_SAVE_AREA32 |
| { |
| WORD ControlWord; |
| WORD StatusWord; |
| BYTE TagWord; |
| BYTE Reserved1; |
| WORD ErrorOpcode; |
| DWORD ErrorOffset; |
| WORD ErrorSelector; |
| WORD Reserved2; |
| DWORD DataOffset; |
| WORD DataSelector; |
| WORD Reserved3; |
| DWORD MxCsr; |
| DWORD MxCsr_Mask; |
| M128A[8] FloatRegisters; |
| M128A[16] XmmRegisters; |
| BYTE[96] Reserved4; |
| } |
| alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; |
| enum LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; |
| |
| align(16) struct CONTEXT |
| { |
| DWORD64 P1Home; |
| DWORD64 P2Home; |
| DWORD64 P3Home; |
| DWORD64 P4Home; |
| DWORD64 P5Home; |
| DWORD64 P6Home; |
| DWORD ContextFlags; |
| DWORD MxCsr; |
| WORD SegCs; |
| WORD SegDs; |
| WORD SegEs; |
| WORD SegFs; |
| WORD SegGs; |
| WORD SegSs; |
| DWORD EFlags; |
| DWORD64 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; |
| union |
| { |
| XMM_SAVE_AREA32 FltSave; |
| XMM_SAVE_AREA32 FloatSave; |
| struct |
| { |
| M128A[2] Header; |
| M128A[8] Legacy; |
| M128A Xmm0; |
| M128A Xmm1; |
| M128A Xmm2; |
| M128A Xmm3; |
| M128A Xmm4; |
| M128A Xmm5; |
| M128A Xmm6; |
| M128A Xmm7; |
| M128A Xmm8; |
| M128A Xmm9; |
| M128A Xmm10; |
| M128A Xmm11; |
| M128A Xmm12; |
| M128A Xmm13; |
| M128A Xmm14; |
| M128A Xmm15; |
| } |
| } |
| M128A[26] VectorRegister; |
| DWORD64 VectorControl; |
| DWORD64 DebugControl; |
| DWORD64 LastBranchToRip; |
| DWORD64 LastBranchFromRip; |
| DWORD64 LastExceptionToRip; |
| DWORD64 LastExceptionFromRip; |
| } |
| |
| } else { |
| static assert(false, "Unsupported CPU"); |
| // Versions for PowerPC, Alpha, SHX, and MIPS removed. |
| } |
| |
| alias CONTEXT* PCONTEXT, LPCONTEXT; |
| |
| struct EXCEPTION_RECORD { |
| DWORD ExceptionCode; |
| DWORD ExceptionFlags; |
| EXCEPTION_RECORD* ExceptionRecord; |
| PVOID ExceptionAddress; |
| DWORD NumberParameters; |
| ULONG_PTR[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; |
| } |
| alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; |
| |
| struct EXCEPTION_POINTERS { |
| PEXCEPTION_RECORD ExceptionRecord; |
| PCONTEXT ContextRecord; |
| } |
| alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; |
| |
| union LARGE_INTEGER { |
| struct { |
| uint LowPart; |
| int HighPart; |
| } |
| long QuadPart; |
| } |
| alias LARGE_INTEGER* PLARGE_INTEGER; |
| |
| union ULARGE_INTEGER { |
| struct { |
| uint LowPart; |
| uint HighPart; |
| } |
| ulong QuadPart; |
| } |
| alias ULARGE_INTEGER* PULARGE_INTEGER; |
| |
| alias LARGE_INTEGER LUID; |
| alias LUID* PLUID; |
| |
| enum LUID SYSTEM_LUID = { QuadPart:999 }; |
| |
| align(4) struct LUID_AND_ATTRIBUTES { |
| LUID Luid; |
| DWORD Attributes; |
| } |
| alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; |
| |
| align(4) struct PRIVILEGE_SET { |
| DWORD PrivilegeCount; |
| DWORD Control; |
| LUID_AND_ATTRIBUTES _Privilege; |
| |
| LUID_AND_ATTRIBUTES* Privilege() return { return &_Privilege; } |
| } |
| alias PRIVILEGE_SET* PPRIVILEGE_SET; |
| |
| struct SECURITY_ATTRIBUTES { |
| DWORD nLength; |
| LPVOID lpSecurityDescriptor; |
| BOOL bInheritHandle; |
| } |
| alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; |
| |
| struct SECURITY_QUALITY_OF_SERVICE { |
| DWORD Length; |
| SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; |
| SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; |
| BOOLEAN EffectiveOnly; |
| } |
| alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; |
| |
| alias PVOID PACCESS_TOKEN; |
| |
| struct SE_IMPERSONATION_STATE { |
| PACCESS_TOKEN Token; |
| BOOLEAN CopyOnOpen; |
| BOOLEAN EffectiveOnly; |
| SECURITY_IMPERSONATION_LEVEL Level; |
| } |
| alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; |
| |
| struct SID_IDENTIFIER_AUTHORITY { |
| BYTE[6] Value; |
| } |
| alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; |
| |
| alias PVOID PSID; |
| |
| struct SID { |
| BYTE Revision; |
| BYTE SubAuthorityCount; |
| SID_IDENTIFIER_AUTHORITY IdentifierAuthority; |
| DWORD _SubAuthority; |
| |
| DWORD* SubAuthority() return { return &_SubAuthority; } |
| } |
| alias SID* PISID; |
| |
| struct SID_AND_ATTRIBUTES { |
| PSID Sid; |
| DWORD Attributes; |
| } |
| alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; |
| |
| struct TOKEN_SOURCE { |
| CHAR[TOKEN_SOURCE_LENGTH] SourceName = 0; |
| LUID SourceIdentifier; |
| } |
| alias TOKEN_SOURCE* PTOKEN_SOURCE; |
| |
| struct TOKEN_CONTROL { |
| LUID TokenId; |
| LUID AuthenticationId; |
| LUID ModifiedId; |
| TOKEN_SOURCE TokenSource; |
| } |
| alias TOKEN_CONTROL* PTOKEN_CONTROL; |
| |
| struct TOKEN_DEFAULT_DACL { |
| PACL DefaultDacl; |
| } |
| alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; |
| |
| struct TOKEN_GROUPS { |
| DWORD GroupCount; |
| SID_AND_ATTRIBUTES _Groups; |
| |
| SID_AND_ATTRIBUTES* Groups() return { return &_Groups; } |
| } |
| alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; |
| |
| struct TOKEN_OWNER { |
| PSID Owner; |
| } |
| alias TOKEN_OWNER* PTOKEN_OWNER; |
| enum SECURITY_MAX_SID_SIZE = 68; |
| |
| struct TOKEN_PRIMARY_GROUP { |
| PSID PrimaryGroup; |
| } |
| alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; |
| |
| struct TOKEN_PRIVILEGES { |
| DWORD PrivilegeCount; |
| LUID_AND_ATTRIBUTES _Privileges; |
| |
| LUID_AND_ATTRIBUTES* Privileges() return { return &_Privileges; } |
| } |
| alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; |
| |
| enum TOKEN_TYPE { |
| TokenPrimary = 1, |
| TokenImpersonation |
| } |
| alias TOKEN_TYPE* PTOKEN_TYPE; |
| |
| struct TOKEN_STATISTICS { |
| LUID TokenId; |
| LUID AuthenticationId; |
| LARGE_INTEGER ExpirationTime; |
| TOKEN_TYPE TokenType; |
| SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; |
| DWORD DynamicCharged; |
| DWORD DynamicAvailable; |
| DWORD GroupCount; |
| DWORD PrivilegeCount; |
| LUID ModifiedId; |
| } |
| alias TOKEN_STATISTICS* PTOKEN_STATISTICS; |
| |
| struct TOKEN_USER { |
| SID_AND_ATTRIBUTES User; |
| } |
| alias TOKEN_USER* PTOKEN_USER; |
| |
| struct TOKEN_MANDATORY_LABEL { |
| SID_AND_ATTRIBUTES Label; |
| } |
| alias PTOKEN_MANDATORY_LABEL = TOKEN_MANDATORY_LABEL*; |
| alias DWORD SECURITY_INFORMATION; |
| alias SECURITY_INFORMATION* PSECURITY_INFORMATION; |
| alias WORD SECURITY_DESCRIPTOR_CONTROL; |
| alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; |
| |
| struct SECURITY_DESCRIPTOR { |
| BYTE Revision; |
| BYTE Sbz1; |
| SECURITY_DESCRIPTOR_CONTROL Control; |
| PSID Owner; |
| PSID Group; |
| PACL Sacl; |
| PACL Dacl; |
| } |
| alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; |
| enum TOKEN_ELEVATION_TYPE { |
| TokenElevationTypeDefault = 1, |
| TokenElevationTypeFull, |
| TokenElevationTypeLimited |
| } |
| |
| alias PTOKEN_ELEVATION_TYPE = TOKEN_ELEVATION_TYPE*; |
| |
| struct TOKEN_ELEVATION { |
| DWORD TokenIsElevated; |
| } |
| alias PTOKEN_ELEVATION = TOKEN_ELEVATION*; |
| |
| enum TOKEN_INFORMATION_CLASS { |
| TokenUser = 1, |
| TokenGroups, |
| TokenPrivileges, |
| TokenOwner, |
| TokenPrimaryGroup, |
| TokenDefaultDacl, |
| TokenSource, |
| TokenType, |
| TokenImpersonationLevel, |
| TokenStatistics, |
| TokenRestrictedSids, |
| TokenSessionId, |
| TokenGroupsAndPrivileges, |
| TokenSessionReference, |
| TokenSandBoxInert, |
| TokenAuditPolicy, |
| TokenOrigin, |
| TokenElevationType, |
| TokenLinkedToken, |
| TokenElevation, |
| TokenHasRestrictions, |
| TokenAccessInformation, |
| TokenVirtualizationAllowed, |
| TokenVirtualizationEnabled, |
| TokenIntegrityLevel, |
| TokenUIAccess, |
| TokenMandatoryPolicy, |
| TokenLogonSid, |
| TokenIsAppContainer, |
| TokenCapabilities, |
| TokenAppContainerSid, |
| TokenAppContainerNumber, |
| TokenUserClaimAttributes, |
| TokenDeviceClaimAttributes, |
| TokenRestrictedUserClaimAttributes, |
| TokenRestrictedDeviceClaimAttributes, |
| TokenDeviceGroups, |
| TokenRestrictedDeviceGroups, |
| TokenSecurityAttributes, |
| TokenIsRestricted, |
| TokenProcessTrustLevel, |
| MaxTokenInfoClass // MaxTokenInfoClass should always be the last enum |
| } |
| |
| enum SID_NAME_USE { |
| SidTypeUser = 1, |
| SidTypeGroup, |
| SidTypeDomain, |
| SidTypeAlias, |
| SidTypeWellKnownGroup, |
| SidTypeDeletedAccount, |
| SidTypeInvalid, |
| SidTypeUnknown, |
| SidTypeComputer |
| } |
| alias SID_NAME_USE* PSID_NAME_USE; |
| |
| enum WELL_KNOWN_SID_TYPE { |
| WinNullSid = 0, |
| WinWorldSid = 1, |
| WinLocalSid = 2, |
| WinCreatorOwnerSid = 3, |
| WinCreatorGroupSid = 4, |
| WinCreatorOwnerServerSid = 5, |
| WinCreatorGroupServerSid = 6, |
| WinNtAuthoritySid = 7, |
| WinDialupSid = 8, |
| WinNetworkSid = 9, |
| WinBatchSid = 10, |
| WinInteractiveSid = 11, |
| WinServiceSid = 12, |
| WinAnonymousSid = 13, |
| WinProxySid = 14, |
| WinEnterpriseControllersSid = 15, |
| WinSelfSid = 16, |
| WinAuthenticatedUserSid = 17, |
| WinRestrictedCodeSid = 18, |
| WinTerminalServerSid = 19, |
| WinRemoteLogonIdSid = 20, |
| WinLogonIdsSid = 21, |
| WinLocalSystemSid = 22, |
| WinLocalServiceSid = 23, |
| WinNetworkServiceSid = 24, |
| WinBuiltinDomainSid = 25, |
| WinBuiltinAdministratorsSid = 26, |
| WinBuiltinUsersSid = 27, |
| WinBuiltinGuestsSid = 28, |
| WinBuiltinPowerUsersSid = 29, |
| WinBuiltinAccountOperatorsSid = 30, |
| WinBuiltinSystemOperatorsSid = 31, |
| WinBuiltinPrintOperatorsSid = 32, |
| WinBuiltinBackupOperatorsSid = 33, |
| WinBuiltinReplicatorSid = 34, |
| WinBuiltinPreWindows2000CompatibleAccessSid = 35, |
| WinBuiltinRemoteDesktopUsersSid = 36, |
| WinBuiltinNetworkConfigurationOperatorsSid = 37, |
| WinAccountAdministratorSid = 38, |
| WinAccountGuestSid = 39, |
| WinAccountKrbtgtSid = 40, |
| WinAccountDomainAdminsSid = 41, |
| WinAccountDomainUsersSid = 42, |
| WinAccountDomainGuestsSid = 43, |
| WinAccountComputersSid = 44, |
| WinAccountControllersSid = 45, |
| WinAccountCertAdminsSid = 46, |
| WinAccountSchemaAdminsSid = 47, |
| WinAccountEnterpriseAdminsSid = 48, |
| WinAccountPolicyAdminsSid = 49, |
| WinAccountRasAndIasServersSid = 50, |
| WinNTLMAuthenticationSid = 51, |
| WinDigestAuthenticationSid = 52, |
| WinSChannelAuthenticationSid = 53, |
| WinThisOrganizationSid = 54, |
| WinOtherOrganizationSid = 55, |
| WinBuiltinIncomingForestTrustBuildersSid = 56, |
| WinBuiltinPerfMonitoringUsersSid = 57, |
| WinBuiltinPerfLoggingUsersSid = 58, |
| WinBuiltinAuthorizationAccessSid = 59, |
| WinBuiltinTerminalServerLicenseServersSid = 60, |
| WinBuiltinDCOMUsersSid = 61, |
| WinBuiltinIUsersSid = 62, |
| WinIUserSid = 63, |
| WinBuiltinCryptoOperatorsSid = 64, |
| WinUntrustedLabelSid = 65, |
| WinLowLabelSid = 66, |
| WinMediumLabelSid = 67, |
| WinHighLabelSid = 68, |
| WinSystemLabelSid = 69, |
| WinWriteRestrictedCodeSid = 70, |
| WinCreatorOwnerRightsSid = 71, |
| WinCacheablePrincipalsGroupSid = 72, |
| WinNonCacheablePrincipalsGroupSid = 73, |
| WinEnterpriseReadonlyControllersSid = 74, |
| WinAccountReadonlyControllersSid = 75, |
| WinBuiltinEventLogReadersGroup = 76, |
| WinNewEnterpriseReadonlyControllersSid = 77, |
| WinBuiltinCertSvcDComAccessGroup = 78, |
| WinMediumPlusLabelSid = 79, |
| WinLocalLogonSid = 80, |
| WinConsoleLogonSid = 81, |
| WinThisOrganizationCertificateSid = 82, |
| WinApplicationPackageAuthoritySid = 83, |
| WinBuiltinAnyPackageSid = 84, |
| WinCapabilityInternetClientSid = 85, |
| WinCapabilityInternetClientServerSid = 86, |
| WinCapabilityPrivateNetworkClientServerSid = 87, |
| WinCapabilityPicturesLibrarySid = 88, |
| WinCapabilityVideosLibrarySid = 89, |
| WinCapabilityMusicLibrarySid = 90, |
| WinCapabilityDocumentsLibrarySid = 91, |
| WinCapabilitySharedUserCertificatesSid = 92, |
| WinCapabilityEnterpriseAuthenticationSid = 93, |
| WinCapabilityRemovableStorageSid = 94 |
| } |
| struct QUOTA_LIMITS { |
| SIZE_T PagedPoolLimit; |
| SIZE_T NonPagedPoolLimit; |
| SIZE_T MinimumWorkingSetSize; |
| SIZE_T MaximumWorkingSetSize; |
| SIZE_T PagefileLimit; |
| LARGE_INTEGER TimeLimit; |
| } |
| alias QUOTA_LIMITS* PQUOTA_LIMITS; |
| |
| struct IO_COUNTERS { |
| ULONGLONG ReadOperationCount; |
| ULONGLONG WriteOperationCount; |
| ULONGLONG OtherOperationCount; |
| ULONGLONG ReadTransferCount; |
| ULONGLONG WriteTransferCount; |
| ULONGLONG OtherTransferCount; |
| } |
| alias IO_COUNTERS* PIO_COUNTERS; |
| |
| struct FILE_NOTIFY_INFORMATION { |
| DWORD NextEntryOffset; |
| DWORD Action; |
| DWORD FileNameLength = 0; |
| WCHAR _FileName = 0; |
| |
| WCHAR* FileName() return { return &_FileName; } |
| } |
| alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; |
| |
| struct TAPE_ERASE { |
| DWORD Type; |
| BOOLEAN Immediate; |
| } |
| alias TAPE_ERASE* PTAPE_ERASE; |
| |
| struct TAPE_GET_DRIVE_PARAMETERS { |
| BOOLEAN ECC; |
| BOOLEAN Compression; |
| BOOLEAN DataPadding; |
| BOOLEAN ReportSetmarks; |
| DWORD DefaultBlockSize; |
| DWORD MaximumBlockSize; |
| DWORD MinimumBlockSize; |
| DWORD MaximumPartitionCount; |
| DWORD FeaturesLow; |
| DWORD FeaturesHigh; |
| DWORD EOTWarningZoneSize; |
| } |
| alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; |
| |
| struct TAPE_GET_MEDIA_PARAMETERS { |
| LARGE_INTEGER Capacity; |
| LARGE_INTEGER Remaining; |
| DWORD BlockSize; |
| DWORD PartitionCount; |
| BOOLEAN WriteProtected; |
| } |
| alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; |
| |
| struct TAPE_GET_POSITION { |
| ULONG Type; |
| ULONG Partition; |
| ULONG OffsetLow; |
| ULONG OffsetHigh; |
| } |
| alias TAPE_GET_POSITION* PTAPE_GET_POSITION; |
| |
| struct TAPE_PREPARE { |
| DWORD Operation; |
| BOOLEAN Immediate; |
| } |
| alias TAPE_PREPARE* PTAPE_PREPARE; |
| |
| struct TAPE_SET_DRIVE_PARAMETERS { |
| BOOLEAN ECC; |
| BOOLEAN Compression; |
| BOOLEAN DataPadding; |
| BOOLEAN ReportSetmarks; |
| ULONG EOTWarningZoneSize; |
| } |
| alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; |
| |
| struct TAPE_SET_MEDIA_PARAMETERS { |
| ULONG BlockSize; |
| } |
| alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; |
| |
| struct TAPE_SET_POSITION { |
| DWORD Method; |
| DWORD Partition; |
| LARGE_INTEGER Offset; |
| BOOLEAN Immediate; |
| } |
| alias TAPE_SET_POSITION* PTAPE_SET_POSITION; |
| |
| struct TAPE_WRITE_MARKS { |
| DWORD Type; |
| DWORD Count; |
| BOOLEAN Immediate; |
| } |
| alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; |
| |
| struct TAPE_CREATE_PARTITION { |
| DWORD Method; |
| DWORD Count; |
| DWORD Size; |
| } |
| alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; |
| |
| struct MEMORY_BASIC_INFORMATION { |
| PVOID BaseAddress; |
| PVOID AllocationBase; |
| DWORD AllocationProtect; |
| SIZE_T RegionSize; |
| DWORD State; |
| DWORD Protect; |
| DWORD Type; |
| } |
| alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; |
| |
| struct MESSAGE_RESOURCE_ENTRY { |
| WORD Length; |
| WORD Flags; |
| BYTE _Text; |
| |
| BYTE* Text() return { return &_Text; } |
| } |
| alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; |
| |
| struct MESSAGE_RESOURCE_BLOCK { |
| DWORD LowId; |
| DWORD HighId; |
| DWORD OffsetToEntries; |
| } |
| alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; |
| |
| struct MESSAGE_RESOURCE_DATA { |
| DWORD NumberOfBlocks; |
| MESSAGE_RESOURCE_BLOCK _Blocks; |
| |
| MESSAGE_RESOURCE_BLOCK* Blocks() return { return &_Blocks; } |
| } |
| alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; |
| |
| struct LIST_ENTRY { |
| LIST_ENTRY* Flink; |
| LIST_ENTRY* Blink; |
| } |
| alias LIST_ENTRY* PLIST_ENTRY; |
| alias LIST_ENTRY _LIST_ENTRY; |
| |
| struct SINGLE_LIST_ENTRY { |
| SINGLE_LIST_ENTRY* Next; |
| } |
| |
| version (Win64) { |
| align (16) |
| struct SLIST_ENTRY { |
| SLIST_ENTRY* Next; |
| } |
| } else { |
| alias SINGLE_LIST_ENTRY SLIST_ENTRY; |
| } |
| alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; |
| |
| union SLIST_HEADER { |
| ULONGLONG Alignment; |
| struct { |
| SLIST_ENTRY Next; |
| WORD Depth; |
| WORD Sequence; |
| } |
| } |
| alias SLIST_HEADER* PSLIST_HEADER; |
| |
| struct RTL_CRITICAL_SECTION_DEBUG { |
| WORD Type; |
| WORD CreatorBackTraceIndex; |
| RTL_CRITICAL_SECTION* CriticalSection; |
| LIST_ENTRY ProcessLocksList; |
| DWORD EntryCount; |
| DWORD ContentionCount; |
| DWORD[2] Spare; |
| } |
| alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; |
| alias RTL_CRITICAL_SECTION_DEBUG _RTL_CRITICAL_SECTION_DEBUG; |
| |
| struct RTL_CRITICAL_SECTION { |
| PRTL_CRITICAL_SECTION_DEBUG DebugInfo; |
| LONG LockCount; |
| LONG RecursionCount; |
| HANDLE OwningThread; |
| HANDLE LockSemaphore; |
| ULONG_PTR SpinCount; |
| alias Reserved = SpinCount; |
| } |
| alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; |
| alias RTL_CRITICAL_SECTION _RTL_CRITICAL_SECTION; |
| |
| struct EVENTLOGRECORD { |
| DWORD Length; |
| DWORD Reserved; |
| DWORD RecordNumber; |
| DWORD TimeGenerated; |
| DWORD TimeWritten; |
| DWORD EventID; |
| WORD EventType; |
| WORD NumStrings; |
| WORD EventCategory; |
| WORD ReservedFlags; |
| DWORD ClosingRecordNumber; |
| DWORD StringOffset; |
| DWORD UserSidLength; |
| DWORD UserSidOffset; |
| DWORD DataLength; |
| DWORD DataOffset; |
| } |
| alias EVENTLOGRECORD* PEVENTLOGRECORD; |
| |
| struct OSVERSIONINFOA { |
| DWORD dwOSVersionInfoSize = OSVERSIONINFOA.sizeof; |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| DWORD dwBuildNumber; |
| DWORD dwPlatformId; |
| CHAR[128] szCSDVersion = 0; |
| } |
| alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; |
| |
| struct OSVERSIONINFOW { |
| DWORD dwOSVersionInfoSize = OSVERSIONINFOW.sizeof; |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| DWORD dwBuildNumber; |
| DWORD dwPlatformId; |
| WCHAR[128] szCSDVersion = 0; |
| } |
| alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; |
| |
| struct OSVERSIONINFOEXA { |
| DWORD dwOSVersionInfoSize; |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| DWORD dwBuildNumber; |
| DWORD dwPlatformId; |
| CHAR[128] szCSDVersion = 0; |
| WORD wServicePackMajor; |
| WORD wServicePackMinor; |
| WORD wSuiteMask; |
| BYTE wProductType; |
| BYTE wReserved; |
| } |
| alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; |
| |
| struct OSVERSIONINFOEXW { |
| DWORD dwOSVersionInfoSize; |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| DWORD dwBuildNumber; |
| DWORD dwPlatformId; |
| WCHAR[128] szCSDVersion = 0; |
| WORD wServicePackMajor; |
| WORD wServicePackMinor; |
| WORD wSuiteMask; |
| BYTE wProductType; |
| BYTE wReserved; |
| } |
| alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; |
| |
| align(2) struct IMAGE_VXD_HEADER { |
| WORD e32_magic; |
| BYTE e32_border; |
| BYTE e32_worder; |
| DWORD e32_level; |
| WORD e32_cpu; |
| WORD e32_os; |
| DWORD e32_ver; |
| DWORD e32_mflags; |
| DWORD e32_mpages; |
| DWORD e32_startobj; |
| DWORD e32_eip; |
| DWORD e32_stackobj; |
| DWORD e32_esp; |
| DWORD e32_pagesize; |
| DWORD e32_lastpagesize; |
| DWORD e32_fixupsize; |
| DWORD e32_fixupsum; |
| DWORD e32_ldrsize; |
| DWORD e32_ldrsum; |
| DWORD e32_objtab; |
| DWORD e32_objcnt; |
| DWORD e32_objmap; |
| DWORD e32_itermap; |
| DWORD e32_rsrctab; |
| DWORD e32_rsrccnt; |
| DWORD e32_restab; |
| DWORD e32_enttab; |
| DWORD e32_dirtab; |
| DWORD e32_dircnt; |
| DWORD e32_fpagetab; |
| DWORD e32_frectab; |
| DWORD e32_impmod; |
| DWORD e32_impmodcnt; |
| DWORD e32_impproc; |
| DWORD e32_pagesum; |
| DWORD e32_datapage; |
| DWORD e32_preload; |
| DWORD e32_nrestab; |
| DWORD e32_cbnrestab; |
| DWORD e32_nressum; |
| DWORD e32_autodata; |
| DWORD e32_debuginfo; |
| DWORD e32_debuglen; |
| DWORD e32_instpreload; |
| DWORD e32_instdemand; |
| DWORD e32_heapsize; |
| BYTE[12] e32_res3; |
| DWORD e32_winresoff; |
| DWORD e32_winreslen; |
| WORD e32_devid; |
| WORD e32_ddkver; |
| } |
| alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; |
| |
| align(4): |
| struct IMAGE_FILE_HEADER { |
| WORD Machine; |
| WORD NumberOfSections; |
| DWORD TimeDateStamp; |
| DWORD PointerToSymbolTable; |
| DWORD NumberOfSymbols; |
| WORD SizeOfOptionalHeader; |
| WORD Characteristics; |
| } |
| alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; |
| // const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; |
| |
| struct IMAGE_DATA_DIRECTORY { |
| DWORD VirtualAddress; |
| DWORD Size; |
| } |
| alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; |
| |
| struct IMAGE_OPTIONAL_HEADER32 { |
| WORD Magic; |
| BYTE MajorLinkerVersion; |
| BYTE MinorLinkerVersion; |
| DWORD SizeOfCode; |
| DWORD SizeOfInitializedData; |
| DWORD SizeOfUninitializedData; |
| DWORD AddressOfEntryPoint; |
| DWORD BaseOfCode; |
| DWORD BaseOfData; |
| DWORD ImageBase; |
| DWORD SectionAlignment; |
| DWORD FileAlignment; |
| WORD MajorOperatingSystemVersion; |
| WORD MinorOperatingSystemVersion; |
| WORD MajorImageVersion; |
| WORD MinorImageVersion; |
| WORD MajorSubsystemVersion; |
| WORD MinorSubsystemVersion; |
| DWORD Win32VersionValue; |
| DWORD SizeOfImage; |
| DWORD SizeOfHeaders; |
| DWORD CheckSum; |
| WORD Subsystem; |
| WORD DllCharacteristics; |
| DWORD SizeOfStackReserve; |
| DWORD SizeOfStackCommit; |
| DWORD SizeOfHeapReserve; |
| DWORD SizeOfHeapCommit; |
| DWORD LoaderFlags; |
| DWORD NumberOfRvaAndSizes; |
| IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; |
| } |
| alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; |
| |
| struct IMAGE_OPTIONAL_HEADER64 { |
| WORD Magic; |
| BYTE MajorLinkerVersion; |
| BYTE MinorLinkerVersion; |
| DWORD SizeOfCode; |
| DWORD SizeOfInitializedData; |
| DWORD SizeOfUninitializedData; |
| DWORD AddressOfEntryPoint; |
| DWORD BaseOfCode; |
| ULONGLONG ImageBase; |
| DWORD SectionAlignment; |
| DWORD FileAlignment; |
| WORD MajorOperatingSystemVersion; |
| WORD MinorOperatingSystemVersion; |
| WORD MajorImageVersion; |
| WORD MinorImageVersion; |
| WORD MajorSubsystemVersion; |
| WORD MinorSubsystemVersion; |
| DWORD Win32VersionValue; |
| DWORD SizeOfImage; |
| DWORD SizeOfHeaders; |
| DWORD CheckSum; |
| WORD Subsystem; |
| WORD DllCharacteristics; |
| ULONGLONG SizeOfStackReserve; |
| ULONGLONG SizeOfStackCommit; |
| ULONGLONG SizeOfHeapReserve; |
| ULONGLONG SizeOfHeapCommit; |
| DWORD LoaderFlags; |
| DWORD NumberOfRvaAndSizes; |
| IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; |
| } |
| alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; |
| |
| struct IMAGE_ROM_OPTIONAL_HEADER { |
| WORD Magic; |
| BYTE MajorLinkerVersion; |
| BYTE MinorLinkerVersion; |
| DWORD SizeOfCode; |
| DWORD SizeOfInitializedData; |
| DWORD SizeOfUninitializedData; |
| DWORD AddressOfEntryPoint; |
| DWORD BaseOfCode; |
| DWORD BaseOfData; |
| DWORD BaseOfBss; |
| DWORD GprMask; |
| DWORD[4] CprMask; |
| DWORD GpValue; |
| } |
| alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; |
| |
| align(2): |
| struct IMAGE_DOS_HEADER { |
| WORD e_magic; |
| WORD e_cblp; |
| WORD e_cp; |
| WORD e_crlc; |
| WORD e_cparhdr; |
| WORD e_minalloc; |
| WORD e_maxalloc; |
| WORD e_ss; |
| WORD e_sp; |
| WORD e_csum; |
| WORD e_ip; |
| WORD e_cs; |
| WORD e_lfarlc; |
| WORD e_ovno; |
| WORD[4] e_res; |
| WORD e_oemid; |
| WORD e_oeminfo; |
| WORD[10] e_res2; |
| LONG e_lfanew; |
| } |
| alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; |
| |
| struct IMAGE_OS2_HEADER { |
| WORD ne_magic; |
| CHAR ne_ver = 0; |
| CHAR ne_rev = 0; |
| WORD ne_enttab; |
| WORD ne_cbenttab; |
| LONG ne_crc; |
| WORD ne_flags; |
| WORD ne_autodata; |
| WORD ne_heap; |
| WORD ne_stack; |
| LONG ne_csip; |
| LONG ne_sssp; |
| WORD ne_cseg; |
| WORD ne_cmod; |
| WORD ne_cbnrestab; |
| WORD ne_segtab; |
| WORD ne_rsrctab; |
| WORD ne_restab; |
| WORD ne_modtab; |
| WORD ne_imptab; |
| LONG ne_nrestab; |
| WORD ne_cmovent; |
| WORD ne_align; |
| WORD ne_cres; |
| BYTE ne_exetyp; |
| BYTE ne_flagsothers; |
| WORD ne_pretthunks; |
| WORD ne_psegrefbytes; |
| WORD ne_swaparea; |
| WORD ne_expver; |
| } |
| alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; |
| |
| align(4) struct IMAGE_NT_HEADERS32 { |
| DWORD Signature; |
| IMAGE_FILE_HEADER FileHeader; |
| IMAGE_OPTIONAL_HEADER32 OptionalHeader; |
| } |
| alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; |
| |
| align(4) struct IMAGE_NT_HEADERS64 { |
| DWORD Signature; |
| IMAGE_FILE_HEADER FileHeader; |
| IMAGE_OPTIONAL_HEADER64 OptionalHeader; |
| } |
| alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; |
| |
| struct IMAGE_ROM_HEADERS { |
| IMAGE_FILE_HEADER FileHeader; |
| IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; |
| } |
| alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; |
| |
| struct IMAGE_SECTION_HEADER { |
| BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; |
| union _Misc { |
| DWORD PhysicalAddress; |
| DWORD VirtualSize; |
| } |
| _Misc Misc; |
| DWORD VirtualAddress; |
| DWORD SizeOfRawData; |
| DWORD PointerToRawData; |
| DWORD PointerToRelocations; |
| DWORD PointerToLinenumbers; |
| WORD NumberOfRelocations; |
| WORD NumberOfLinenumbers; |
| DWORD Characteristics; |
| } |
| alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; |
| |
| struct IMAGE_SYMBOL { |
| union _N { |
| BYTE[8] ShortName; |
| struct _Name { |
| DWORD Short; |
| DWORD Long; |
| } |
| _Name Name; |
| DWORD[2] LongName; // PBYTE[2] |
| } |
| _N N; |
| DWORD Value; |
| SHORT SectionNumber; |
| WORD Type; |
| BYTE StorageClass; |
| BYTE NumberOfAuxSymbols; |
| } |
| alias IMAGE_SYMBOL* PIMAGE_SYMBOL; |
| |
| union IMAGE_AUX_SYMBOL { |
| struct _Sym { |
| DWORD TagIndex; |
| union _Misc { |
| struct _LnSz { |
| WORD Linenumber; |
| WORD Size; |
| } |
| _LnSz LnSz; |
| DWORD TotalSize; |
| } |
| _Misc Misc; |
| union _FcnAry { |
| struct _Function { |
| DWORD PointerToLinenumber; |
| DWORD PointerToNextFunction; |
| } |
| _Function Function; |
| struct _Array { |
| WORD[4] Dimension; |
| } |
| _Array Array; |
| } |
| _FcnAry FcnAry; |
| WORD TvIndex; |
| } |
| _Sym Sym; |
| struct _File { |
| BYTE[IMAGE_SIZEOF_SYMBOL] Name; |
| } |
| _File File; |
| struct _Section { |
| DWORD Length; |
| WORD NumberOfRelocations; |
| WORD NumberOfLinenumbers; |
| DWORD CheckSum; |
| SHORT Number; |
| BYTE Selection; |
| } |
| _Section Section; |
| } |
| alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; |
| |
| struct IMAGE_COFF_SYMBOLS_HEADER { |
| DWORD NumberOfSymbols; |
| DWORD LvaToFirstSymbol; |
| DWORD NumberOfLinenumbers; |
| DWORD LvaToFirstLinenumber; |
| DWORD RvaToFirstByteOfCode; |
| DWORD RvaToLastByteOfCode; |
| DWORD RvaToFirstByteOfData; |
| DWORD RvaToLastByteOfData; |
| } |
| alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; |
| |
| struct IMAGE_RELOCATION { |
| union { |
| DWORD VirtualAddress; |
| DWORD RelocCount; |
| } |
| DWORD SymbolTableIndex; |
| WORD Type; |
| } |
| alias IMAGE_RELOCATION* PIMAGE_RELOCATION; |
| |
| align(4) struct IMAGE_BASE_RELOCATION { |
| DWORD VirtualAddress; |
| DWORD SizeOfBlock; |
| } |
| alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; |
| |
| align(2) struct IMAGE_LINENUMBER { |
| union _Type { |
| DWORD SymbolTableIndex; |
| DWORD VirtualAddress; |
| } |
| _Type Type; |
| WORD Linenumber; |
| } |
| alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; |
| |
| align(4): |
| struct IMAGE_ARCHIVE_MEMBER_HEADER { |
| BYTE[16] Name; |
| BYTE[12] Date; |
| BYTE[6] UserID; |
| BYTE[6] GroupID; |
| BYTE[8] Mode; |
| BYTE[10] Size; |
| BYTE[2] EndHeader; |
| } |
| alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; |
| |
| struct IMAGE_EXPORT_DIRECTORY { |
| DWORD Characteristics; |
| DWORD TimeDateStamp; |
| WORD MajorVersion; |
| WORD MinorVersion; |
| DWORD Name; |
| DWORD Base; |
| DWORD NumberOfFunctions; |
| DWORD NumberOfNames; |
| DWORD AddressOfFunctions; |
| DWORD AddressOfNames; |
| DWORD AddressOfNameOrdinals; |
| } |
| alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; |
| |
| struct IMAGE_IMPORT_BY_NAME { |
| WORD Hint; |
| BYTE _Name; |
| |
| BYTE* Name() return { return &_Name; } |
| } |
| alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; |
| |
| struct IMAGE_THUNK_DATA32 { |
| union _u1 { |
| DWORD ForwarderString; |
| DWORD Function; |
| DWORD Ordinal; |
| DWORD AddressOfData; |
| } |
| _u1 u1; |
| } |
| alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; |
| |
| struct IMAGE_THUNK_DATA64 { |
| union _u1 { |
| ULONGLONG ForwarderString; |
| ULONGLONG Function; |
| ULONGLONG Ordinal; |
| ULONGLONG AddressOfData; |
| } |
| _u1 u1; |
| } |
| alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; |
| |
| struct IMAGE_IMPORT_DESCRIPTOR { |
| union { |
| DWORD Characteristics; |
| DWORD OriginalFirstThunk; |
| } |
| DWORD TimeDateStamp; |
| DWORD ForwarderChain; |
| DWORD Name; |
| DWORD FirstThunk; |
| } |
| alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; |
| |
| struct IMAGE_BOUND_IMPORT_DESCRIPTOR { |
| DWORD TimeDateStamp; |
| WORD OffsetModuleName; |
| WORD NumberOfModuleForwarderRefs; |
| } |
| alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; |
| |
| struct IMAGE_BOUND_FORWARDER_REF { |
| DWORD TimeDateStamp; |
| WORD OffsetModuleName; |
| WORD Reserved; |
| } |
| alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; |
| |
| struct IMAGE_TLS_DIRECTORY32 { |
| DWORD StartAddressOfRawData; |
| DWORD EndAddressOfRawData; |
| DWORD AddressOfIndex; |
| DWORD AddressOfCallBacks; |
| DWORD SizeOfZeroFill; |
| DWORD Characteristics; |
| } |
| alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; |
| |
| struct IMAGE_TLS_DIRECTORY64 { |
| ULONGLONG StartAddressOfRawData; |
| ULONGLONG EndAddressOfRawData; |
| ULONGLONG AddressOfIndex; |
| ULONGLONG AddressOfCallBacks; |
| DWORD SizeOfZeroFill; |
| DWORD Characteristics; |
| } |
| alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; |
| |
| struct IMAGE_RESOURCE_DIRECTORY { |
| DWORD Characteristics; |
| DWORD TimeDateStamp; |
| WORD MajorVersion; |
| WORD MinorVersion; |
| WORD NumberOfNamedEntries; |
| WORD NumberOfIdEntries; |
| } |
| alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; |
| |
| struct IMAGE_RESOURCE_DIRECTORY_ENTRY { |
| union { |
| /+struct { |
| DWORD NameOffset:31; |
| DWORD NameIsString:1; |
| }+/ |
| DWORD Name; |
| WORD Id; |
| } |
| DWORD OffsetToData; |
| /+struct { |
| DWORD OffsetToDirectory:31; |
| DWORD DataIsDirectory:1; |
| }+/ |
| |
| uint NameOffset() { return Name & 0x7FFFFFFF; } |
| bool NameIsString() |