189 lines
6.4 KiB
C
189 lines
6.4 KiB
C
/*
|
|
* Win32 definitions for Windows NT
|
|
*
|
|
* Copyright 1996 Alexandre Julliard
|
|
*/
|
|
|
|
#ifndef __WINE_WINNT_H
|
|
#define __WINE_WINNT_H
|
|
|
|
#include "wintypes.h"
|
|
|
|
/* 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 */
|
|
|
|
/* The Win32 register context */
|
|
|
|
#define CONTEXT_i386 0x00010000
|
|
#define CONTEXT_i486 CONTEXT_i386
|
|
#define CONTEXT_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
|
|
#define CONTEXT_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
|
|
#define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
|
|
#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */
|
|
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
|
|
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
|
|
|
|
#define SIZE_OF_80387_REGISTERS 80
|
|
|
|
typedef struct
|
|
{
|
|
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;
|
|
|
|
typedef struct
|
|
{
|
|
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;
|
|
} CONTEXT, *PCONTEXT;
|
|
|
|
|
|
#ifdef __WINE__
|
|
|
|
/* Macros for easier access to context registers */
|
|
|
|
#define EAX_reg(context) ((context)->Eax)
|
|
#define EBX_reg(context) ((context)->Ebx)
|
|
#define ECX_reg(context) ((context)->Ecx)
|
|
#define EDX_reg(context) ((context)->Edx)
|
|
#define ESI_reg(context) ((context)->Esi)
|
|
#define EDI_reg(context) ((context)->Edi)
|
|
#define EBP_reg(context) ((context)->Ebp)
|
|
|
|
#define CS_reg(context) ((context)->SegCs)
|
|
#define DS_reg(context) ((context)->SegDs)
|
|
#define ES_reg(context) ((context)->SegEs)
|
|
#define FS_reg(context) ((context)->SegFs)
|
|
#define GS_reg(context) ((context)->SegGs)
|
|
#define SS_reg(context) ((context)->SegSs)
|
|
|
|
#define EFL_reg(context) ((context)->EFlags)
|
|
#define EIP_reg(context) ((context)->Eip)
|
|
#define ESP_reg(context) ((context)->Esp)
|
|
|
|
#define AX_reg(context) (*(WORD*)&EAX_reg(context))
|
|
#define BX_reg(context) (*(WORD*)&EBX_reg(context))
|
|
#define CX_reg(context) (*(WORD*)&ECX_reg(context))
|
|
#define DX_reg(context) (*(WORD*)&EDX_reg(context))
|
|
#define SI_reg(context) (*(WORD*)&ESI_reg(context))
|
|
#define DI_reg(context) (*(WORD*)&EDI_reg(context))
|
|
#define BP_reg(context) (*(WORD*)&EBP_reg(context))
|
|
|
|
#define AL_reg(context) (*(BYTE*)&EAX_reg(context))
|
|
#define AH_reg(context) (*((BYTE*)&EAX_reg(context)+1))
|
|
#define BL_reg(context) (*(BYTE*)&EBX_reg(context))
|
|
#define BH_reg(context) (*((BYTE*)&EBX_reg(context)+1))
|
|
#define CL_reg(context) (*(BYTE*)&ECX_reg(context))
|
|
#define CH_reg(context) (*((BYTE*)&ECX_reg(context)+1))
|
|
#define DL_reg(context) (*(BYTE*)&EDX_reg(context))
|
|
#define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1))
|
|
|
|
#define IP_reg(context) (*(WORD*)&EIP_reg(context))
|
|
#define SP_reg(context) (*(WORD*)&ESP_reg(context))
|
|
|
|
#define FL_reg(context) (*(WORD*)&EFL_reg(context))
|
|
|
|
#define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
|
|
#define RESET_CFLAG(context) (EFL_reg(context) &= 0xfffffffe)
|
|
|
|
#endif /* __WINE__ */
|
|
|
|
/* Language IDs */
|
|
|
|
#define LANG_NEUTRAL 0x00
|
|
#define LANG_ARABIC 0x01
|
|
#define LANG_AFRIKAANS 0x36
|
|
#define LANG_ALBANIAN 0x1c
|
|
#define LANG_BASQUE 0x2d
|
|
#define LANG_BULGARIAN 0x02
|
|
#define LANG_BYELORUSSIAN 0x23
|
|
#define LANG_CATALAN 0x03
|
|
#define LANG_CHINESE 0x04
|
|
#define LANG_CROATIAN 0x1a
|
|
#define LANG_CZECH 0x05
|
|
#define LANG_DANISH 0x06
|
|
#define LANG_DUTCH 0x13
|
|
#define LANG_ENGLISH 0x09
|
|
#define LANG_ESTONIAN 0x25
|
|
#define LANG_FAEROESE 0x38
|
|
#define LANG_FARSI 0x29
|
|
#define LANG_FINNISH 0x0b
|
|
#define LANG_FRENCH 0x0c
|
|
#define LANG_GERMAN 0x07
|
|
#define LANG_GREEK 0x08
|
|
#define LANG_HEBREW 0x0D
|
|
#define LANG_HUNGARIAN 0x0e
|
|
#define LANG_ICELANDIC 0x0f
|
|
#define LANG_INDONESIAN 0x21
|
|
#define LANG_ITALIAN 0x10
|
|
#define LANG_JAPANESE 0x11
|
|
#define LANG_KOREAN 0x12
|
|
#define LANG_LATVIAN 0x26
|
|
#define LANG_LITHUANIAN 0x27
|
|
#define LANG_NORWEGIAN 0x14
|
|
#define LANG_POLISH 0x15
|
|
#define LANG_PORTUGUESE 0x16
|
|
#define LANG_ROMANIAN 0x18
|
|
#define LANG_RUSSIAN 0x19
|
|
#define LANG_SLOVAK 0x1b
|
|
#define LANG_SLOVENIAN 0x24
|
|
#define LANG_SORBIAN 0x2e
|
|
#define LANG_SPANISH 0x0a
|
|
#define LANG_SWEDISH 0x1d
|
|
#define LANG_THAI 0x1e
|
|
#define LANG_TURKISH 0x1f
|
|
#define LANG_UKRAINIAN 0x22
|
|
|
|
#endif /* __WINE_WINNT_H */
|