*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef _WINNT_
#define _WINNT_
#include <basetsd.h>
+#include <guiddef.h>
#ifndef RC_INVOKED
#include <ctype.h>
#include <string.h>
#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _NTSYSTEM_
+#define NTSYSAPI
+#else
+#define NTSYSAPI DECLSPEC_IMPORT
+#endif
+
#define NTAPI __stdcall
-#if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64) || defined(__MINGW32__)) && !defined(MIDL_PASS)
+#ifndef MIDL_PASS
# if defined(_MSC_VER)
# define DECLSPEC_IMPORT __declspec(dllimport)
-# elif defined(__MINGW32__)
+# elif defined(__MINGW32__) || defined(__CYGWIN__)
# define DECLSPEC_IMPORT __attribute__((dllimport))
# else
-# define DECLSPEC_IMPORT
+# define DECLSPEC_IMPORT DECLSPEC_HIDDEN
# endif
#else
# define DECLSPEC_IMPORT
# endif
#endif
+/* a couple of useful Wine extensions */
+
+#ifdef _MSC_VER
+# define DECLSPEC_EXPORT __declspec(dllexport)
+#elif defined(__MINGW32__)
+# define DECLSPEC_EXPORT __attribute__((dllexport))
+#elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define DECLSPEC_EXPORT __attribute__((visibility ("default")))
+#else
+# define DECLSPEC_EXPORT
+#endif
+
+#if defined(__MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
+# define DECLSPEC_HIDDEN
+#elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define DECLSPEC_HIDDEN __attribute__((visibility ("hidden")))
+#else
+# define DECLSPEC_HIDDEN
+#endif
+
/* Anonymous union/struct handling */
#ifndef NONAMELESSSTRUCT
#if defined(_MSC_VER)
# define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
#elif defined(__GNUC__)
-# define C_ASSERT(e) extern char __C_ASSERT__[(e)?1:-1]
+# define C_ASSERT(e) extern char __C_ASSERT__[(e)?1:-1] __attribute__((unused))
+#else
+# define C_ASSERT(e)
#endif
/* Eliminate Microsoft C/C++ compiler warning 4715 */
#define VOID void
#endif
typedef VOID *PVOID;
+typedef VOID *PVOID64;
typedef BYTE BOOLEAN, *PBOOLEAN;
typedef char CHAR, *PCHAR;
typedef short SHORT, *PSHORT;
+#ifdef _MSC_VER
typedef long LONG, *PLONG;
+#else
+typedef int LONG, *PLONG;
+#endif
/* Some systems might have wchar_t, but we really need 16 bit characters */
#ifdef WINE_UNICODE_NATIVE
/* Misc common WIN32 types */
typedef char CCHAR;
-typedef LONG HRESULT;
typedef DWORD LCID, *PLCID;
typedef WORD LANGID;
typedef DWORD EXECUTION_STATE;
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef LONG HRESULT;
+#endif
/* Handle type */
#define DECLARE_HANDLE(a) typedef HANDLE a
#endif /*STRICT*/
+typedef BYTE FCHAR;
+typedef WORD FSHORT;
+typedef DWORD FLONG;
+
/* Defines */
#ifndef WIN32_NO_STATUS
-#define STATUS_WAIT_0 0x00000000
-#define STATUS_ABANDONED_WAIT_0 0x00000080
-#define STATUS_USER_APC 0x000000C0
-#define STATUS_TIMEOUT 0x00000102
-#define STATUS_PENDING 0x00000103
-#define STATUS_SEGMENT_NOTIFICATION 0x40000005
-#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
-#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
-#define STATUS_BREAKPOINT 0x80000003
-#define STATUS_SINGLE_STEP 0x80000004
-#define STATUS_ACCESS_VIOLATION 0xC0000005
-#define STATUS_IN_PAGE_ERROR 0xC0000006
-#define STATUS_INVALID_HANDLE 0xC0000008
-#define STATUS_NO_MEMORY 0xC0000017
-#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
-#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
-#define STATUS_INVALID_DISPOSITION 0xC0000026
-#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
-#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
-#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
-#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
-#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
-#define STATUS_FLOAT_OVERFLOW 0xC0000091
-#define STATUS_FLOAT_STACK_CHECK 0xC0000092
-#define STATUS_FLOAT_UNDERFLOW 0xC0000093
-#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
-#define STATUS_INTEGER_OVERFLOW 0xC0000095
-#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
-#define STATUS_STACK_OVERFLOW 0xC00000FD
-#define STATUS_CONTROL_C_EXIT 0xC000013A
-#define STATUS_FLOAT_MULTIPLE_FAULTS 0xC00002B4
-#define STATUS_FLOAT_MULTIPLE_TRAPS 0xC00002B5
-#define STATUS_REG_NAT_CONSUMPTION 0xC00002C9
-#define STATUS_SXS_EARLY_DEACTIVATION 0xC015000F
-#define STATUS_SXS_INVALID_DEACTIVATION 0xC0150010
+#define STATUS_WAIT_0 ((DWORD) 0x00000000)
+#define STATUS_ABANDONED_WAIT_0 ((DWORD) 0x00000080)
+#define STATUS_USER_APC ((DWORD) 0x000000C0)
+#define STATUS_TIMEOUT ((DWORD) 0x00000102)
+#define STATUS_PENDING ((DWORD) 0x00000103)
+#define STATUS_SEGMENT_NOTIFICATION ((DWORD) 0x40000005)
+#define STATUS_GUARD_PAGE_VIOLATION ((DWORD) 0x80000001)
+#define STATUS_DATATYPE_MISALIGNMENT ((DWORD) 0x80000002)
+#define STATUS_BREAKPOINT ((DWORD) 0x80000003)
+#define STATUS_SINGLE_STEP ((DWORD) 0x80000004)
+#define STATUS_ACCESS_VIOLATION ((DWORD) 0xC0000005)
+#define STATUS_IN_PAGE_ERROR ((DWORD) 0xC0000006)
+#define STATUS_INVALID_HANDLE ((DWORD) 0xC0000008)
+#define STATUS_NO_MEMORY ((DWORD) 0xC0000017)
+#define STATUS_ILLEGAL_INSTRUCTION ((DWORD) 0xC000001D)
+#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD) 0xC0000025)
+#define STATUS_INVALID_DISPOSITION ((DWORD) 0xC0000026)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD) 0xC000008C)
+#define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD) 0xC000008D)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD) 0xC000008E)
+#define STATUS_FLOAT_INEXACT_RESULT ((DWORD) 0xC000008F)
+#define STATUS_FLOAT_INVALID_OPERATION ((DWORD) 0xC0000090)
+#define STATUS_FLOAT_OVERFLOW ((DWORD) 0xC0000091)
+#define STATUS_FLOAT_STACK_CHECK ((DWORD) 0xC0000092)
+#define STATUS_FLOAT_UNDERFLOW ((DWORD) 0xC0000093)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD) 0xC0000094)
+#define STATUS_INTEGER_OVERFLOW ((DWORD) 0xC0000095)
+#define STATUS_PRIVILEGED_INSTRUCTION ((DWORD) 0xC0000096)
+#define STATUS_STACK_OVERFLOW ((DWORD) 0xC00000FD)
+#define STATUS_CONTROL_C_EXIT ((DWORD) 0xC000013A)
+#define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD) 0xC00002B4)
+#define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD) 0xC00002B5)
+#define STATUS_REG_NAT_CONSUMPTION ((DWORD) 0xC00002C9)
+#define STATUS_SXS_EARLY_DEACTIVATION ((DWORD) 0xC015000F)
+#define STATUS_SXS_INVALID_DEACTIVATION ((DWORD) 0xC0150010)
/* status values for ContinueDebugEvent */
-#define DBG_EXCEPTION_HANDLED 0x00010001
-#define DBG_CONTINUE 0x00010002
-#define DBG_TERMINATE_THREAD 0x40010003
-#define DBG_TERMINATE_PROCESS 0x40010004
-#define DBG_CONTROL_C 0x40010005
-#define DBG_CONTROL_BREAK 0x40010008
-#define DBG_COMMAND_EXCEPTION 0x40010009
-#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
+#define DBG_EXCEPTION_HANDLED ((DWORD) 0x00010001)
+#define DBG_CONTINUE ((DWORD) 0x00010002)
+#define DBG_TERMINATE_THREAD ((DWORD) 0x40010003)
+#define DBG_TERMINATE_PROCESS ((DWORD) 0x40010004)
+#define DBG_CONTROL_C ((DWORD) 0x40010005)
+#define DBG_CONTROL_BREAK ((DWORD) 0x40010008)
+#define DBG_COMMAND_EXCEPTION ((DWORD) 0x40010009)
+#define DBG_EXCEPTION_NOT_HANDLED ((DWORD) 0x80010001)
#endif /* WIN32_NO_STATUS */
#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */
#define DLL_THREAD_ATTACH 2 /* attach new thread */
#define DLL_THREAD_DETACH 3 /* detach thread */
-
+#ifdef __WINESRC__
+#define DLL_WINE_PREATTACH 8 /* called before process attach for Wine builtins */
+#endif
/* u.x.wProcessorArchitecture (NT) */
#define PROCESSOR_ARCHITECTURE_INTEL 0
#define PROCESSOR_ARCHITECTURE_PPC 3
#define PROCESSOR_ARCHITECTURE_SHX 4
#define PROCESSOR_ARCHITECTURE_ARM 5
+#define PROCESSOR_ARCHITECTURE_IA64 6
+#define PROCESSOR_ARCHITECTURE_ALPHA64 7
+#define PROCESSOR_ARCHITECTURE_MSIL 8
+#define PROCESSOR_ARCHITECTURE_AMD64 9
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
/* dwProcessorType */
#define PROCESSOR_INTEL_486 486
#define PROCESSOR_INTEL_PENTIUM 586
#define PROCESSOR_INTEL_860 860
+#define PROCESSOR_INTEL_IA64 2200
+#define PROCESSOR_AMD_X8664 8664
#define PROCESSOR_MIPS_R2000 2000
#define PROCESSOR_MIPS_R3000 3000
#define PROCESSOR_MIPS_R4000 4000
LPVOID BaseAddress;
LPVOID AllocationBase;
DWORD AllocationProtect;
- DWORD RegionSize;
+ SIZE_T RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
#define PAGE_EXECUTE_WRITECOPY 0x80
#define PAGE_GUARD 0x100
#define PAGE_NOCACHE 0x200
+#define PAGE_WRITECOMBINE 0x400
#define MEM_COMMIT 0x00001000
#define MEM_RESERVE 0x00002000
#define MEM_MAPPED 0x00040000
#define MEM_RESET 0x00080000
#define MEM_TOP_DOWN 0x00100000
+#define MEM_WRITE_WATCH 0x00200000
#define MEM_PHYSICAL 0x00400000
+#define MEM_LARGE_PAGES 0x20000000
+#define MEM_4MB_PAGES 0x80000000
#ifdef __WINESRC__
#define MEM_SYSTEM 0x80000000
#endif
#define SEC_RESERVE 0x04000000
#define SEC_COMMIT 0x08000000
#define SEC_NOCACHE 0x10000000
+#define SEC_LARGE_PAGES 0x80000000
#define MEM_IMAGE SEC_IMAGE
+#define WRITE_WATCH_FLAG_RESET 0x00000001
+
#define MINCHAR 0x80
#define MAXCHAR 0x7f
#define MAXDWORD 0xffffffff
#define FIELD_OFFSET(type, field) \
- ((LONG)(INT)&(((type *)0)->field))
+ ((LONG)(INT_PTR)&(((type *)0)->field))
#define CONTAINING_RECORD(address, type, field) \
((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
struct _SINGLE_LIST_ENTRY *Next;
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+#ifdef _WIN64
+
+typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY;
+typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
+ PSLIST_ENTRY Next;
+} SLIST_ENTRY;
+
+typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
+ struct {
+ ULONGLONG Alignment;
+ ULONGLONG Region;
+ } DUMMYSTRUCTNAME;
+ struct {
+ ULONGLONG Depth:16;
+ ULONGLONG Sequence:9;
+ ULONGLONG NextEntry:39;
+ ULONGLONG HeaderType:1;
+ ULONGLONG Init:1;
+ ULONGLONG Reserved:59;
+ ULONGLONG Region:3;
+ } Header8;
+ struct {
+ ULONGLONG Depth:16;
+ ULONGLONG Sequence:48;
+ ULONGLONG HeaderType:1;
+ ULONGLONG Init:1;
+ ULONGLONG Reserved:2;
+ ULONGLONG NextEntry:60;
+ } Header16;
+} SLIST_HEADER, *PSLIST_HEADER;
+
+#else
+
+#undef SLIST_ENTRY /* for Mac OS */
+#define SLIST_ENTRY SINGLE_LIST_ENTRY
+#define _SLIST_ENTRY _SINGLE_LIST_ENTRY
+#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
+
+typedef union _SLIST_HEADER {
+ ULONGLONG Alignment;
+ struct {
+ SLIST_ENTRY Next;
+ WORD Depth;
+ WORD Sequence;
+ } DUMMYSTRUCTNAME;
+} SLIST_HEADER, *PSLIST_HEADER;
+
+#endif
+
+NTSYSAPI PSLIST_ENTRY WINAPI RtlFirstEntrySList(const SLIST_HEADER*);
+NTSYSAPI VOID WINAPI RtlInitializeSListHead(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedFlushSList(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedPopEntrySList(PSLIST_HEADER);
+NTSYSAPI PSLIST_ENTRY WINAPI RtlInterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY);
+NTSYSAPI WORD WINAPI RtlQueryDepthSList(PSLIST_HEADER);
+
+
/* Heap flags */
#define HEAP_NO_SERIALIZE 0x00000001
#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
#define HEAP_CREATE_ALIGN_16 0x00010000
#define HEAP_CREATE_ENABLE_TRACING 0x00020000
+#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
/* This flag allows it to create heaps shared by all processes under win95,
FIXME: correct name */
#define HEAP_SHARED 0x04000000
+typedef enum _HEAP_INFORMATION_CLASS {
+ HeapCompatibilityInformation,
+} HEAP_INFORMATION_CLASS;
+
/* Processor feature flags. */
#define PF_FLOATING_POINT_PRECISION_ERRATA 0
#define PF_FLOATING_POINT_EMULATED 1
#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
#define PF_PAE_ENABLED 9
#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
+#define PF_SSE_DAZ_MODE_AVAILABLE 11
+#define PF_NX_ENABLED 12
+#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
+#define PF_COMPARE_EXCHANGE128 14
+#define PF_COMPARE64_EXCHANGE128 15
+#define PF_CHANNELS_ENABLED 16
/* Execution state flags */
#define CONTEXT86_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
#define CONTEXT86_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */
#define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
+#define CONTEXT86_EXTENDED_REGISTERS (CONTEXT_i386 | 0x0020L)
#define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)
+#define CONTEXT86_ALL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS | \
+ CONTEXT86_FLOATING_POINT | CONTEXT86_DEBUG_REGISTERS | CONTEXT86_EXTENDED_REGISTERS)
/* i386 context definitions */
#ifdef __i386__
#define CONTEXT_SEGMENTS CONTEXT86_SEGMENTS
#define CONTEXT_FLOATING_POINT CONTEXT86_FLOATING_POINT
#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS
+#define CONTEXT_EXTENDED_REGISTERS CONTEXT86_EXTENDED_REGISTERS
#define CONTEXT_FULL CONTEXT86_FULL
+#define CONTEXT_ALL CONTEXT86_ALL
typedef CONTEXT86 CONTEXT;
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
#endif /* __i386__ */
typedef struct _LDT_ENTRY {
WORD LimitLow;
WORD BaseLow;
union {
- struct {
- BYTE BaseMid;
- BYTE Flags1;/*Declare as bytes to avoid alignment problems */
- BYTE Flags2;
- BYTE BaseHi;
- } Bytes;
- struct {
- unsigned BaseMid : 8;
- unsigned Type : 5;
- unsigned Dpl : 2;
- unsigned Pres : 1;
- unsigned LimitHi : 4;
- unsigned Sys : 1;
- unsigned Reserved_0 : 1;
- unsigned Default_Big : 1;
- unsigned Granularity : 1;
- unsigned BaseHi : 8;
- } Bits;
+ struct {
+ BYTE BaseMid;
+ BYTE Flags1;
+ BYTE Flags2;
+ BYTE BaseHi;
+ } Bytes;
+ struct {
+ unsigned BaseMid: 8;
+ unsigned Type : 5;
+ unsigned Dpl : 2;
+ unsigned Pres : 1;
+ unsigned LimitHi : 4;
+ unsigned Sys : 1;
+ unsigned Reserved_0 : 1;
+ unsigned Default_Big : 1;
+ unsigned Granularity : 1;
+ unsigned BaseHi : 8;
+ } Bits;
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY;
+/* x86-64 context definitions */
+#if defined(__x86_64__)
+
+#define CONTEXT_AMD64 0x00100000
+
+#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x0001)
+#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x0002)
+#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x0004)
+#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x0008L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x0010L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
+#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
+
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct DECLSPEC_ALIGN(16) _M128A {
+ ULONGLONG Low;
+ LONGLONG High;
+} M128A, *PM128A;
+
+typedef 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 FloatRegisters[8];
+ M128A XmmRegisters[16];
+ BYTE Reserved4[96];
+} XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
+
+typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
+ DWORD64 P1Home;
+ DWORD64 P2Home;
+ DWORD64 P3Home;
+ DWORD64 P4Home;
+ DWORD64 P5Home;
+ DWORD64 P6Home;
+
+ /* Control flags */
+ DWORD ContextFlags;
+ DWORD MxCsr;
+
+ /* Segment */
+ WORD SegCs;
+ WORD SegDs;
+ WORD SegEs;
+ WORD SegFs;
+ WORD SegGs;
+ WORD SegSs;
+ DWORD EFlags;
+
+ /* Debug */
+ DWORD64 Dr0;
+ DWORD64 Dr1;
+ DWORD64 Dr2;
+ DWORD64 Dr3;
+ DWORD64 Dr6;
+ DWORD64 Dr7;
+
+ /* Integer */
+ 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;
+
+ /* Counter */
+ DWORD64 Rip;
+
+ /* Floating point */
+ union {
+ XMM_SAVE_AREA32 FltSave;
+ struct {
+ M128A Header[2];
+ M128A Legacy[8];
+ 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;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+
+ /* Vector */
+ M128A VectorRegister[26];
+ DWORD64 VectorControl;
+
+ /* Debug control */
+ DWORD64 DebugControl;
+ DWORD64 LastBranchToRip;
+ DWORD64 LastBranchFromRip;
+ DWORD64 LastExceptionToRip;
+ DWORD64 LastExceptionFromRip;
+} CONTEXT;
+
+#endif /* __x86_64__ */
+
/* Alpha context definitions */
-#ifdef _ALPHA_
+#if defined(_ALPHA_) || defined(__ALPHA__) || defined(__alpha__)
#define CONTEXT_ALPHA 0x00020000
#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
typedef struct _CONTEXT
{
/* selected by CONTEXT_FLOATING_POINT */
#endif /* _ALPHA_ */
+#ifdef __arm__
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_ARM 0x0000040
+#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
+
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
+typedef struct _CONTEXT {
+ /* The flags values within this flag control the contents of
+ a CONTEXT record.
+
+ If the context record is used as an input parameter, then
+ for each portion of the context record controlled by a flag
+ whose value is set, it is assumed that that portion of the
+ context record contains valid context. If the context record
+ is being used to modify a thread's context, then only that
+ portion of the threads context will be modified.
+
+ If the context record is used as an IN OUT parameter to capture
+ the context of a thread, then only those portions of the thread's
+ context corresponding to set flags will be returned.
+
+ The context record is never used as an OUT only parameter. */
+
+ ULONG ContextFlags;
+
+ /* This section is specified/returned if the ContextFlags word contains
+ the flag CONTEXT_INTEGER. */
+ ULONG R0;
+ ULONG R1;
+ ULONG R2;
+ ULONG R3;
+ ULONG R4;
+ ULONG R5;
+ ULONG R6;
+ ULONG R7;
+ ULONG R8;
+ ULONG R9;
+ ULONG R10;
+ ULONG R11;
+ ULONG R12;
+
+ ULONG Sp;
+ ULONG Lr;
+ ULONG Pc;
+ ULONG Psr;
+} CONTEXT;
+
+#endif /* __arm__ */
+
+
/* Mips context definitions */
#ifdef _MIPS_
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
typedef struct _CONTEXT
{
DWORD Argument[4];
#define CONTEXT_DEBUG_REGISTERS 0x0008
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
typedef struct
{
/* These are selected by CONTEXT_FLOATING_POINT */
#endif /* __powerpc__ */
-#ifdef __ALPHA__
-
-/*
- * FIXME:
- *
- * I have no idea if any of this is right as I just ripped
- * it from mingw-win32api.
- *
- */
-
-#define CONTEXT_ALPHA 0x20000
-#define CONTEXT_CONTROL (CONTEXT_ALPHA|1L)
-#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L)
-#define CONTEXT_INTEGER (CONTEXT_ALPHA|4L)
-#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
-typedef struct _CONTEXT {
- ULONGLONG FltF0;
- ULONGLONG FltF1;
- ULONGLONG FltF2;
- ULONGLONG FltF3;
- ULONGLONG FltF4;
- ULONGLONG FltF5;
- ULONGLONG FltF6;
- ULONGLONG FltF7;
- ULONGLONG FltF8;
- ULONGLONG FltF9;
- ULONGLONG FltF10;
- ULONGLONG FltF11;
- ULONGLONG FltF12;
- ULONGLONG FltF13;
- ULONGLONG FltF14;
- ULONGLONG FltF15;
- ULONGLONG FltF16;
- ULONGLONG FltF17;
- ULONGLONG FltF18;
- ULONGLONG FltF19;
- ULONGLONG FltF20;
- ULONGLONG FltF21;
- ULONGLONG FltF22;
- ULONGLONG FltF23;
- ULONGLONG FltF24;
- ULONGLONG FltF25;
- ULONGLONG FltF26;
- ULONGLONG FltF27;
- ULONGLONG FltF28;
- ULONGLONG FltF29;
- ULONGLONG FltF30;
- ULONGLONG FltF31;
- ULONGLONG IntV0;
- ULONGLONG IntT0;
- ULONGLONG IntT1;
- ULONGLONG IntT2;
- ULONGLONG IntT3;
- ULONGLONG IntT4;
- ULONGLONG IntT5;
- ULONGLONG IntT6;
- ULONGLONG IntT7;
- ULONGLONG IntS0;
- ULONGLONG IntS1;
- ULONGLONG IntS2;
- ULONGLONG IntS3;
- ULONGLONG IntS4;
- ULONGLONG IntS5;
- ULONGLONG IntFp;
- ULONGLONG IntA0;
- ULONGLONG IntA1;
- ULONGLONG IntA2;
- ULONGLONG IntA3;
- ULONGLONG IntA4;
- ULONGLONG IntA5;
- ULONGLONG IntT8;
- ULONGLONG IntT9;
- ULONGLONG IntT10;
- ULONGLONG IntT11;
- ULONGLONG IntRa;
- ULONGLONG IntT12;
- ULONGLONG IntAt;
- ULONGLONG IntGp;
- ULONGLONG IntSp;
- ULONGLONG IntZero;
- ULONGLONG Fpcr;
- ULONGLONG SoftFpcr;
- ULONGLONG Fir;
- DWORD Psr;
- DWORD ContextFlags;
- DWORD Fill[4];
-} CONTEXT;
-
-#endif /* __ALPHA__ */
-
#ifdef __sparc__
/*
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
+
typedef struct _CONTEXT
{
DWORD ContextFlags;
#define DBG_UNREFERENCED_PARAMETER(u) (u)
#define DBG_UNREFERENCED_LOCAL_VARIABLE(u) (u)
-/* FIXME: are the symbolic names correct for LIDs: 0x17, 0x28,
- * 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3a, 0x3b, 0x3c
- */
#define LANG_NEUTRAL 0x00
#define LANG_INVARIANT 0x7f
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1c
+#define LANG_ALSATIAN 0x84
+#define LANG_AMHARIC 0x5e
#define LANG_ARABIC 0x01
#define LANG_ARMENIAN 0x2b
#define LANG_ASSAMESE 0x4d
#define LANG_AZERI 0x2c
+#define LANG_BASHKIR 0x6d
#define LANG_BASQUE 0x2d
#define LANG_BELARUSIAN 0x23
#define LANG_BENGALI 0x45
+#define LANG_BOSNIAN 0x1a
+#define LANG_BOSNIAN_NEUTRAL 0x781a
+#define LANG_BRETON 0x7e
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
+#define LANG_CHINESE_SIMPLIFIED 0x0004
+#define LANG_CHINESE_TRADITIONAL 0x7c04
+#define LANG_CORSICAN 0x83
#define LANG_CROATIAN 0x1a
#define LANG_CZECH 0x05
#define LANG_DANISH 0x06
+#define LANG_DARI 0x8c
#define LANG_DIVEHI 0x65
#define LANG_DUTCH 0x13
#define LANG_ENGLISH 0x09
#define LANG_ESTONIAN 0x25
#define LANG_FAEROESE 0x38
-#define LANG_FARSI 0x29
+#define LANG_FARSI LANG_PERSIAN
+#define LANG_FILIPINO 0x64
#define LANG_FINNISH 0x0b
#define LANG_FRENCH 0x0c
+#define LANG_FRISIAN 0x62
#define LANG_GALICIAN 0x56
#define LANG_GEORGIAN 0x37
#define LANG_GERMAN 0x07
#define LANG_GREEK 0x08
+#define LANG_GREENLANDIC 0x6f
#define LANG_GUJARATI 0x47
+#define LANG_HAUSA 0x68
#define LANG_HEBREW 0x0d
#define LANG_HINDI 0x39
#define LANG_HUNGARIAN 0x0e
#define LANG_ICELANDIC 0x0f
+#define LANG_IGBO 0x70
#define LANG_INDONESIAN 0x21
+#define LANG_INUKTITUT 0x5d
+#define LANG_IRISH 0x3c
#define LANG_ITALIAN 0x10
#define LANG_JAPANESE 0x11
#define LANG_KANNADA 0x4b
#define LANG_KASHMIRI 0x60
#define LANG_KAZAK 0x3f
+#define LANG_KHMER 0x53
+#define LANG_KICHE 0x86
+#define LANG_KINYARWANDA 0x87
#define LANG_KONKANI 0x57
#define LANG_KOREAN 0x12
#define LANG_KYRGYZ 0x40
+#define LANG_LAO 0x54
#define LANG_LATVIAN 0x26
#define LANG_LITHUANIAN 0x27
+#define LANG_LOWER_SORBIAN 0x2e
+#define LANG_LUXEMBOURGISH 0x6e
#define LANG_MACEDONIAN 0x2f
#define LANG_MALAY 0x3e
#define LANG_MALAYALAM 0x4c
+#define LANG_MALTESE 0x3a
#define LANG_MANIPURI 0x58
+#define LANG_MAORI 0x81
+#define LANG_MAPUDUNGUN 0x7a
#define LANG_MARATHI 0x4e
+#define LANG_MOHAWK 0x7c
#define LANG_MONGOLIAN 0x50
#define LANG_NEPALI 0x61
#define LANG_NORWEGIAN 0x14
+#define LANG_OCCITAN 0x82
#define LANG_ORIYA 0x48
+#define LANG_PASHTO 0x63
+#define LANG_PERSIAN 0x29
#define LANG_POLISH 0x15
#define LANG_PORTUGUESE 0x16
#define LANG_PUNJABI 0x46
+#define LANG_QUECHUA 0x6b
#define LANG_ROMANIAN 0x18
+#define LANG_ROMANSH 0x17
#define LANG_RUSSIAN 0x19
+#define LANG_SAMI 0x3b
#define LANG_SANSKRIT 0x4f
#define LANG_SERBIAN 0x1a
+#define LANG_SERBIAN_NEUTRAL 0x7c1a
#define LANG_SINDHI 0x59
+#define LANG_SINHALESE 0x5b
#define LANG_SLOVAK 0x1b
#define LANG_SLOVENIAN 0x24
+#define LANG_SOTHO 0x6c
#define LANG_SPANISH 0x0a
#define LANG_SWAHILI 0x41
#define LANG_SWEDISH 0x1d
#define LANG_SYRIAC 0x5a
+#define LANG_TAJIK 0x28
+#define LANG_TAMAZIGHT 0x5f
#define LANG_TAMIL 0x49
#define LANG_TATAR 0x44
#define LANG_TELUGU 0x4a
#define LANG_THAI 0x1e
+#define LANG_TIBETAN 0x51
+#define LANG_TIGRIGNA 0x73
+#define LANG_TSWANA 0x32
#define LANG_TURKISH 0x1f
+#define LANG_TURKMEN 0x42
+#define LANG_UIGHUR 0x80
#define LANG_UKRAINIAN 0x22
+#define LANG_UPPER_SORBIAN 0x2e
#define LANG_URDU 0x20
#define LANG_UZBEK 0x43
#define LANG_VIETNAMESE 0x2a
+#define LANG_WELSH 0x52
+#define LANG_WOLOF 0x88
+#define LANG_XHOSA 0x34
+#define LANG_YAKUT 0x85
+#define LANG_YI 0x78
+#define LANG_YORUBA 0x6a
+#define LANG_ZULU 0x35
-/* FIXME: these are not in the Windows header */
-#define LANG_GAELIC 0x3c
-#define LANG_MALTESE 0x3a
-#define LANG_MAORI 0x28
-#define LANG_RHAETO_ROMANCE 0x17
-#define LANG_SAAMI 0x3b
-#define LANG_SORBIAN 0x2e
+/* These are documented by the MSDN but are missing from the Windows header */
+#define LANG_MALAGASY 0x8d
+
+/* FIXME: these are not defined anywhere */
#define LANG_SUTU 0x30
#define LANG_TSONGA 0x31
-#define LANG_TSWANA 0x32
#define LANG_VENDA 0x33
-#define LANG_XHOSA 0x34
-#define LANG_ZULU 0x35
/* non standard; keep the number high enough (but < 0xff) */
#define LANG_ESPERANTO 0x8f
#define LANG_WALON 0x90
#define LANG_CORNISH 0x91
-#define LANG_WELSH 0x92
-#define LANG_BRETON 0x93
+#define LANG_GAELIC 0x94
/* Sublanguage definitions */
#define SUBLANG_NEUTRAL 0x00 /* language neutral */
#define SUBLANG_DEFAULT 0x01 /* user default */
#define SUBLANG_SYS_DEFAULT 0x02 /* system default */
-
+#define SUBLANG_CUSTOM_DEFAULT 0x03
+#define SUBLANG_CUSTOM_UNSPECIFIED 0x04
+#define SUBLANG_UI_CUSTOM_DEFAULT 0x05
+
+#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
+#define SUBLANG_ALBANIAN_ALBANIA 0x01
+#define SUBLANG_ALSATIAN_FRANCE 0x01
+#define SUBLANG_AMHARIC_ETHIOPIA 0x01
#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
#define SUBLANG_ARABIC_IRAQ 0x02
#define SUBLANG_ARABIC_EGYPT 0x03
#define SUBLANG_ARABIC_UAE 0x0e
#define SUBLANG_ARABIC_BAHRAIN 0x0f
#define SUBLANG_ARABIC_QATAR 0x10
+#define SUBLANG_ARMENIAN_ARMENIA 0x01
+#define SUBLANG_ASSAMESE_INDIA 0x01
#define SUBLANG_AZERI_LATIN 0x01
#define SUBLANG_AZERI_CYRILLIC 0x02
+#define SUBLANG_BASHKIR_RUSSIA 0x01
+#define SUBLANG_BASQUE_BASQUE 0x01
+#define SUBLANG_BELARUSIAN_BELARUS 0x01
+#define SUBLANG_BENGALI_INDIA 0x01
+#define SUBLANG_BENGALI_BANGLADESH 0x02
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
+#define SUBLANG_BRETON_FRANCE 0x01
+#define SUBLANG_BULGARIAN_BULGARIA 0x01
+#define SUBLANG_CATALAN_CATALAN 0x01
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
#define SUBLANG_CHINESE_SINGAPORE 0x04
#define SUBLANG_CHINESE_MACAU 0x05
+#define SUBLANG_CORSICAN_FRANCE 0x01
+#define SUBLANG_CROATIAN_CROATIA 0x01
+#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
+#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
+#define SUBLANG_DANISH_DENMARK 0x01
+#define SUBLANG_DARI_AFGHANISTAN 0x01
+#define SUBLANG_DIVEHI_MALDIVES 0x01
#define SUBLANG_DUTCH 0x01
#define SUBLANG_DUTCH_BELGIAN 0x02
#define SUBLANG_ENGLISH_US 0x01
#define SUBLANG_ENGLISH_TRINIDAD 0x0b
#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+#define SUBLANG_ENGLISH_INDIA 0x10
+#define SUBLANG_ENGLISH_MALAYSIA 0x11
+#define SUBLANG_ENGLISH_SINGAPORE 0x12
+#define SUBLANG_ESTONIAN_ESTONIA 0x01
+#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
+#define SUBLANG_FILIPINO_PHILIPPINES 0x01
+#define SUBLANG_FINNISH_FINLAND 0x01
#define SUBLANG_FRENCH 0x01
#define SUBLANG_FRENCH_BELGIAN 0x02
#define SUBLANG_FRENCH_CANADIAN 0x03
#define SUBLANG_FRENCH_SWISS 0x04
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
#define SUBLANG_FRENCH_MONACO 0x06
+#define SUBLANG_FRISIAN_NETHERLANDS 0x01
+#define SUBLANG_GALICIAN_GALICIAN 0x01
+#define SUBLANG_GEORGIAN_GEORGIA 0x01
#define SUBLANG_GERMAN 0x01
#define SUBLANG_GERMAN_SWISS 0x02
#define SUBLANG_GERMAN_AUSTRIAN 0x03
#define SUBLANG_GERMAN_LUXEMBOURG 0x04
#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+#define SUBLANG_GREEK_GREECE 0x01
+#define SUBLANG_GREENLANDIC_GREENLAND 0x01
+#define SUBLANG_GUJARATI_INDIA 0x01
+#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
+#define SUBLANG_HEBREW_ISRAEL 0x01
+#define SUBLANG_HINDI_INDIA 0x01
+#define SUBLANG_HUNGARIAN_HUNGARY 0x01
+#define SUBLANG_ICELANDIC_ICELAND 0x01
+#define SUBLANG_IGBO_NIGERIA 0x01
+#define SUBLANG_INDONESIAN_INDONESIA 0x01
+#define SUBLANG_INUKTITUT_CANADA 0x01
+#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
+#define SUBLANG_IRISH_IRELAND 0x02
#define SUBLANG_ITALIAN 0x01
#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_JAPANESE_JAPAN 0x01
+#define SUBLANG_KANNADA_INDIA 0x01
#define SUBLANG_KASHMIRI_SASIA 0x02
#define SUBLANG_KASHMIRI_INDIA 0x02
+#define SUBLANG_KAZAK_KAZAKHSTAN 0x01
+#define SUBLANG_KHMER_CAMBODIA 0x01
+#define SUBLANG_KICHE_GUATEMALA 0x01
+#define SUBLANG_KINYARWANDA_RWANDA 0X01
+#define SUBLANG_KONKANI_INDIA 0x01
#define SUBLANG_KOREAN 0x01
-#define SUBLANG_LITHUANIAN 0x01
+#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
+#define SUBLANG_LAO_LAO 0x01
+#define SUBLANG_LATVIAN_LATVIA 0x01
+#define SUBLANG_LITHUANIAN_LITHUANIA 0x01
+#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
+#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
+#define SUBLANG_MACEDONIAN_MACEDONIA 0x01
#define SUBLANG_MALAY_MALAYSIA 0x01
#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+#define SUBLANG_MALAYALAM_INDIA 0x01
+#define SUBLANG_MALTESE_MALTA 0x01
+#define SUBLANG_MAORI_NEW_ZEALAND 0x01
+#define SUBLANG_MAPUDUNGUN_CHILE 0x01
+#define SUBLANG_MARATHI_INDIA 0x01
+#define SUBLANG_MOHAWK_MOHAWK 0x01
+#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
+#define SUBLANG_MONGOLIAN_PRC 0x02
#define SUBLANG_NEPALI_INDIA 0x02
+#define SUBLANG_NEPALI_NEPAL 0x01
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_OCCITAN_FRANCE 0x01
+#define SUBLANG_ORIYA_INDIA 0x01
+#define SUBLANG_PASHTO_AFGHANISTAN 0x01
+#define SUBLANG_PERSIAN_IRAN 0x01
+#define SUBLANG_POLISH_POLAND 0x01
#define SUBLANG_PORTUGUESE 0x02
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_PUNJABI_INDIA 0x01
+#define SUBLANG_QUECHUA_BOLIVIA 0x01
+#define SUBLANG_QUECHUA_ECUADOR 0x02
+#define SUBLANG_QUECHUA_PERU 0x03
+#define SUBLANG_ROMANIAN_ROMANIA 0x01
+#define SUBLANG_ROMANSH_SWITZERLAND 0x01
+#define SUBLANG_RUSSIAN_RUSSIA 0x01
+#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
+#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
+#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
+#define SUBLANG_SAMI_LULE_NORWAY 0x04
+#define SUBLANG_SAMI_LULE_SWEDEN 0x05
+#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
+#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
+#define SUBLANG_SAMI_SKOLT_FINLAND 0x08
+#define SUBLANG_SAMI_INARI_FINLAND 0x09
+#define SUBLANG_SANSKRIT_INDIA 0x01
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
+#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
+#define SUBLANG_SERBIAN_CROATIA 0x01
#define SUBLANG_SERBIAN_LATIN 0x02
#define SUBLANG_SERBIAN_CYRILLIC 0x03
+#define SUBLANG_SINDHI_AFGHANISTAN 0x02
+#define SUBLANG_SINHALESE_SRI_LANKA 0x01
+#define SUBLANG_SLOVAK_SLOVAKIA 0x01
+#define SUBLANG_SLOVENIAN_SLOVENIA 0x01
+#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
#define SUBLANG_SPANISH 0x01
#define SUBLANG_SPANISH_MEXICAN 0x02
#define SUBLANG_SPANISH_MODERN 0x03
#define SUBLANG_SPANISH_HONDURAS 0x12
#define SUBLANG_SPANISH_NICARAGUA 0x13
#define SUBLANG_SPANISH_PUERTO_RICO 0x14
+#define SUBLANG_SPANISH_US 0x15
+#define SUBLANG_SWAHILI_KENYA 0x01
#define SUBLANG_SWEDISH 0x01
#define SUBLANG_SWEDISH_FINLAND 0x02
+#define SUBLANG_SYRIAC_SYRIA 0x01
+#define SUBLANG_TAJIK_TAJIKISTAN 0x01
+#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
+#define SUBLANG_TAMIL_INDIA 0x01
+#define SUBLANG_TATAR_RUSSIA 0x01
+#define SUBLANG_TELUGU_INDIA 0x01
+#define SUBLANG_THAI_THAILAND 0x01
+#define SUBLANG_TIBETAN_PRC 0x01
+#define SUBLANG_TIBETAN_BHUTAN 0x02
+#define SUBLANG_TIGRIGNA_ERITREA 0x02
+#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
+#define SUBLANG_TURKISH_TURKEY 0x01
+#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
+#define SUBLANG_UIGHUR_PRC 0x01
+#define SUBLANG_UKRAINIAN_UKRAINE 0x01
+#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
#define SUBLANG_URDU_PAKISTAN 0x01
#define SUBLANG_URDU_INDIA 0x02
#define SUBLANG_UZBEK_LATIN 0x01
#define SUBLANG_UZBEK_CYRILLIC 0x02
-
-/* FIXME: these are not in the Windows header */
+#define SUBLANG_VIETNAMESE_VIETNAM 0x01
+#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
+#define SUBLANG_WOLOF_SENEGAL 0x01
+#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
+#define SUBLANG_YAKUT_RUSSIA 0x01
+#define SUBLANG_YI_PRC 0x01
+#define SUBLANG_YORUBA_NIGERIA 0x01
+#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
+
+/* These are documented by the MSDN but are missing from the Windows header */
+#define SUBLANG_ENGLISH_IRELAND SUBLANG_ENGLISH_EIRE
+#define SUBLANG_HAUSA_NIGERIA SUBLANG_HAUSA_NIGERIA_LATIN
+#define SUBLANG_LAO_LAO_PDR SUBLANG_LAO_LAO
+#define SUBLANG_LITHUANIAN SUBLANG_LITHUANIAN_LITHUANIA
+#define SUBLANG_PORTUGUESE_PORTUGAL SUBLANG_PORTUGUESE
+#define SUBLANG_SWAHILI SUBLANG_SWAHILI_KENYA
+#define SUBLANG_SWEDISH_SWEDEN SUBLANG_SWEDISH
+#define SUBLANG_SYRIAC SUBLANG_SYRIAC_SYRIA
+
+/* FIXME: these are not defined anywhere */
#define SUBLANG_DUTCH_SURINAM 0x03
-#define SUBLANG_ROMANIAN 0x01
+#define SUBLANG_ROMANIAN SUBLANG_ROMANIAN_ROMANIA
#define SUBLANG_ROMANIAN_MOLDAVIA 0x02
-#define SUBLANG_RUSSIAN 0x01
+#define SUBLANG_RUSSIAN SUBLANG_RUSSIAN_RUSSIA
#define SUBLANG_RUSSIAN_MOLDAVIA 0x02
-#define SUBLANG_CROATIAN 0x01
+#define SUBLANG_CROATIAN SUBLANG_CROATIAN_CROATIA
#define SUBLANG_LITHUANIAN_CLASSIC 0x02
#define SUBLANG_GAELIC 0x01
#define SUBLANG_GAELIC_SCOTTISH 0x02
#define MAXIMUM_WAIT_OBJECTS 64
#define MAXIMUM_SUSPEND_COUNT 127
+#define WT_EXECUTEDEFAULT 0x00
+#define WT_EXECUTEINIOTHREAD 0x01
+#define WT_EXECUTEINUITHREAD 0x02
+#define WT_EXECUTEINWAITTHREAD 0x04
+#define WT_EXECUTEONLYONCE 0x08
+#define WT_EXECUTELONGFUNCTION 0x10
+#define WT_EXECUTEINTIMERTHREAD 0x20
+#define WT_EXECUTEINPERSISTENTIOTHREAD 0x40
+#define WT_EXECUTEINPERSISTENTTHREAD 0x80
+#define WT_EXECUTEINLONGTHREAD 0x10
+#define WT_EXECUTEDELETEWAIT 0x08
-/*
- * From OS/2 2.0 exception handling
- * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD
- */
-
-#define EH_NONCONTINUABLE 0x01
-#define EH_UNWINDING 0x02
-#define EH_EXIT_UNWIND 0x04
-#define EH_STACK_INVALID 0x08
-#define EH_NESTED_CALL 0x10
#define EXCEPTION_CONTINUABLE 0
-#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
+#define EXCEPTION_NONCONTINUABLE 0x01
/*
* The exception record used by Win32 to give additional information
} EXCEPTION_REGISTRATION_RECORD;
/*
- * function pointer to a exception filter
+ * function pointer to an exception filter
*/
typedef LONG (CALLBACK *PVECTORED_EXCEPTION_HANDLER)(PEXCEPTION_POINTERS ExceptionInfo);
-typedef LONG (CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
-typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
-
-DWORD WINAPI UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers );
-LPTOP_LEVEL_EXCEPTION_FILTER
-WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
typedef struct _NT_TIB
{
#endif
#define GetFiberData() (*(void **)GetCurrentFiber())
+#define TLS_MINIMUM_AVAILABLE 64
+
/*
* File formats definitions
*/
#define IMAGE_SIZEOF_FILE_HEADER 20
#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
-#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
+#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
+#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
#define IMAGE_SIZEOF_SHORT_NAME 8
#define IMAGE_SIZEOF_SECTION_HEADER 40
#define IMAGE_SIZEOF_SYMBOL 18
#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
/* Possible Magic values */
-#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
+#ifdef _WIN64
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC
+#else
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
+#endif
+
/* These are indexes into the DataDirectory array */
#define IMAGE_FILE_EXPORT_DIRECTORY 0
#define IMAGE_FILE_IMPORT_DIRECTORY 1
#define IMAGE_SUBSYSTEM_EFI_ROM 13
#define IMAGE_SUBSYSTEM_XBOX 14
+/* DLL Characteristics */
+#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
+#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
+#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
+#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
+#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
+#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
+#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
+#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
+
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+typedef struct _IMAGE_OPTIONAL_HEADER64 {
+ WORD Magic; /* 0x20b */
+ 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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
+
+typedef struct _IMAGE_NT_HEADERS64 {
+ DWORD Signature;
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_OPTIONAL_HEADER64 OptionalHeader;
+} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
+
typedef struct _IMAGE_OPTIONAL_HEADER {
/* Standard fields */
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; /* 0x60 */
/* 0xE0 */
-} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
+} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature; /* "PE"\0\0 */ /* 0x00 */
IMAGE_FILE_HEADER FileHeader; /* 0x04 */
- IMAGE_OPTIONAL_HEADER OptionalHeader; /* 0x18 */
-} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
+ IMAGE_OPTIONAL_HEADER32 OptionalHeader; /* 0x18 */
+} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
+
+#ifdef _WIN64
+typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
+typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
+#else
+typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
+typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
+typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
+typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
+#endif
#define IMAGE_SIZEOF_SHORT_NAME 8
#define IMAGE_SIZEOF_SECTION_HEADER 40
#define IMAGE_FIRST_SECTION(ntheader) \
- ((PIMAGE_SECTION_HEADER)((LPBYTE)&((PIMAGE_NT_HEADERS)(ntheader))->OptionalHeader + \
- ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))
+ ((PIMAGE_SECTION_HEADER)(ULONG_PTR)((const BYTE *)&((const IMAGE_NT_HEADERS *)(ntheader))->OptionalHeader + \
+ ((const IMAGE_NT_HEADERS *)(ntheader))->FileHeader.SizeOfOptionalHeader))
/* These defines are for the Characteristics bitfield. */
/* #define IMAGE_SCN_TYPE_REG 0x00000000 - Reserved */
BYTE Name[1];
} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
+#include <pshpack8.h>
/* Import thunk */
-typedef struct _IMAGE_THUNK_DATA {
+typedef struct _IMAGE_THUNK_DATA64 {
union {
- LPBYTE ForwarderString;
- PDWORD Function;
- DWORD Ordinal;
- PIMAGE_IMPORT_BY_NAME AddressOfData;
+ ULONGLONG ForwarderString;
+ ULONGLONG Function;
+ ULONGLONG Ordinal;
+ ULONGLONG AddressOfData;
} u1;
-} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
+} IMAGE_THUNK_DATA64,*PIMAGE_THUNK_DATA64;
+#include <poppack.h>
+
+typedef struct _IMAGE_THUNK_DATA32 {
+ union {
+ DWORD ForwarderString;
+ DWORD Function;
+ DWORD Ordinal;
+ DWORD AddressOfData;
+ } u1;
+} IMAGE_THUNK_DATA32,*PIMAGE_THUNK_DATA32;
/* Import module directory */
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics; /* 0 for terminating null import descriptor */
- PIMAGE_THUNK_DATA OriginalFirstThunk; /* RVA to original unbound IAT */
+ DWORD OriginalFirstThunk; /* RVA to original unbound IAT */
} DUMMYUNIONNAME;
DWORD TimeDateStamp; /* 0 if not bound,
* -1 if bound, and real date\time stamp
DWORD ForwarderChain; /* -1 if no forwarders */
DWORD Name;
/* RVA to IAT (if bound this IAT has actual addresses) */
- PIMAGE_THUNK_DATA FirstThunk;
+ DWORD FirstThunk;
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
-#define IMAGE_ORDINAL_FLAG 0x80000000
-#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
-#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
+#define IMAGE_ORDINAL_FLAG64 (((ULONGLONG)0x80000000 << 32) | 0x00000000)
+#define IMAGE_ORDINAL_FLAG32 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL64(ordinal) (((ordinal) & IMAGE_ORDINAL_FLAG64) != 0)
+#define IMAGE_SNAP_BY_ORDINAL32(ordinal) (((ordinal) & IMAGE_ORDINAL_FLAG32) != 0)
+#define IMAGE_ORDINAL64(ordinal) ((ordinal) & 0xffff)
+#define IMAGE_ORDINAL32(ordinal) ((ordinal) & 0xffff)
+
+#ifdef _WIN64
+#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal)
+#define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal)
+typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA;
+#else
+#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal)
+#define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal)
+typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA;
+typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA;
+#endif
typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR
{
#define IMAGE_REL_IA64_RESERVED_16 0x0016
#define IMAGE_REL_IA64_ADDEND 0x001F
+/* AMD64 relocation types */
+#define IMAGE_REL_AMD64_ABSOLUTE 0x0000
+#define IMAGE_REL_AMD64_ADDR64 0x0001
+#define IMAGE_REL_AMD64_ADDR32 0x0002
+#define IMAGE_REL_AMD64_ADDR32NB 0x0003
+#define IMAGE_REL_AMD64_REL32 0x0004
+#define IMAGE_REL_AMD64_REL32_1 0x0005
+#define IMAGE_REL_AMD64_REL32_2 0x0006
+#define IMAGE_REL_AMD64_REL32_3 0x0007
+#define IMAGE_REL_AMD64_REL32_4 0x0008
+#define IMAGE_REL_AMD64_REL32_5 0x0009
+#define IMAGE_REL_AMD64_SECTION 0x000A
+#define IMAGE_REL_AMD64_SECREL 0x000B
+#define IMAGE_REL_AMD64_SECREL7 0x000C
+#define IMAGE_REL_AMD64_TOKEN 0x000D
+#define IMAGE_REL_AMD64_SREL32 0x000E
+#define IMAGE_REL_AMD64_PAIR 0x000F
+#define IMAGE_REL_AMD64_SSPAN32 0x0010
+
/* archive format */
#define IMAGE_ARCHIVE_START_SIZE 8
#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+typedef struct _IMPORT_OBJECT_HEADER
+{
+ WORD Sig1;
+ WORD Sig2;
+ WORD Version;
+ WORD Machine;
+ DWORD TimeDateStamp;
+ DWORD SizeOfData;
+ union
+ {
+ WORD Ordinal;
+ WORD Hint;
+ } DUMMYUNIONNAME;
+ WORD Type : 2;
+ WORD NameType : 3;
+ WORD Reserved : 11;
+} IMPORT_OBJECT_HEADER;
+
+#define IMPORT_OBJECT_HDR_SIG2 0xffff
+
+typedef enum IMPORT_OBJECT_TYPE
+{
+ IMPORT_OBJECT_CODE = 0,
+ IMPORT_OBJECT_DATA = 1,
+ IMPORT_OBJECT_CONST = 2
+} IMPORT_OBJECT_TYPE;
+
+typedef enum IMPORT_OBJECT_NAME_TYPE
+{
+ IMPORT_OBJECT_ORDINAL = 0,
+ IMPORT_OBJECT_NAME = 1,
+ IMPORT_OBJECT_NAME_NO_PREFIX = 2,
+ IMPORT_OBJECT_NAME_UNDECORATE = 3
+} IMPORT_OBJECT_NAME_TYPE;
+
+typedef struct _ANON_OBJECT_HEADER
+{
+ WORD Sig1;
+ WORD Sig2;
+ WORD Version;
+ WORD Machine;
+ DWORD TimeDateStamp;
+ CLSID ClassID;
+ DWORD SizeOfData;
+} ANON_OBJECT_HEADER;
+
/*
* Resource directory stuff
*/
LPVOID DllHandle,DWORD Reason,LPVOID Reserved
);
-typedef struct _IMAGE_TLS_DIRECTORY {
- DWORD StartAddressOfRawData;
- DWORD EndAddressOfRawData;
- LPDWORD AddressOfIndex;
- PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
- DWORD SizeOfZeroFill;
- DWORD Characteristics;
-} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
+typedef struct _IMAGE_TLS_DIRECTORY64 {
+ ULONGLONG StartAddressOfRawData;
+ ULONGLONG EndAddressOfRawData;
+ ULONGLONG AddressOfIndex;
+ ULONGLONG AddressOfCallBacks;
+ DWORD SizeOfZeroFill;
+ DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64;
+
+typedef struct _IMAGE_TLS_DIRECTORY32 {
+ DWORD StartAddressOfRawData;
+ DWORD EndAddressOfRawData;
+ DWORD AddressOfIndex;
+ DWORD AddressOfCallBacks;
+ DWORD SizeOfZeroFill;
+ DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32;
+
+#ifdef _WIN64
+typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY;
+#else
+typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY;
+typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
+#endif
typedef struct _IMAGE_DEBUG_DIRECTORY {
DWORD Characteristics;
#define IMAGE_DEBUG_TYPE_BORLAND 9
#define IMAGE_DEBUG_TYPE_RESERVED10 10
+typedef enum ReplacesCorHdrNumericDefines
+{
+ COMIMAGE_FLAGS_ILONLY = 0x00000001,
+ COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,
+ COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
+ COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
+ COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
+
+ COR_VERSION_MAJOR_V2 = 2,
+ COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
+ COR_VERSION_MINOR = 0,
+ COR_DELETED_NAME_LENGTH = 8,
+ COR_VTABLEGAP_NAME_LENGTH = 8,
+
+ NATIVE_TYPE_MAX_CB = 1,
+ COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xff,
+
+ IMAGE_COR_MIH_METHODRVA = 0x01,
+ IMAGE_COR_MIH_EHRVA = 0x02,
+ IMAGE_COR_MIH_BASICBLOCK = 0x08,
+
+ COR_VTABLE_32BIT = 0x01,
+ COR_VTABLE_64BIT = 0x02,
+ COR_VTABLE_FROM_UNMANAGED = 0x04,
+ COR_VTABLE_CALL_MOST_DERIVED = 0x10,
+
+ IMAGE_COR_EATJ_THUNK_SIZE = 32,
+
+ MAX_CLASS_NAME = 1024,
+ MAX_PACKAGE_NAME = 1024,
+} ReplacesCorHdrNumericDefines;
+
+typedef struct IMAGE_COR20_HEADER
+{
+ DWORD cb;
+ WORD MajorRuntimeVersion;
+ WORD MinorRuntimeVersion;
+
+ IMAGE_DATA_DIRECTORY MetaData;
+ DWORD Flags;
+ DWORD EntryPointToken;
+
+ IMAGE_DATA_DIRECTORY Resources;
+ IMAGE_DATA_DIRECTORY StrongNameSignature;
+ IMAGE_DATA_DIRECTORY CodeManagerTable;
+ IMAGE_DATA_DIRECTORY VTableFixups;
+ IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
+ IMAGE_DATA_DIRECTORY ManagedNativeHeader;
+
+} IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER;
+
typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
DWORD NumberOfSymbols;
DWORD LvaToFirstSymbol;
#define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
#define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
+#define SECURITY_MAX_SID_SIZE (sizeof(SID) - sizeof(DWORD) + (SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)))
/*
* ACL
#define MIN_ACL_REVISION ACL_REVISION2
#define MAX_ACL_REVISION ACL_REVISION4
+#define ACL_REVISION 2
+
typedef struct _ACL {
BYTE AclRevision;
BYTE Sbz1;
#define SE_PRIVILEGE_REMOVE 0x00000004
#define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
+#define PRIVILEGE_SET_ALL_NECESSARY 1
+
#define SE_OWNER_DEFAULTED 0x00000001
#define SE_GROUP_DEFAULTED 0x00000002
#define SE_DACL_PRESENT 0x00000004
#define SE_SACL_AUTO_INHERITED 0x00000800
#define SE_DACL_PROTECTED 0x00001000
#define SE_SACL_PROTECTED 0x00002000
+#define SE_RM_CONTROL_VALID 0x00004000
#define SE_SELF_RELATIVE 0x00008000
typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
typedef struct _SID_AND_ATTRIBUTES {
PSID Sid;
DWORD Attributes;
-} SID_AND_ATTRIBUTES;
+} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
/* security entities */
#define SECURITY_NULL_RID (0x00000000L)
#define SECURITY_ANONYMOUS_LOGON_RID 0x00000007L
#define SECURITY_PROXY_RID 0x00000008L
#define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x00000009L
+#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
#define SECURITY_PRINCIPAL_SELF_RID 0x0000000AL
#define SECURITY_AUTHENTICATED_USER_RID 0x0000000BL
#define SECURITY_RESTRICTED_CODE_RID 0x0000000CL
#define SECURITY_TERMINAL_SERVER_RID 0x0000000DL
+#define SECURITY_REMOTE_LOGON_RID 0x0000000EL
+#define SECURITY_THIS_ORGANIZATION_RID 0x0000000FL
#define SECURITY_LOCAL_SYSTEM_RID 0x00000012L
+#define SECURITY_LOCAL_SERVICE_RID 0x00000013L
+#define SECURITY_NETWORK_SERVICE_RID 0x00000014L
#define SECURITY_NT_NON_UNIQUE 0x00000015L
#define SECURITY_BUILTIN_DOMAIN_RID 0x00000020L
+#define SECURITY_PACKAGE_BASE_RID 0x00000040L
+#define SECURITY_PACKAGE_NTLM_RID 0x0000000AL
+#define SECURITY_PACKAGE_SCHANNEL_RID 0x0000000EL
+#define SECURITY_PACKAGE_DIGEST_RID 0x00000015L
+#define SECURITY_MAX_ALWAYS_FILTERED 0x000003E7L
+#define SECURITY_MIN_NEVER_FILTERED 0x000003E8L
+#define SECURITY_OTHER_ORGANIZATION_RID 0x000003E8L
+
+#define FOREST_USER_RID_MAX 0x000001F3L
+#define DOMAIN_USER_RID_ADMIN 0x000001F4L
+#define DOMAIN_USER_RID_GUEST 0x000001F5L
+#define DOMAIN_USER_RID_KRBTGT 0x000001F6L
+#define DOMAIN_USER_RID_MAX 0x000003E7L
+
#define DOMAIN_GROUP_RID_ADMINS 0x00000200L
#define DOMAIN_GROUP_RID_USERS 0x00000201L
#define DOMAIN_GROUP_RID_GUESTS 0x00000202L
+#define DOMAIN_GROUP_RID_COMPUTERS 0x00000203L
+#define DOMAIN_GROUP_RID_CONTROLLERS 0x00000204L
+#define DOMAIN_GROUP_RID_CERT_ADMINS 0x00000205L
+#define DOMAIN_GROUP_RID_SCHEMA_ADMINS 0x00000206L
+#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS 0x00000207L
+#define DOMAIN_GROUP_RID_POLICY_ADMINS 0x00000208L
#define DOMAIN_ALIAS_RID_ADMINS 0x00000220L
#define DOMAIN_ALIAS_RID_USERS 0x00000221L
#define DOMAIN_ALIAS_RID_GUESTS 0x00000222L
+#define DOMAIN_ALIAS_RID_POWER_USERS 0x00000223L
+
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x00000224L
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x00000225L
+#define DOMAIN_ALIAS_RID_PRINT_OPS 0x00000226L
+#define DOMAIN_ALIAS_RID_BACKUP_OPS 0x00000227L
+
+#define DOMAIN_ALIAS_RID_REPLICATOR 0x00000228L
+#define DOMAIN_ALIAS_RID_RAS_SERVERS 0x00000229L
+#define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS 0x0000022AL
+#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS 0x0000022BL
+#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS 0x0000022CL
+#define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS 0x0000022DL
+
+#define DOMAIN_ALIAS_RID_MONITORING_USERS 0x0000022EL
+#define DOMAIN_ALIAS_RID_LOGGING_USERS 0x0000022FL
+#define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS 0x00000230L
+#define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS 0x00000231L
+#define DOMAIN_ALIAS_RID_DCOM_USERS 0x00000232L
#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
-#define SECURITY_LOGON_IDS_RID_COUNT (3L)
+#define SECURITY_PACKAGE_RID_COUNT 2L
+#define SECURITY_LOGON_IDS_RID_COUNT 3L
+
+typedef enum {
+ 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
+} WELL_KNOWN_SID_TYPE;
/*
* TOKEN_USER
typedef struct _TOKEN_OWNER {
PSID Owner;
-} TOKEN_OWNER;
+} TOKEN_OWNER, *PTOKEN_OWNER;
/*
* TOKEN_PRIMARY_GROUP
typedef struct _TOKEN_PRIMARY_GROUP {
PSID PrimaryGroup;
-} TOKEN_PRIMARY_GROUP;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
/*
typedef struct _TOKEN_DEFAULT_DACL {
PACL DefaultDacl;
-} TOKEN_DEFAULT_DACL;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
/*
* TOKEN_SOURCEL
typedef struct _TOKEN_SOURCE {
char SourceName[TOKEN_SOURCE_LENGTH];
LUID SourceIdentifier;
-} TOKEN_SOURCE;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
/*
* TOKEN_TYPE
SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
+#define SECURITY_DYNAMIC_TRACKING (TRUE)
+#define SECURITY_STATIC_TRACKING (FALSE)
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
* PSECURITY_CONTEXT_TRACKING_MODE;
* ACLs of NT
*/
-#define ACL_REVISION 2
-
-#define ACL_REVISION1 1
-#define ACL_REVISION2 2
-
/* ACEs, directly starting after an ACL */
typedef struct _ACE_HEADER {
BYTE AceType;
#define NO_PROPAGATE_INHERIT_ACE 0x04
#define INHERIT_ONLY_ACE 0x08
#define INHERITED_ACE 0x10
-#define VALID_INHERIT_FLAGS 0x0F
+#define VALID_INHERIT_FLAGS 0x1F
/* AceFlags mask for what events we (should) audit */
#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
SidTypeUnknown
} SID_NAME_USE,*PSID_NAME_USE;
+#define ACE_OBJECT_TYPE_PRESENT 0x1
+#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2
+
/* Access rights */
/* DELETE may be already defined via /usr/include/arpa/nameser_compat.h */
#define PROCESS_SET_QUOTA 0x0100
#define PROCESS_SET_INFORMATION 0x0200
#define PROCESS_QUERY_INFORMATION 0x0400
+#define PROCESS_SUSPEND_RESUME 0x0800
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff)
#define THREAD_TERMINATE 0x0001
#define THREAD_BASE_PRIORITY_MIN -2
#define THREAD_BASE_PRIORITY_IDLE -15
+typedef struct _QUOTA_LIMITS {
+ SIZE_T PagedPoolLimit;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
+ SIZE_T PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS, *PQUOTA_LIMITS;
+
+#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
+#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
+#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
+#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
+
+typedef struct _QUOTA_LIMITS_EX {
+ SIZE_T PagedPoolLimit;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
+ SIZE_T PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+ SIZE_T Reserved1;
+ SIZE_T Reserved2;
+ SIZE_T Reserved3;
+ SIZE_T Reserved4;
+ DWORD Flags;
+ DWORD Reserved5;
+} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
+
#define SECTION_QUERY 0x0001
#define SECTION_MAP_WRITE 0x0002
#define SECTION_MAP_READ 0x0004
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE | \
FILE_READ_ATTRIBUTES | SYNCHRONIZE)
+#define DUPLICATE_CLOSE_SOURCE 0x00000001
+#define DUPLICATE_SAME_ACCESS 0x00000002
/* File attribute flags */
#define FILE_SHARE_READ 0x00000001L
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
+#define FILE_NOTIFY_CHANGE_EA 0x00000080
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
+#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
+#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
#define FILE_ACTION_ADDED 0x00000001
#define FILE_ACTION_REMOVED 0x00000002
#define FILE_ACTION_MODIFIED 0x00000003
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
-
+#define FILE_ACTION_ADDED_STREAM 0x00000006
+#define FILE_ACTION_REMOVED_STREAM 0x00000007
+#define FILE_ACTION_MODIFIED_STREAM 0x00000008
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
#define FILE_CASE_PRESERVED_NAMES 0x00000002
LT_LOWEST_LATENCY
} LATENCY_TIME, *PLATENCY_TIME;
+#define DISCHARGE_POLICY_CRITICAL 0
+#define DISCHARGE_POLICY_LOW 1
+#define NUM_DISCHARGE_POLICIES 4
+
+#define PO_THROTTLE_NONE 0
+#define PO_THROTTLE_CONSTANT 1
+#define PO_THROTTLE_DEGRADE 2
+#define PO_THROTTLE_ADAPTIVE 3
+
+typedef enum _POWER_ACTION {
+ PowerActionNone = 0,
+ PowerActionReserved,
+ PowerActionSleep,
+ PowerActionHibernate,
+ PowerActionShutdown,
+ PowerActionShutdownReset,
+ PowerActionShutdownOff,
+ PowerActionWarmEject
+} POWER_ACTION,
+*PPOWER_ACTION;
+
+typedef enum _SYSTEM_POWER_STATE {
+ PowerSystemUnspecified = 0,
+ PowerSystemWorking = 1,
+ PowerSystemSleeping1 = 2,
+ PowerSystemSleeping2 = 3,
+ PowerSystemSleeping3 = 4,
+ PowerSystemHibernate = 5,
+ PowerSystemShutdown = 6,
+ PowerSystemMaximum = 7
+} SYSTEM_POWER_STATE,
+*PSYSTEM_POWER_STATE;
+
+typedef enum _DEVICE_POWER_STATE {
+ PowerDeviceUnspecified,
+ PowerDeviceD0,
+ PowerDeviceD1,
+ PowerDeviceD2,
+ PowerDeviceD3,
+ PowerDeviceMaximum
+} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
+
+typedef enum _POWER_INFORMATION_LEVEL {
+ SystemPowerPolicyAc,
+ SystemPowerPolicyDc,
+ VerifySystemPolicyAc,
+ VerifySystemPolicyDc,
+ SystemPowerCapabilities,
+ SystemBatteryState,
+ SystemPowerStateHandler,
+ ProcessorStateHandler,
+ SystemPowerPolicyCurrent,
+ AdministratorPowerPolicy,
+ SystemReserveHiberFile,
+ ProcessorInformation,
+ SystemPowerInformation,
+ ProcessorStateHandler2,
+ LastWakeTime,
+ LastSleepTime,
+ SystemExecutionState,
+ SystemPowerStateNotifyHandler,
+ ProcessorPowerPolicyAc,
+ ProcessorPowerPolicyDc,
+ VerifyProcessorPowerPolicyAc,
+ VerifyProcessorPowerPolicyDc,
+ ProcessorPowerPolicyCurrent
+} POWER_INFORMATION_LEVEL;
+
+typedef struct _ADMINISTRATOR_POWER_POLICY {
+ SYSTEM_POWER_STATE MinSleep;
+ SYSTEM_POWER_STATE MaxSleep;
+ ULONG MinVideoTimeout;
+ ULONG MaxVideoTimeout;
+ ULONG MinSpindownTimeout;
+ ULONG MaxSpindownTimeout;
+} ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
+
+typedef struct {
+ ULONG Granularity;
+ ULONG Capacity;
+} BATTERY_REPORTING_SCALE,
+*PBATTERY_REPORTING_SCALE;
+
+typedef struct {
+ POWER_ACTION Action;
+ ULONG Flags;
+ ULONG EventCode;
+} POWER_ACTION_POLICY,
+*PPOWER_ACTION_POLICY;
+
+typedef struct _PROCESSOR_POWER_INFORMATION {
+ ULONG Number;
+ ULONG MaxMhz;
+ ULONG CurrentMhz;
+ ULONG MhzLimit;
+ ULONG MaxIdleState;
+ ULONG CurrentIdleState;
+} PROCESSOR_POWER_INFORMATION,
+*PPROCESSOR_POWER_INFORMATION;
+
+typedef struct _PROCESSOR_POWER_POLICY_INFO {
+ ULONG TimeCheck;
+ ULONG DemoteLimit;
+ ULONG PromoteLimit;
+ UCHAR DemotePercent;
+ UCHAR PromotePercent;
+ UCHAR Spare[2];
+ ULONG AllowDemotion:1;
+ ULONG AllowPromotion:1;
+ ULONG Reserved:30;
+} PROCESSOR_POWER_POLICY_INFO,
+*PPROCESSOR_POWER_POLICY_INFO;
+
+typedef struct _PROCESSOR_POWER_POLICY {
+ DWORD Revision;
+ BYTE DynamicThrottle;
+ BYTE Spare[3];
+ DWORD DisableCStates:1;
+ DWORD Reserved:31;
+ DWORD PolicyCount;
+ PROCESSOR_POWER_POLICY_INFO Policy[3];
+} PROCESSOR_POWER_POLICY,
+*PPROCESSOR_POWER_POLICY;
+
+typedef struct {
+ BOOLEAN AcOnLine;
+ BOOLEAN BatteryPresent;
+ BOOLEAN Charging;
+ BOOLEAN Discharging;
+ BOOLEAN Spare1[4];
+ ULONG MaxCapacity;
+ ULONG RemainingCapacity;
+ ULONG Rate;
+ ULONG EstimatedTime;
+ ULONG DefaultAlert1;
+ ULONG DefaultAlert2;
+} SYSTEM_BATTERY_STATE,
+*PSYSTEM_BATTERY_STATE;
+
+typedef struct {
+ BOOLEAN PowerButtonPresent;
+ BOOLEAN SleepButtonPresent;
+ BOOLEAN LidPresent;
+ BOOLEAN SystemS1;
+ BOOLEAN SystemS2;
+ BOOLEAN SystemS3;
+ BOOLEAN SystemS4;
+ BOOLEAN SystemS5;
+ BOOLEAN HiberFilePresent;
+ BOOLEAN FullWake;
+ BOOLEAN VideoDimPresent;
+ BOOLEAN ApmPresent;
+ BOOLEAN UpsPresent;
+ BOOLEAN ThermalControl;
+ BOOLEAN ProcessorThrottle;
+ UCHAR ProcessorMinThrottle;
+ UCHAR ProcessorMaxThrottle;
+ UCHAR spare2[4];
+ BOOLEAN DiskSpinDown;
+ UCHAR spare3[8];
+ BOOLEAN SystemBatteriesPresent;
+ BOOLEAN BatteriesAreShortTerm;
+ BATTERY_REPORTING_SCALE BatteryScale[3];
+ SYSTEM_POWER_STATE AcOnLineWake;
+ SYSTEM_POWER_STATE SoftLidWake;
+ SYSTEM_POWER_STATE RtcWake;
+ SYSTEM_POWER_STATE MinDeviceWakeState;
+ SYSTEM_POWER_STATE DefaultLowLatencyWake;
+} SYSTEM_POWER_CAPABILITIES,
+*PSYSTEM_POWER_CAPABILITIES;
+
+typedef struct _SYSTEM_POWER_INFORMATION {
+ ULONG MaxIdlenessAllowed;
+ ULONG Idleness;
+ ULONG TimeRemaining;
+ UCHAR CoolingMode;
+} SYSTEM_POWER_INFORMATION,
+*PSYSTEM_POWER_INFORMATION;
+
+typedef struct _SYSTEM_POWER_LEVEL {
+ BOOLEAN Enable;
+ UCHAR Spare[3];
+ ULONG BatteryLevel;
+ POWER_ACTION_POLICY PowerPolicy;
+ SYSTEM_POWER_STATE MinSystemState;
+} SYSTEM_POWER_LEVEL,
+*PSYSTEM_POWER_LEVEL;
+
+typedef struct _SYSTEM_POWER_POLICY {
+ ULONG Revision;
+ POWER_ACTION_POLICY PowerButton;
+ POWER_ACTION_POLICY SleepButton;
+ POWER_ACTION_POLICY LidClose;
+ SYSTEM_POWER_STATE LidOpenWake;
+ ULONG Reserved;
+ POWER_ACTION_POLICY Idle;
+ ULONG IdleTimeout;
+ UCHAR IdleSensitivity;
+ UCHAR DynamicThrottle;
+ UCHAR Spare2[2];
+ SYSTEM_POWER_STATE MinSleep;
+ SYSTEM_POWER_STATE MaxSleep;
+ SYSTEM_POWER_STATE ReducedLatencySleep;
+ ULONG WinLogonFlags;
+ ULONG Spare3;
+ ULONG DozeS4Timeout;
+ ULONG BroadcastCapacityResolution;
+ SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
+ ULONG VideoTimeout;
+ BOOLEAN VideoDimDisplay;
+ ULONG VideoReserved[3];
+ ULONG SpindownTimeout;
+ BOOLEAN OptimizeForPower;
+ UCHAR FanThrottleTolerance;
+ UCHAR ForcedThrottle;
+ UCHAR MinThrottle;
+ POWER_ACTION_POLICY OverThrottled;
+} SYSTEM_POWER_POLICY,
+*PSYSTEM_POWER_POLICY;
+
+typedef union _FILE_SEGMENT_ELEMENT {
+ PVOID64 Buffer;
+ ULONGLONG Alignment;
+} FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+typedef struct _FILE_NOTIFY_INFORMATION {
+ DWORD NextEntryOffset;
+ DWORD Action;
+ DWORD FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+/* ----------------------------- begin tape storage --------------------- */
+
+#define TAPE_FIXED_PARTITIONS 0
+#define TAPE_SELECT_PARTITIONS 1
+#define TAPE_INITIATOR_PARTITIONS 2
+#define TAPE_ERASE_SHORT 0
+#define TAPE_ERASE_LONG 1
+#define TAPE_LOAD 0
+#define TAPE_UNLOAD 1
+#define TAPE_TENSION 2
+#define TAPE_LOCK 3
+#define TAPE_UNLOCK 4
+#define TAPE_FORMAT 5
+#define TAPE_SETMARKS 0
+#define TAPE_FILEMARKS 1
+#define TAPE_SHORT_FILEMARKS 2
+#define TAPE_LONG_FILEMARKS 3
+#define TAPE_REWIND 0
+#define TAPE_ABSOLUTE_BLOCK 1
+#define TAPE_LOGICAL_BLOCK 2
+#define TAPE_PSEUDO_LOGICAL_BLOCK 3
+#define TAPE_SPACE_END_OF_DATA 4
+#define TAPE_SPACE_RELATIVE_BLOCKS 5
+#define TAPE_SPACE_FILEMARKS 6
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7
+#define TAPE_SPACE_SETMARKS 8
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9
+
+typedef struct _TAPE_CREATE_PARTITION {
+ DWORD Method;
+ DWORD Count;
+ DWORD Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
+typedef struct _TAPE_ERASE {
+ DWORD Type;
+ BOOLEAN Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
+typedef struct _TAPE_PREPARE {
+ DWORD Operation;
+ BOOLEAN Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ ULONG EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+ ULONG BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
+
+typedef struct _TAPE_WRITE_MARKS {
+ DWORD Type;
+ DWORD Count;
+ BOOLEAN Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
+typedef struct _TAPE_GET_POSITION {
+ ULONG Type;
+ ULONG Partition;
+ ULONG OffsetLow;
+ ULONG OffsetHigh;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
+typedef struct _TAPE_SET_POSITION {
+ ULONG Method;
+ ULONG Partition;
+ LARGE_INTEGER Offset;
+ BOOLEAN Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
+typedef 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;
+} TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
+
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+ LARGE_INTEGER Capacity;
+ LARGE_INTEGER Remaining;
+ DWORD BlockSize;
+ DWORD PartitionCount;
+ BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
+
/* ----------------------------- begin registry ----------------------------- */
/* Registry security values */
LIST_ENTRY ProcessLocksList;
DWORD EntryCount;
DWORD ContentionCount;
+#ifdef __WINESRC__ /* in Wine we store the name here */
+ DWORD_PTR Spare[8/sizeof(DWORD_PTR)];
+#else
DWORD Spare[ 2 ];
+#endif
} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
typedef struct _RTL_CRITICAL_SECTION {
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
+typedef VOID (NTAPI * PFLS_CALLBACK_FUNCTION) ( PVOID );
#include <pshpack8.h>
typedef struct _IO_COUNTERS {
DECL_WINELIB_TYPE_AW(POSVERSIONINFOEX)
DECL_WINELIB_TYPE_AW(LPOSVERSIONINFOEX)
-ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
+NTSYSAPI ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_)))
#define VER_AND 6
#define VER_OR 7
+typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
+ DWORD dwFlags;
+ DWORD ulFormatVersion;
+ DWORD ulAssemblyCount;
+ DWORD ulRootManifestPathType;
+ DWORD ulRootManifestPathChars;
+ DWORD ulRootConfigurationPathType;
+ DWORD ulRootConfigurationPathChars;
+ DWORD ulAppDirPathType;
+ DWORD ulAppDirPathChars;
+ PCWSTR lpRootManifestPath;
+ PCWSTR lpRootConfigurationPath;
+ PCWSTR lpAppDirPath;
+} ACTIVATION_CONTEXT_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_DETAILED_INFORMATION;
+
+typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
+ DWORD ulFlags;
+ DWORD ulEncodedAssemblyIdentityLength;
+ DWORD ulManifestPathType;
+ DWORD ulManifestPathLength;
+ LARGE_INTEGER liManifestLastWriteTime;
+ DWORD ulPolicyPathType;
+ DWORD ulPolicyPathLength;
+ LARGE_INTEGER liPolicyLastWriteTime;
+ DWORD ulMetadataSatelliteRosterIndex;
+ DWORD ulManifestVersionMajor;
+ DWORD ulManifestVersionMinor;
+ DWORD ulPolicyVersionMajor;
+ DWORD ulPolicyVersionMinor;
+ DWORD ulAssemblyDirectoryNameLength;
+ PCWSTR lpAssemblyEncodedAssemblyIdentity;
+ PCWSTR lpAssemblyManifestPath;
+ PCWSTR lpAssemblyPolicyPath;
+ PCWSTR lpAssemblyDirectoryName;
+ DWORD ulFileCount;
+} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+
+typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX {
+ DWORD ulAssemblyIndex;
+ DWORD ulFileIndexInAssembly;
+} ACTIVATION_CONTEXT_QUERY_INDEX, *PACTIVATION_CONTEXT_QUERY_INDEX;
+
+typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX;
+
+typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
+ DWORD ulFlags;
+ DWORD ulFilenameLength;
+ DWORD ulPathLength;
+ PCWSTR lpFileName;
+ PCWSTR lpFilePath;
+} ASSEMBLY_FILE_DETAILED_INFORMATION, *PASSEMBLY_FILE_DETAILED_INFORMATION;
+
+typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
+
+typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
+ ActivationContextBasicInformation = 1,
+ ActivationContextDetailedInformation = 2,
+ AssemblyDetailedInformationInActivationContext = 3,
+ FileInformationInAssemblyOfAssemblyInActivationContext = 4,
+ MaxActivationContextInfoClass,
+
+ AssemblyDetailedInformationInActivationContxt = 3,
+ FileInformationInAssemblyOfAssemblyInActivationContxt = 4
+} ACTIVATION_CONTEXT_INFO_CLASS;
+
+#define ACTIVATION_CONTEXT_PATH_TYPE_NONE 1
+#define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE 2
+#define ACTIVATION_CONTEXT_PATH_TYPE_URL 3
+#define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF 4
+
+#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1
+#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2
+#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 3
+#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 4
+#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5
+#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6
+#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7
+#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE 8
+#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _WINNT_ */