| /* | |
| * Win16 built-in DLLs definitions | |
| * | |
| * Copyright 1999 Ulrich Weigand | |
| */ | |
| #ifndef __WINE_BUILTIN16_H | |
| #define __WINE_BUILTIN16_H | |
| #include "windef.h" | |
| #include "ldt.h" | |
| struct _CONTEXT86; | |
| struct _STACK16FRAME; | |
| extern void RELAY_Unimplemented16(void); | |
| extern WORD CallFrom16Word(); | |
| extern LONG CallFrom16Long(); | |
| extern void CallFrom16Register(); | |
| extern void CallFrom16Thunk(); | |
| extern WORD CALLBACK CallTo16Word( FARPROC16 target, INT nArgs ); | |
| extern LONG CALLBACK CallTo16Long( FARPROC16 target, INT nArgs ); | |
| extern LONG CALLBACK CallTo16RegisterShort( const struct _CONTEXT86 *context, INT nArgs ); | |
| extern LONG CALLBACK CallTo16RegisterLong ( const struct _CONTEXT86 *context, INT nArgs ); | |
| #include "pshpack1.h" | |
| typedef struct | |
| { | |
| WORD pushw_bp; /* pushw %bp */ | |
| BYTE pushl; /* pushl $target */ | |
| void (*target)(); | |
| WORD call; /* call CALLFROM16 */ | |
| WORD callfrom16; | |
| } ENTRYPOINT16; | |
| #define EP(target, offset) { 0x5566, 0x68, (target), 0xe866, (WORD) (offset) } | |
| typedef struct | |
| { | |
| BYTE pushl; /* pushl $relay */ | |
| DWORD relay; | |
| BYTE lcall; /* lcall __FLATCS__:glue */ | |
| DWORD glue; | |
| WORD flatcs; | |
| BYTE prefix; /* lret $nArgs */ | |
| BYTE lret; | |
| WORD nArgs; | |
| LPCSTR profile; /* profile string */ | |
| } CALLFROM16; | |
| #define CF16_WORD( relay, nArgs, profile ) \ | |
| { 0x68, (DWORD)(relay), \ | |
| 0x9a, (DWORD)CallFrom16Word, __FLATCS__, \ | |
| 0x66, (nArgs)? 0xca : 0xcb, (nArgs)? (nArgs) : 0x9090, \ | |
| (profile) } | |
| #define CF16_LONG( relay, nArgs, profile ) \ | |
| { 0x68, (DWORD)(relay), \ | |
| 0x9a, (DWORD)CallFrom16Long, __FLATCS__, \ | |
| 0x66, (nArgs)? 0xca : 0xcb, (nArgs)? (nArgs) : 0x9090, \ | |
| (profile) } | |
| #define CF16_REGS( relay, nArgs, profile ) \ | |
| { 0x68, (DWORD)(relay), \ | |
| 0x9a, (DWORD)CallFrom16Register, __FLATCS__, \ | |
| 0x66, (nArgs)? 0xca : 0xcb, (nArgs)? (nArgs) : 0x9090, \ | |
| (profile) } | |
| #include "poppack.h" | |
| typedef struct | |
| { | |
| const char *name; /* DLL name */ | |
| void *module_start; /* 32-bit address of the module data */ | |
| int module_size; /* Size of the module data */ | |
| const BYTE *code_start; /* 32-bit address of DLL code */ | |
| const BYTE *data_start; /* 32-bit address of DLL data */ | |
| const char *owner; /* 32-bit dll that contains this dll */ | |
| const void *rsrc; /* resources data */ | |
| } BUILTIN16_DESCRIPTOR; | |
| extern HMODULE16 BUILTIN_LoadModule( LPCSTR name ); | |
| extern LPCSTR BUILTIN_GetEntryPoint16( struct _STACK16FRAME *frame, LPSTR name, WORD *pOrd ); | |
| extern void BUILTIN_RegisterDLL( const BUILTIN16_DESCRIPTOR *descr ); | |
| #endif /* __WINE_BUILTIN16_H */ |