Ignore:
Timestamp:
Nov 30, 1999, 8:38:24 PM (26 years ago)
Author:
sandervl
Message:

Wine header updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/win/winnt.h

    r1251 r1890  
    1 /* $Id: winnt.h,v 1.2 1999-10-11 20:15:48 sandervl Exp $ */
    2 
    31/*
    42 * Win32 definitions for Windows NT
     
    2321
    2422/* u.x.wProcessorArchitecture (NT) */
    25 #define PROCESSOR_ARCHITECTURE_INTEL    0
    26 #define PROCESSOR_ARCHITECTURE_MIPS     1
    27 #define PROCESSOR_ARCHITECTURE_ALPHA    2
    28 #define PROCESSOR_ARCHITECTURE_PPC      3
    29 #define PROCESSOR_ARCHITECTURE_UNKNOWN  0xFFFF
     23#define PROCESSOR_ARCHITECTURE_INTEL    0
     24#define PROCESSOR_ARCHITECTURE_MIPS     1
     25#define PROCESSOR_ARCHITECTURE_ALPHA    2
     26#define PROCESSOR_ARCHITECTURE_PPC      3
     27#define PROCESSOR_ARCHITECTURE_SHX      4
     28#define PROCESSOR_ARCHITECTURE_ARM      5
     29#define PROCESSOR_ARCHITECTURE_UNKNOWN  0xFFFF
    3030
    3131/* dwProcessorType */
    32 #define PROCESSOR_INTEL_386     386
    33 #define PROCESSOR_INTEL_486     486
    34 #define PROCESSOR_INTEL_PENTIUM 586
    35 #define PROCESSOR_MIPS_R4000    4000
    36 #define PROCESSOR_ALPHA_21064   21064
    37 
     32#define PROCESSOR_INTEL_386      386
     33#define PROCESSOR_INTEL_486      486
     34#define PROCESSOR_INTEL_PENTIUM  586
     35#define PROCESSOR_INTEL_860      860
     36#define PROCESSOR_MIPS_R2000     2000
     37#define PROCESSOR_MIPS_R3000     3000
     38#define PROCESSOR_MIPS_R4000     4000
     39#define PROCESSOR_ALPHA_21064    21064
     40#define PROCESSOR_PPC_601        601
     41#define PROCESSOR_PPC_603        603
     42#define PROCESSOR_PPC_604        604
     43#define PROCESSOR_PPC_620        620
     44#define PROCESSOR_HITACHI_SH3    10003
     45#define PROCESSOR_HITACHI_SH3E   10004
     46#define PROCESSOR_HITACHI_SH4    10005
     47#define PROCESSOR_MOTOROLA_821   821
     48#define PROCESSOR_SHx_SH3        103
     49#define PROCESSOR_SHx_SH4        104
     50#define PROCESSOR_STRONGARM      2577
     51#define PROCESSOR_ARM720         1824    /* 0x720 */
     52#define PROCESSOR_ARM820         2080    /* 0x820 */
     53#define PROCESSOR_ARM920         2336    /* 0x920 */
     54#define PROCESSOR_ARM_7TDMI      70001
    3855
    3956#define ANYSIZE_ARRAY 1
     
    5673
    5774/* Types */
     75
     76/* TCHAR data types definitions for Winelib. */
     77/* These types are _not_ defined for the emulator, because they */
     78/* depend on the UNICODE macro that only exists in user's code. */
     79
     80#ifndef __WINE__
     81# ifdef UNICODE
     82typedef LPWSTR LPTSTR;
     83typedef LPCWSTR LPCTSTR;
     84#define __TEXT(string) L##string /*probably wrong */
     85# else  /* UNICODE */
     86typedef LPSTR LPTSTR;
     87typedef LPCSTR LPCTSTR;
     88#define __TEXT(string) string
     89# endif /* UNICODE */
     90#endif   /* __WINE__ */
     91#define TEXT(quote) __TEXT(quote)
    5892
    5993typedef BYTE     BOOLEAN;
     
    96130/* The Win32 register context */
    97131
    98 #define CONTEXT_i386      0x00010000
    99 #define CONTEXT_i486      CONTEXT_i386
    100 #define CONTEXT_CONTROL   (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
    101 #define CONTEXT_INTEGER   (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
    102 #define CONTEXT_SEGMENTS  (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
    103 #define CONTEXT_FLOATING_POINT  (CONTEXT_i386 | 0x0008L) /* 387 state */
    104 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
    105 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
     132/* CONTEXT is the CPU-dependent context; it should be used        */
     133/* wherever a platform-specific context is needed (e.g. exception */
     134/* handling, Win32 register functions). */
     135
     136/* CONTEXT86 is the i386-specific context; it should be used    */
     137/* wherever only a 386 context makes sense (e.g. DOS interrupts, */
     138/* Win16 register functions), so that this code can be compiled */
     139/* on all platforms. */
    106140
    107141#define SIZE_OF_80387_REGISTERS      80
    108142
    109 typedef struct
     143typedef struct _FLOATING_SAVE_AREA
    110144{
    111145    DWORD   ControlWord;
     
    118152    BYTE    RegisterArea[SIZE_OF_80387_REGISTERS];
    119153    DWORD   Cr0NpxState;
    120 } FLOATING_SAVE_AREA;
    121 
    122 typedef struct
     154} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
     155
     156typedef struct _CONTEXT86
    123157{
    124158    DWORD   ContextFlags;
     
    156190    DWORD   Esp;
    157191    DWORD   SegSs;
    158 } CONTEXT, *PCONTEXT;
    159 
     192} CONTEXT86;
     193
     194#define CONTEXT_X86       0x00010000
     195#define CONTEXT_i386      CONTEXT_X86
     196#define CONTEXT_i486      CONTEXT_X86
     197
     198#define CONTEXT86_CONTROL   (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
     199#define CONTEXT86_INTEGER   (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
     200#define CONTEXT86_SEGMENTS  (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
     201#define CONTEXT86_FLOATING_POINT  (CONTEXT_i386 | 0x0008L) /* 387 state */
     202#define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
     203#define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)
     204
     205/* i386 context definitions */
     206#ifdef __i386__
     207
     208#define CONTEXT_CONTROL         CONTEXT86_CONTROL
     209#define CONTEXT_INTEGER         CONTEXT86_INTEGER
     210#define CONTEXT_SEGMENTS        CONTEXT86_SEGMENTS
     211#define CONTEXT_FLOATING_POINT  CONTEXT86_FLOATING_POINT
     212#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS
     213#define CONTEXT_FULL            CONTEXT86_FULL
     214
     215typedef CONTEXT86 CONTEXT;
     216
     217#endif  /* __i386__ */
     218
     219/* Alpha context definitions */
     220#ifdef _ALPHA_
     221
     222#define CONTEXT_ALPHA   0x00020000
     223 
     224#define CONTEXT_CONTROL         (CONTEXT_ALPHA | 0x00000001L)
     225#define CONTEXT_FLOATING_POINT  (CONTEXT_ALPHA | 0x00000002L)
     226#define CONTEXT_INTEGER         (CONTEXT_ALPHA | 0x00000004L)
     227#define CONTEXT_FULL  (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
     228
     229typedef struct _CONTEXT
     230{
     231    /* selected by CONTEXT_FLOATING_POINT */
     232    ULONGLONG FltF0;
     233    ULONGLONG FltF1;
     234    ULONGLONG FltF2;
     235    ULONGLONG FltF3;
     236    ULONGLONG FltF4;
     237    ULONGLONG FltF5;
     238    ULONGLONG FltF6;
     239    ULONGLONG FltF7;
     240    ULONGLONG FltF8;
     241    ULONGLONG FltF9;
     242    ULONGLONG FltF10;
     243    ULONGLONG FltF11;
     244    ULONGLONG FltF12;
     245    ULONGLONG FltF13;
     246    ULONGLONG FltF14;
     247    ULONGLONG FltF15;
     248    ULONGLONG FltF16;
     249    ULONGLONG FltF17;
     250    ULONGLONG FltF18;
     251    ULONGLONG FltF19;
     252    ULONGLONG FltF20;
     253    ULONGLONG FltF21;
     254    ULONGLONG FltF22;
     255    ULONGLONG FltF23;
     256    ULONGLONG FltF24;
     257    ULONGLONG FltF25;
     258    ULONGLONG FltF26;
     259    ULONGLONG FltF27;
     260    ULONGLONG FltF28;
     261    ULONGLONG FltF29;
     262    ULONGLONG FltF30;
     263    ULONGLONG FltF31;
     264
     265    /* selected by CONTEXT_INTEGER */
     266    ULONGLONG IntV0;
     267    ULONGLONG IntT0;
     268    ULONGLONG IntT1;
     269    ULONGLONG IntT2;
     270    ULONGLONG IntT3;
     271    ULONGLONG IntT4;
     272    ULONGLONG IntT5;
     273    ULONGLONG IntT6;
     274    ULONGLONG IntT7;
     275    ULONGLONG IntS0;
     276    ULONGLONG IntS1;
     277    ULONGLONG IntS2;
     278    ULONGLONG IntS3;
     279    ULONGLONG IntS4;
     280    ULONGLONG IntS5;
     281    ULONGLONG IntFp;
     282    ULONGLONG IntA0;
     283    ULONGLONG IntA1;
     284    ULONGLONG IntA2;
     285    ULONGLONG IntA3;
     286    ULONGLONG IntA4;
     287    ULONGLONG IntA5;
     288    ULONGLONG IntT8;
     289    ULONGLONG IntT9;
     290    ULONGLONG IntT10;
     291    ULONGLONG IntT11;
     292    ULONGLONG IntRa;
     293    ULONGLONG IntT12;
     294    ULONGLONG IntAt;
     295    ULONGLONG IntGp;
     296    ULONGLONG IntSp;
     297    ULONGLONG IntZero;
     298
     299    /* selected by CONTEXT_FLOATING_POINT */
     300    ULONGLONG Fpcr;
     301    ULONGLONG SoftFpcr;
     302
     303    /* selected by CONTEXT_CONTROL */
     304    ULONGLONG Fir;
     305    DWORD Psr;
     306    DWORD ContextFlags;
     307    DWORD Fill[4];
     308} CONTEXT;
     309
     310#define _QUAD_PSR_OFFSET   HighSoftFpcr
     311#define _QUAD_FLAGS_OFFSET HighFir
     312
     313#endif  /* _ALPHA_ */
     314
     315/* Mips context definitions */
     316#ifdef _MIPS_
     317
     318#define CONTEXT_R4000   0x00010000
     319
     320#define CONTEXT_CONTROL         (CONTEXT_R4000 | 0x00000001)
     321#define CONTEXT_FLOATING_POINT  (CONTEXT_R4000 | 0x00000002)
     322#define CONTEXT_INTEGER         (CONTEXT_R4000 | 0x00000004)
     323
     324#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
     325
     326typedef struct _CONTEXT
     327{
     328    DWORD Argument[4];
     329    /* These are selected by CONTEXT_FLOATING_POINT */
     330    DWORD FltF0;
     331    DWORD FltF1;
     332    DWORD FltF2;
     333    DWORD FltF3;
     334    DWORD FltF4;
     335    DWORD FltF5;
     336    DWORD FltF6;
     337    DWORD FltF7;
     338    DWORD FltF8;
     339    DWORD FltF9;
     340    DWORD FltF10;
     341    DWORD FltF11;
     342    DWORD FltF12;
     343    DWORD FltF13;
     344    DWORD FltF14;
     345    DWORD FltF15;
     346    DWORD FltF16;
     347    DWORD FltF17;
     348    DWORD FltF18;
     349    DWORD FltF19;
     350    DWORD FltF20;
     351    DWORD FltF21;
     352    DWORD FltF22;
     353    DWORD FltF23;
     354    DWORD FltF24;
     355    DWORD FltF25;
     356    DWORD FltF26;
     357    DWORD FltF27;
     358    DWORD FltF28;
     359    DWORD FltF29;
     360    DWORD FltF30;
     361    DWORD FltF31;
     362
     363    /* These are selected by CONTEXT_INTEGER */
     364    DWORD IntZero;
     365    DWORD IntAt;
     366    DWORD IntV0;
     367    DWORD IntV1;
     368    DWORD IntA0;
     369    DWORD IntA1;
     370    DWORD IntA2;
     371    DWORD IntA3;
     372    DWORD IntT0;
     373    DWORD IntT1;
     374    DWORD IntT2;
     375    DWORD IntT3;
     376    DWORD IntT4;
     377    DWORD IntT5;
     378    DWORD IntT6;
     379    DWORD IntT7;
     380    DWORD IntS0;
     381    DWORD IntS1;
     382    DWORD IntS2;
     383    DWORD IntS3;
     384    DWORD IntS4;
     385    DWORD IntS5;
     386    DWORD IntS6;
     387    DWORD IntS7;
     388    DWORD IntT8;
     389    DWORD IntT9;
     390    DWORD IntK0;
     391    DWORD IntK1;
     392    DWORD IntGp;
     393    DWORD IntSp;
     394    DWORD IntS8;
     395    DWORD IntRa;
     396    DWORD IntLo;
     397    DWORD IntHi;
     398
     399    /* These are selected by CONTEXT_FLOATING_POINT */
     400    DWORD Fsr;
     401
     402    /* These are selected by CONTEXT_CONTROL */
     403    DWORD Fir;
     404    DWORD Psr;
     405
     406    DWORD ContextFlags;
     407    DWORD Fill[2];
     408} CONTEXT;
     409
     410#endif  /* _MIPS_ */
     411
     412/* PowerPC context definitions */
     413#ifdef __PPC__
     414
     415#define CONTEXT_CONTROL         0x0001
     416#define CONTEXT_FLOATING_POINT  0x0002
     417#define CONTEXT_INTEGER         0x0004
     418#define CONTEXT_DEBUG_REGISTERS 0x0008
     419#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
     420
     421typedef struct
     422{
     423    /* These are selected by CONTEXT_FLOATING_POINT */
     424    double Fpr0;
     425    double Fpr1;
     426    double Fpr2;
     427    double Fpr3;
     428    double Fpr4;
     429    double Fpr5;
     430    double Fpr6;
     431    double Fpr7;
     432    double Fpr8;
     433    double Fpr9;
     434    double Fpr10;
     435    double Fpr11;
     436    double Fpr12;
     437    double Fpr13;
     438    double Fpr14;
     439    double Fpr15;
     440    double Fpr16;
     441    double Fpr17;
     442    double Fpr18;
     443    double Fpr19;
     444    double Fpr20;
     445    double Fpr21;
     446    double Fpr22;
     447    double Fpr23;
     448    double Fpr24;
     449    double Fpr25;
     450    double Fpr26;
     451    double Fpr27;
     452    double Fpr28;
     453    double Fpr29;
     454    double Fpr30;
     455    double Fpr31;
     456    double Fpscr;
     457
     458    /* These are selected by CONTEXT_INTEGER */
     459    DWORD Gpr0;
     460    DWORD Gpr1;
     461    DWORD Gpr2;
     462    DWORD Gpr3;
     463    DWORD Gpr4;
     464    DWORD Gpr5;
     465    DWORD Gpr6;
     466    DWORD Gpr7;
     467    DWORD Gpr8;
     468    DWORD Gpr9;
     469    DWORD Gpr10;
     470    DWORD Gpr11;
     471    DWORD Gpr12;
     472    DWORD Gpr13;
     473    DWORD Gpr14;
     474    DWORD Gpr15;
     475    DWORD Gpr16;
     476    DWORD Gpr17;
     477    DWORD Gpr18;
     478    DWORD Gpr19;
     479    DWORD Gpr20;
     480    DWORD Gpr21;
     481    DWORD Gpr22;
     482    DWORD Gpr23;
     483    DWORD Gpr24;
     484    DWORD Gpr25;
     485    DWORD Gpr26;
     486    DWORD Gpr27;
     487    DWORD Gpr28;
     488    DWORD Gpr29;
     489    DWORD Gpr30;
     490    DWORD Gpr31;
     491
     492    DWORD Cr;
     493    DWORD Xer;
     494
     495    /* These are selected by CONTEXT_CONTROL */
     496    DWORD Msr;
     497    DWORD Iar;
     498    DWORD Lr;
     499    DWORD Ctr;
     500
     501    DWORD ContextFlags;
     502    DWORD Fill[3];
     503
     504    /* These are selected by CONTEXT_DEBUG_REGISTERS */
     505    DWORD Dr0;
     506    DWORD Dr1;
     507    DWORD Dr2;
     508    DWORD Dr3;
     509    DWORD Dr4;
     510    DWORD Dr5;
     511    DWORD Dr6;
     512    DWORD Dr7;
     513} CONTEXT;
     514
     515typedef struct _STACK_FRAME_HEADER
     516{
     517    DWORD BackChain;
     518    DWORD GlueSaved1;
     519    DWORD GlueSaved2;
     520    DWORD Reserved1;
     521    DWORD Spare1;
     522    DWORD Spare2;
     523
     524    DWORD Parameter0;
     525    DWORD Parameter1;
     526    DWORD Parameter2;
     527    DWORD Parameter3;
     528    DWORD Parameter4;
     529    DWORD Parameter5;
     530    DWORD Parameter6;
     531    DWORD Parameter7;
     532} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
     533
     534#endif  /* __PPC__ */
     535
     536#ifdef __sparc__
     537
     538/*
     539 * FIXME: 
     540 *
     541 * There is no official CONTEXT structure defined for the SPARC
     542 * architecture, so I just made one up.
     543 *
     544 * This structure is valid only for 32-bit SPARC architectures,
     545 * not for 64-bit SPARC.
     546 *
     547 * Note that this structure contains only the 'top-level' registers;
     548 * the rest of the register window chain is not visible.
     549 *
     550 * The layout follows the Solaris 'prgregset_t' structure.
     551 *
     552 */
     553
     554#define CONTEXT_SPARC            0x10000000
     555
     556#define CONTEXT_CONTROL         (CONTEXT_SPARC | 0x00000001)
     557#define CONTEXT_FLOATING_POINT  (CONTEXT_SPARC | 0x00000002)
     558#define CONTEXT_INTEGER         (CONTEXT_SPARC | 0x00000004)
     559
     560#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
     561
     562typedef struct _CONTEXT
     563{
     564    DWORD ContextFlags;
     565
     566    /* These are selected by CONTEXT_INTEGER */
     567    DWORD g0;
     568    DWORD g1;
     569    DWORD g2;
     570    DWORD g3;
     571    DWORD g4;
     572    DWORD g5;
     573    DWORD g6;
     574    DWORD g7;
     575    DWORD o0;
     576    DWORD o1;
     577    DWORD o2;
     578    DWORD o3;
     579    DWORD o4;
     580    DWORD o5;
     581    DWORD o6;
     582    DWORD o7;
     583    DWORD l0;
     584    DWORD l1;
     585    DWORD l2;
     586    DWORD l3;
     587    DWORD l4;
     588    DWORD l5;
     589    DWORD l6;
     590    DWORD l7;
     591    DWORD i0;
     592    DWORD i1;
     593    DWORD i2;
     594    DWORD i3;
     595    DWORD i4;
     596    DWORD i5;
     597    DWORD i6;
     598    DWORD i7;
     599
     600    /* These are selected by CONTEXT_CONTROL */
     601    DWORD psr;
     602    DWORD pc;
     603    DWORD npc;
     604    DWORD y;
     605    DWORD wim;
     606    DWORD tbr;
     607
     608    /* FIXME: floating point registers missing */
     609
     610} CONTEXT;
     611
     612#endif
     613
     614#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
     615#error You need to define a CONTEXT for your CPU
     616#endif
     617
     618typedef CONTEXT *PCONTEXT;
    160619typedef HANDLE *PHANDLE;
    161620
    162621#ifdef __WINE__
    163622
    164 /* Macros for easier access to context registers */
     623/* Macros for easier access to i386 context registers */
    165624
    166625#define EAX_reg(context)     ((context)->Eax)
     
    200659#define DH_reg(context)      (*((BYTE*)&EDX_reg(context)+1))
    201660                           
    202 #define IP_reg(context)      (*(WORD*)&EIP_reg(context))
    203 #define SP_reg(context)      (*(WORD*)&ESP_reg(context))
    204                            
    205 #define FL_reg(context)      (*(WORD*)&EFL_reg(context))
    206 
    207661#define SET_CFLAG(context)   (EFL_reg(context) |= 0x0001)
    208662#define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001)
     
    213667#define V86BASE(context)     ((context)->Dr7) /* ugly */
    214668
     669
     670/* Macros to retrieve the current context */
     671
     672#ifdef __i386__
     673#define _DEFINE_REGS_ENTRYPOINT( name, fn, args ) \
     674  __asm__(".align 4\n\t"                         \
     675          ".globl " #name "\n\t"                 \
     676          ".type " #name ",@function\n\t"        \
     677          #name ":\n\t"                          \
     678          "call CALL32_Regs\n\t"                 \
     679          ".long " #fn "\n\t"                    \
     680          ".byte " #args ", " #args "\n\t");
     681
     682#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
     683  _DEFINE_REGS_ENTRYPOINT( name, fn, 0 )
     684#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
     685  _DEFINE_REGS_ENTRYPOINT( name, fn, 4 )
     686#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
     687  _DEFINE_REGS_ENTRYPOINT( name, fn, 8 )
     688#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
     689  _DEFINE_REGS_ENTRYPOINT( name, fn, 12 )
     690#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
     691  _DEFINE_REGS_ENTRYPOINT( name, fn, 16 )
     692
     693#endif  /* __i386__ */
     694
     695#ifdef __sparc__
     696/* FIXME: use getcontext() to retrieve full context */
     697#define _GET_CONTEXT \
     698    CONTEXT context;   \
     699    do { memset(&context, 0, sizeof(CONTEXT));            \
     700         context.ContextFlags = CONTEXT_CONTROL;          \
     701         context.pc = (DWORD)__builtin_return_address(0); \
     702       } while (0)
     703
     704#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
     705  void WINAPI name ( void ) \
     706  { _GET_CONTEXT; fn( &context ); }
     707#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
     708  void WINAPI name ( t1 a1 ) \
     709  { _GET_CONTEXT; fn( a1, &context ); }
     710#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
     711  void WINAPI name ( t1 a1, t2 a2 ) \
     712  { _GET_CONTEXT; fn( a1, a2, &context ); }
     713#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
     714  void WINAPI name ( t1 a1, t2 a2, t3 a3 ) \
     715  { _GET_CONTEXT; fn( a1, a2, a3, &context ); }
     716#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
     717  void WINAPI name ( t1 a1, t2 a2, t3 a3, t4 a4 ) \
     718  { _GET_CONTEXT; fn( a1, a2, a3, a4, &context ); }
     719
     720#endif /* __sparc__ */
     721
     722#ifndef DEFINE_REGS_ENTRYPOINT_0
     723#error You need to define DEFINE_REGS_ENTRYPOINT macros for your CPU
     724#endif
     725
     726#ifdef __i386__
     727# define GET_IP(context) ((LPVOID)(context)->Eip)
     728#endif
     729#ifdef __sparc__
     730# define GET_IP(context) ((LPVOID)(context)->pc)
     731#endif
     732 
     733#if !defined(GET_IP) && !defined(RC_INVOKED)
     734# error You must define GET_IP for this CPU
     735#endif
     736
    215737#endif  /* __WINE__ */
    216738
     
    219741 */
    220742 
     743#define STATUS_SUCCESS                   0x00000000
    221744#define STATUS_WAIT_0                    0x00000000
    222745#define STATUS_ABANDONED_WAIT_0          0x00000080
     
    224747#define STATUS_TIMEOUT                   0x00000102
    225748#define STATUS_PENDING                   0x00000103
     749#define STATUS_GUARD_PAGE_VIOLATION      0x80000001   
    226750#define STATUS_DATATYPE_MISALIGNMENT     0x80000002
    227751#define STATUS_BREAKPOINT                0x80000003
    228752#define STATUS_SINGLE_STEP               0x80000004
     753#define STATUS_BUFFER_OVERFLOW           0x80000005
     754#define STATUS_UNSUCCESSFUL              0xC0000001
    229755#define STATUS_ACCESS_VIOLATION          0xC0000005
    230756#define STATUS_IN_PAGE_ERROR             0xC0000006
     757#define STATUS_INVALID_PARAMETER         0xC000000D
    231758#define STATUS_NO_MEMORY                 0xC0000017
     759#define STATUS_CONFLICTING_ADDRESSES     0xC0000018
    232760#define STATUS_ILLEGAL_INSTRUCTION       0xC000001D
     761#define STATUS_BUFFER_TOO_SMALL          0xC0000023
    233762#define STATUS_NONCONTINUABLE_EXCEPTION  0xC0000025
    234763#define STATUS_INVALID_DISPOSITION       0xC0000026
     764#define STATUS_UNWIND                    0xC0000027
     765#define STATUS_BAD_STACK                 0xC0000028
     766#define STATUS_INVALID_UNWIND_TARGET     0xC0000029
     767#define STATUS_UNKNOWN_REVISION          0xC0000058
     768#define STATUS_INVALID_SECURITY_DESCR    0xC0000079
    235769#define STATUS_ARRAY_BOUNDS_EXCEEDED     0xC000008C
    236770#define STATUS_FLOAT_DENORMAL_OPERAND    0xC000008D
     
    244778#define STATUS_INTEGER_OVERFLOW          0xC0000095
    245779#define STATUS_PRIVILEGED_INSTRUCTION    0xC0000096
     780#define STATUS_INVALID_PARAMETER_2       0xC00000F0
    246781#define STATUS_STACK_OVERFLOW            0xC00000FD
    247782#define STATUS_CONTROL_C_EXIT            0xC000013A
    248 
    249 #define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
    250 #define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
    251 #define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
    252 #define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
    253 #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
    254 #define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
    255 #define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
    256 #define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
    257 #define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
    258 #define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
    259 #define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
    260 #define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
    261 #define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
    262 #define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
    263 #define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
    264 #define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
    265 #define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
    266 #define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
    267 #define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
    268 #define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
    269 #define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
    270 #define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
    271 #define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT
    272783
    273784#define MAXIMUM_WAIT_OBJECTS 64
     
    335846} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
    336847
     848
     849/*
     850 * The exception frame, used for registering exception handlers
     851 * Win32 cares only about this, but compilers generally emit
     852 * larger exception frames for their own use.
     853 */
     854
     855struct __EXCEPTION_FRAME;
     856
     857typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct __EXCEPTION_FRAME*,
     858                                    PCONTEXT,struct __EXCEPTION_FRAME **);
     859
     860typedef struct __EXCEPTION_FRAME
     861{
     862  struct __EXCEPTION_FRAME *Prev;
     863  PEXCEPTION_HANDLER       Handler;
     864} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
     865
    337866#include "poppack.h"
    338867
     
    341870 */
    342871
    343 typedef LONG (* CALLBACK PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
     872typedef LONG (CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
    344873typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
    345874
     
    347876LPTOP_LEVEL_EXCEPTION_FILTER
    348877WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
     878
     879/* status values for ContinueDebugEvent */
     880#define DBG_CONTINUE                0x00010002
     881#define DBG_TERMINATE_THREAD        0x40010003
     882#define DBG_TERMINATE_PROCESS       0x40010004
     883#define DBG_CONTROL_C               0x40010005
     884#define DBG_CONTROL_BREAK           0x40010008
     885#define DBG_EXCEPTION_NOT_HANDLED   0x80010001
     886
     887struct _TEB;
     888
     889#ifdef __WINE__
     890
     891#ifndef __WIN32OS2__
     892#if defined(__i386__)
     893static inline struct _TEB * WINE_UNUSED __get_teb(void)
     894{
     895    struct _TEB *teb;
     896    __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
     897    return teb;
     898}
     899#elif defined(HAVE__LWP_CREATE)
     900extern void *_lwp_getprivate(void);
     901static inline struct _TEB * WINE_UNUSED __get_teb(void)
     902{
     903    return (struct _TEB *)_lwp_getprivate();
     904}
     905#else
     906#error NtCurrentTeb() not defined for this architecture!
     907#endif
     908
     909#define NtCurrentTeb() __get_teb()
     910
     911#else /* __WINE__ */
     912extern struct _TEB * WINAPI NtCurrentTeb(void);
     913#endif
     914#endif //__WIN32OS2__
    349915
    350916/*
     
    383949#include "pshpack1.h"
    384950
     951typedef DWORD ACCESS_MASK, *PACCESS_MASK;
     952
     953typedef struct _GENERIC_MAPPING {
     954    ACCESS_MASK GenericRead;
     955    ACCESS_MASK GenericWrite;
     956    ACCESS_MASK GenericExecute;
     957    ACCESS_MASK GenericAll;
     958} GENERIC_MAPPING, *PGENERIC_MAPPING;
     959
     960#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
     961#define SID_IDENTIFIER_AUTHORITY_DEFINED
    385962typedef struct {
    386963    BYTE Value[6];
    387964} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
    388 
     965#endif /* !defined(SID_IDENTIFIER_AUTHORITY_DEFINED) */
     966
     967#ifndef SID_DEFINED
     968#define SID_DEFINED
    389969typedef struct _SID {
    390970    BYTE Revision;
     
    393973    DWORD SubAuthority[1];
    394974} SID,*PSID;
     975#endif /* !defined(SID_DEFINED) */
    395976
    396977#define SID_REVISION                    (1)     /* Current revision */
     
    4241005#define SE_SELF_RELATIVE        0x8000
    4251006
    426 typedef DWORD SECURITY_INFORMATION;
    427 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
     1007typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
     1008typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
    4281009
    4291010/* The security descriptor structure */
     
    4361017    PACL Sacl;
    4371018    PACL Dacl;
    438 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *LPSECURITY_DESCRIPTOR;
     1019} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
    4391020
    4401021#define SECURITY_DESCRIPTOR_MIN_LENGTH   (sizeof(SECURITY_DESCRIPTOR))
     
    4761057 */
    4771058
    478 typedef struct _LARGE_INTEGER
    479 {
    480     DWORD    LowPart;
    481     LONG     HighPart;
     1059typedef union _LARGE_INTEGER {
     1060    struct {
     1061        DWORD    LowPart;
     1062        LONG     HighPart;
     1063    } DUMMYSTRUCTNAME;
     1064    LONGLONG QuadPart;
    4821065} LARGE_INTEGER, *LPLARGE_INTEGER, *PLARGE_INTEGER;
    4831066
    484 typedef struct _ULARGE_INTEGER
    485 {
    486     DWORD    LowPart;
    487     DWORD    HighPart;
     1067typedef union _ULARGE_INTEGER {
     1068    struct {
     1069        DWORD    LowPart;
     1070        LONG     HighPart;
     1071    } DUMMYSTRUCTNAME;
     1072    LONGLONG QuadPart;
    4881073} ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER;
    4891074
     
    4981083  DWORD  Attributes;
    4991084} LUID_AND_ATTRIBUTES;
     1085
     1086/*
     1087 * PRIVILEGE_SET
     1088 */
     1089
     1090typedef struct _PRIVILEGE_SET {
     1091    DWORD PrivilegeCount;
     1092    DWORD Control;
     1093    LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
     1094} PRIVILEGE_SET, *PPRIVILEGE_SET;
    5001095
    5011096/*
     
    5601155  SecurityImpersonation,
    5611156  SecurityDelegation
    562 } SECURITY_IMPERSONATION_LEVEL;
     1157} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
    5631158
    5641159
     
    6891284#define GENERIC_EXECUTE            0x20000000
    6901285#define GENERIC_ALL                0x10000000
     1286
     1287#define MAXIMUM_ALLOWED            0x02000000
     1288#define ACCESS_SYSTEM_SECURITY     0x01000000
    6911289
    6921290#define EVENT_MODIFY_STATE         0x0002
     
    7911389#define SACL_SECURITY_INFORMATION   0x00000008
    7921390
    793 #define UNREFERENCED_PARAMETER(P)          (P)
    794 
    7951391#include "poppack.h"
    7961392
Note: See TracChangeset for help on using the changeset viewer.