📄 winnt.h
字号:
/* * Win32 definitions for Windows NT * * Copyright 1996 Alexandre Julliard */#ifndef MPLAYER_WINNT_H#define MPLAYER_WINNT_H#include "windef.h"#ifndef RC_INVOKED#include <string.h>#endif#include "pshpack1.h"/* Defines *//* Argument 1 passed to the DllEntryProc. */#define DLL_PROCESS_DETACH 0 /* detach process (unload library) */#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */#define DLL_THREAD_ATTACH 2 /* attach new thread */#define DLL_THREAD_DETACH 3 /* detach thread *//* u.x.wProcessorArchitecture (NT) */#define PROCESSOR_ARCHITECTURE_INTEL 0#define PROCESSOR_ARCHITECTURE_MIPS 1#define PROCESSOR_ARCHITECTURE_ALPHA 2#define PROCESSOR_ARCHITECTURE_PPC 3#define PROCESSOR_ARCHITECTURE_SHX 4#define PROCESSOR_ARCHITECTURE_ARM 5#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF/* dwProcessorType */#define PROCESSOR_INTEL_386 386#define PROCESSOR_INTEL_486 486#define PROCESSOR_INTEL_PENTIUM 586#define PROCESSOR_INTEL_860 860#define PROCESSOR_MIPS_R2000 2000#define PROCESSOR_MIPS_R3000 3000#define PROCESSOR_MIPS_R4000 4000#define PROCESSOR_ALPHA_21064 21064#define PROCESSOR_PPC_601 601#define PROCESSOR_PPC_603 603#define PROCESSOR_PPC_604 604#define PROCESSOR_PPC_620 620#define PROCESSOR_HITACHI_SH3 10003#define PROCESSOR_HITACHI_SH3E 10004#define PROCESSOR_HITACHI_SH4 10005#define PROCESSOR_MOTOROLA_821 821#define PROCESSOR_SHx_SH3 103#define PROCESSOR_SHx_SH4 104#define PROCESSOR_STRONGARM 2577#define PROCESSOR_ARM720 1824 /* 0x720 */#define PROCESSOR_ARM820 2080 /* 0x820 */#define PROCESSOR_ARM920 2336 /* 0x920 */#define PROCESSOR_ARM_7TDMI 70001#define ANYSIZE_ARRAY 1#define MINCHAR 0x80#define MAXCHAR 0x7f#define MINSHORT 0x8000#define MAXSHORT 0x7fff#define MINLONG 0x80000000#define MAXLONG 0x7fffffff#define MAXBYTE 0xff#define MAXWORD 0xffff#define MAXDWORD 0xffffffff#define FIELD_OFFSET(type, field) \ ((LONG)(INT)&(((type *)0)->field))#define CONTAINING_RECORD(address, type, field) \ ((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))/* Types *//* TCHAR data types definitions for Winelib. *//* These types are _not_ defined for the emulator, because they *//* depend on the UNICODE macro that only exists in user's code. */# ifdef UNICODEtypedef WCHAR TCHAR, *PTCHAR;typedef LPWSTR PTSTR, LPTSTR;typedef LPCWSTR PCTSTR, LPCTSTR;#define TEXT(string) L##string /*probably wrong */# else /* UNICODE */typedef char TCHAR, *PTCHAR;typedef LPSTR PTSTR, LPTSTR;typedef LPCSTR PCTSTR, LPCTSTR;#define TEXT(string) string# endif /* UNICODE */typedef BYTE BOOLEAN;typedef BOOLEAN *PBOOLEAN;typedef struct LIST_ENTRY { struct LIST_ENTRY *Flink; struct LIST_ENTRY *Blink;} LIST_ENTRY, *PLIST_ENTRY;typedef struct SINGLE_LIST_ENTRY { struct SINGLE_LIST_ENTRY *Next;} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;/* Heap flags */#define HEAP_NO_SERIALIZE 0x00000001#define HEAP_GROWABLE 0x00000002#define HEAP_GENERATE_EXCEPTIONS 0x00000004#define HEAP_ZERO_MEMORY 0x00000008#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010#define HEAP_TAIL_CHECKING_ENABLED 0x00000020#define HEAP_FREE_CHECKING_ENABLED 0x00000040#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080#define HEAP_CREATE_ALIGN_16 0x00010000#define HEAP_CREATE_ENABLE_TRACING 0x00020000#define HEAP_WINE_SEGPTR 0x01000000 /* Not a Win32 flag */#define HEAP_WINE_CODESEG 0x02000000 /* Not a Win32 flag */#define HEAP_WINE_CODE16SEG 0x04000000 /* Not a Win32 flag */#define HEAP_WINE_SHARED 0x08000000 /* Not a Win32 flag *//* Processor feature flags. */#define PF_FLOATING_POINT_PRECISION_ERRATA 0#define PF_FLOATING_POINT_EMULATED 1#define PF_COMPARE_EXCHANGE_DOUBLE 2#define PF_MMX_INSTRUCTIONS_AVAILABLE 3#define PF_PPC_MOVEMEM_64BIT_OK 4#define PF_ALPHA_BYTE_INSTRUCTIONS 5/* based on wine-20010510 -- alex */#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6#define PF_AMD3D_INSTRUCTIONS_AVAILABLE 7#define PF_RDTSC_INSTRUCTION_AVAILABLE 8#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10/* The Win32 register context *//* CONTEXT is the CPU-dependent context; it should be used *//* wherever a platform-specific context is needed (e.g. exception *//* handling, Win32 register functions). *//* CONTEXT86 is the i386-specific context; it should be used *//* wherever only a 386 context makes sense (e.g. DOS interrupts, *//* Win16 register functions), so that this code can be compiled *//* on all platforms. */#define SIZE_OF_80387_REGISTERS 80typedef struct FLOATING_SAVE_AREA{ DWORD ControlWord; DWORD StatusWord; DWORD TagWord; DWORD ErrorOffset; DWORD ErrorSelector; DWORD DataOffset; DWORD DataSelector; BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; DWORD Cr0NpxState;} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;typedef struct CONTEXT86{ DWORD ContextFlags; /* These are selected by CONTEXT_DEBUG_REGISTERS */ DWORD Dr0; DWORD Dr1; DWORD Dr2; DWORD Dr3; DWORD Dr6; DWORD Dr7; /* These are selected by CONTEXT_FLOATING_POINT */ FLOATING_SAVE_AREA FloatSave; /* These are selected by CONTEXT_SEGMENTS */ DWORD SegGs; DWORD SegFs; DWORD SegEs; DWORD SegDs; /* These are selected by CONTEXT_INTEGER */ DWORD Edi; DWORD Esi; DWORD Ebx; DWORD Edx; DWORD Ecx; DWORD Eax; /* These are selected by CONTEXT_CONTROL */ DWORD Ebp; DWORD Eip; DWORD SegCs; DWORD EFlags; DWORD Esp; DWORD SegSs;} CONTEXT86;#define CONTEXT_X86 0x00010000#define CONTEXT_i386 CONTEXT_X86#define CONTEXT_i486 CONTEXT_X86#define CONTEXT86_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */#define CONTEXT86_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */#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_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)/* i386 context definitions */#ifdef __i386__#define CONTEXT_CONTROL CONTEXT86_CONTROL#define CONTEXT_INTEGER CONTEXT86_INTEGER#define CONTEXT_SEGMENTS CONTEXT86_SEGMENTS#define CONTEXT_FLOATING_POINT CONTEXT86_FLOATING_POINT#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS#define CONTEXT_FULL CONTEXT86_FULLtypedef CONTEXT86 CONTEXT;#endif /* __i386__ *//* Alpha context definitions */#if defined(_ALPHA_) || defined(__alpha__)#define CONTEXT_ALPHA 0x00020000 #define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)typedef struct CONTEXT{ /* selected by CONTEXT_FLOATING_POINT */ 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; /* selected by CONTEXT_INTEGER */ 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; /* selected by CONTEXT_FLOATING_POINT */ ULONGLONG Fpcr; ULONGLONG SoftFpcr; /* selected by CONTEXT_CONTROL */ ULONGLONG Fir; DWORD Psr; DWORD ContextFlags; DWORD Fill[4];} CONTEXT;#define QUAD_PSR_OFFSET HighSoftFpcr#define QUAD_FLAGS_OFFSET HighFir#endif /* _ALPHA_ *//* Mips context definitions */#ifdef _MIPS_#define CONTEXT_R4000 0x00010000#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001)#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002)#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)typedef struct CONTEXT{ DWORD Argument[4]; /* These are selected by CONTEXT_FLOATING_POINT */ DWORD FltF0; DWORD FltF1; DWORD FltF2; DWORD FltF3; DWORD FltF4; DWORD FltF5; DWORD FltF6; DWORD FltF7; DWORD FltF8; DWORD FltF9; DWORD FltF10; DWORD FltF11; DWORD FltF12; DWORD FltF13; DWORD FltF14; DWORD FltF15; DWORD FltF16; DWORD FltF17; DWORD FltF18; DWORD FltF19; DWORD FltF20; DWORD FltF21; DWORD FltF22; DWORD FltF23; DWORD FltF24; DWORD FltF25; DWORD FltF26; DWORD FltF27; DWORD FltF28; DWORD FltF29; DWORD FltF30; DWORD FltF31; /* These are selected by CONTEXT_INTEGER */ DWORD IntZero; DWORD IntAt; DWORD IntV0; DWORD IntV1; DWORD IntA0; DWORD IntA1; DWORD IntA2; DWORD IntA3; DWORD IntT0; DWORD IntT1; DWORD IntT2; DWORD IntT3; DWORD IntT4; DWORD IntT5; DWORD IntT6; DWORD IntT7; DWORD IntS0; DWORD IntS1; DWORD IntS2; DWORD IntS3; DWORD IntS4; DWORD IntS5; DWORD IntS6; DWORD IntS7; DWORD IntT8; DWORD IntT9; DWORD IntK0; DWORD IntK1; DWORD IntGp; DWORD IntSp; DWORD IntS8; DWORD IntRa; DWORD IntLo; DWORD IntHi; /* These are selected by CONTEXT_FLOATING_POINT */ DWORD Fsr; /* These are selected by CONTEXT_CONTROL */ DWORD Fir; DWORD Psr; DWORD ContextFlags; DWORD Fill[2];} CONTEXT;#endif /* _MIPS_ *//* PowerPC context definitions */#ifdef __PPC__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -