📄 winnt.h
字号:
#define TAPE_ERASE_LONG 1#define TAPE_ERASE_SHORT 0#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 BTYPE(x) ((x)&N_BTMASK)#define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))#define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))#define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))#ifndef RC_INVOKEDtypedef DWORD ACCESS_MASK;typedef struct _GENERIC_MAPPING { ACCESS_MASK GenericRead; ACCESS_MASK GenericWrite; ACCESS_MASK GenericExecute; ACCESS_MASK GenericAll;} GENERIC_MAPPING, *PGENERIC_MAPPING;typedef struct _ACE_HEADER { BYTE AceType; BYTE AceFlags; WORD AceSize;} ACE_HEADER;typedef struct _ACCESS_ALLOWED_ACE { ACE_HEADER Header; ACCESS_MASK Mask; DWORD SidStart;} ACCESS_ALLOWED_ACE;typedef struct _ACCESS_DENIED_ACE { ACE_HEADER Header; ACCESS_MASK Mask; DWORD SidStart;} ACCESS_DENIED_ACE;typedef struct _ACL { BYTE AclRevision; BYTE Sbz1; WORD AclSize; WORD AceCount; WORD Sbz2;} ACL,*PACL;typedef struct _ACL_REVISION_INFORMATION { DWORD AclRevision;} ACL_REVISION_INFORMATION;typedef struct _ACL_SIZE_INFORMATION { DWORD AceCount; DWORD AclBytesInUse; DWORD AclBytesFree;} ACL_SIZE_INFORMATION;/* FIXME: add more machines */#ifdef _X86_#define SIZE_OF_80387_REGISTERS 80#define CONTEXT_i386 0x10000#define CONTEXT_i486 0x10000#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)typedef struct _FLOATING_SAVE_AREA { DWORD ControlWord; DWORD StatusWord; DWORD TagWord; DWORD ErrorOffset; DWORD ErrorSelector; DWORD DataOffset; DWORD DataSelector; BYTE RegisterArea[80]; DWORD Cr0NpxState;} FLOATING_SAVE_AREA;typedef 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;} CONTEXT;#elif defined(_PPC_)#define CONTEXT_CONTROL 1L#define CONTEXT_FLOATING_POINT 2L#define CONTEXT_INTEGER 4L#define CONTEXT_DEBUG_REGISTERS 8L#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)typedef struct { double Fpr0; double Fpr1; double Fpr2; double Fpr3; double Fpr4; double Fpr5; double Fpr6; double Fpr7; double Fpr8; double Fpr9; double Fpr10; double Fpr11; double Fpr12; double Fpr13; double Fpr14; double Fpr15; double Fpr16; double Fpr17; double Fpr18; double Fpr19; double Fpr20; double Fpr21; double Fpr22; double Fpr23; double Fpr24; double Fpr25; double Fpr26; double Fpr27; double Fpr28; double Fpr29; double Fpr30; double Fpr31; double Fpscr; DWORD Gpr0; DWORD Gpr1; DWORD Gpr2; DWORD Gpr3; DWORD Gpr4; DWORD Gpr5; DWORD Gpr6; DWORD Gpr7; DWORD Gpr8; DWORD Gpr9; DWORD Gpr10; DWORD Gpr11; DWORD Gpr12; DWORD Gpr13; DWORD Gpr14; DWORD Gpr15; DWORD Gpr16; DWORD Gpr17; DWORD Gpr18; DWORD Gpr19; DWORD Gpr20; DWORD Gpr21; DWORD Gpr22; DWORD Gpr23; DWORD Gpr24; DWORD Gpr25; DWORD Gpr26; DWORD Gpr27; DWORD Gpr28; DWORD Gpr29; DWORD Gpr30; DWORD Gpr31; DWORD Cr; DWORD Xer; DWORD Msr; DWORD Iar; DWORD Lr; DWORD Ctr; DWORD ContextFlags; DWORD Fill[3]; DWORD Dr0; DWORD Dr1; DWORD Dr2; DWORD Dr3; DWORD Dr4; DWORD Dr5; DWORD Dr6; DWORD Dr7;} CONTEXT;#elif defined(_ALPHA_)#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, *PCONTEXT;#elif defined(SHx)/* These are the debug or break registers on the SH3 */typedef struct _DEBUG_REGISTERS { ULONG BarA; UCHAR BasrA; UCHAR BamrA; USHORT BbrA; ULONG BarB; UCHAR BasrB; UCHAR BamrB; USHORT BbrB; ULONG BdrB; ULONG BdmrB; USHORT Brcr; USHORT Align;} DEBUG_REGISTERS, *PDEBUG_REGISTERS;/* The following flags control the contents of the CONTEXT structure. */#define CONTEXT_SH3 0x00000040#define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */#ifdef SH3#define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L)#define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L)#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)#else /* SH4 */#define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L)#define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L)#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L)#define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)#endif/* Context Frame *//* This frame is used to store a limited processor context into the *//* Thread structure for CPUs which have no floating point support. */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. */ /* N.B. The registers RA and R15 are defined in this section, but are */ /* considered part of the control context rather than part of the integer */ /* context. */ ULONG PR; ULONG MACH; ULONG MACL; ULONG GBR; 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 R13; ULONG R14; ULONG R15; /* This section is specified/returned if the ContextFlags word contains */ /* the flag CONTEXT_CONTROL. */ /* N.B. The registers r15 and ra are defined in the integer section, */ /* but are considered part of the control context rather than part of */ /* the integer context. */ ULONG Fir; ULONG Psr;#if !defined(SH3e) && !defined(SH4) ULONG OldStuff[2]; DEBUG_REGISTERS DebugRegisters;#else ULONG Fpscr; ULONG Fpul; ULONG FRegs[16];#if defined(SH4) ULONG xFRegs[16];#endif#endif} CONTEXT,*PCONTEXT,*LPCONTEXT;#elif defined(MIPS)/* The following flags control the contents of the CONTEXT structure. */#define CONTEXT_R4000 0x00010000 /* r4000 context */#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L)#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L)#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)/* Context Frame *//* N.B. This frame must be exactly a multiple of 16 bytes in length. *//* This frame has a several purposes: 1) it is used as an argument to *//* NtContinue, 2) it is used to constuct a call frame for APC delivery, *//* 3) it is used to construct a call frame for exception dispatching *//* in user mode, and 4) it is used in the user level thread creation *//* routines. *//* The layout of the record conforms to a standard call frame. */typedef struct _CONTEXT { /* This section is always present and is used as an argument build */ /* area. */ DWORD Argument[4]; /* This section is specified/returned if the ContextFlags word contains */ /* the flag CONTEXT_FLOATING_POINT. */ DWORD FltF0; DWORD FltF1; DWORD FltF2; DWORD FltF3; DWORD FltF4; DWORD FltF5; DWORD FltF6; DWORD FltF7; DWORD FltF8; DWORD FltF9;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -