Release 970202
Sun Feb 2 12:31:03 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [files/drive.c]
Fixed SetCurrentDirectory() to also change the current drive.
* [win32/except.c] [tools/build.c]
Use Win32 register functions to implement exception handling.
Fixed UnhandledExceptionFilter.
Fri Jan 31 15:42:41 1997 David Faure <david.faure@ihamy.insa-lyon.fr>
* [windows/keyboard.c]
Added KEYBOARD_GenerateMsg to generate Caps Lock and NumLock events
Added calls to KEYBOARD_GenerateMsg when the key is pressed/released
or when the state has changed, out of wine.
Changed type 3-state 'ToggleKeyState' to boolean. The On/Off is given
by InputKeyStateTable.
Wed Jan 29 21:53:04 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [loader/*resource.c][if1632/thunk.c]
EnumResource* added.
* [loader/pe_resource.] [loader/resource.c]
SizeofResource32(), LoadAccelerators32() added.
* [misc/lstr.c]
FormatMessage %n added.
* [misc/crtdll.c][include/ctrdll.h][if1632/crtdll.spec]
_chdrive,_errno,_isctype added.
* [misc/cpu.c]
Replaced runtime_cpu by GetSystemInfo().
* [windows/hook.c][include/hook.h]
Fixed mapping of hooks to win32/unicode.
* [windows/keyboard.c] [windows/defwnd.c]
Updated to win32 standard.
ALT-<Menukey> fixed.
* [windows/queue.c]
GetWindowThreadProcessId() implemented.
Mon Jan 27 16:42:49 1997 John Harvey <john@division.co.uk>
* [graphics/metafiledrv/*] [graphics/x11drv/*]
[objects/bitmap.c] [objects/brush.c] [objects/font.c]
[objects/gdiobj.c] [objects/pen.c]
Moved SelectObject to graphics drivers. Printer support now works
in a few cases but is definitely not complete. Generic/text driver
works. The postscript driver works if true type fonts are disabled
from the control panel. To enable printer support add Printer=on
to the wine section of your wine.conf file. This causes write not
to work properly. I know that several other printer drivers do not
work.
* [tools/build.c]
Make .stabs not used for svr4 since it doesn't use GNU assembler.
* [misc/fontengine.c]
Make sure a printf doesn't crash the system.
Sat Jan 25 15:53:35 1997 Huw D M Davies <h.davies1@physics.oxford.ac.uk>
* [objects/metafile.c]
Fixed some problems with PlayMetaFileRecord().
* [objects/dc.c]
hClipRgn gets initialized in GetDCState().
Fri Jan 24 21:22:26 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
* [debugger/stabs.c]
Handle file names beginning with '/'.
Fri Jan 24 18:33:04 1997 Robert Pouliot <krynos@clic.net>
* [*/*]
Some more patches for OS/2 support.
Fri Jan 24 11:30:41 1997 Bang Jun-Young <bangjy@nownuri.nowcom.co.kr>
* [resources/sysres_Ko.rc]
Updated support for Korean (Ko) language.
diff --git a/include/bitmap.h b/include/bitmap.h
index b4a731e..d3896e2 100644
--- a/include/bitmap.h
+++ b/include/bitmap.h
@@ -7,11 +7,12 @@
#ifndef __WINE_BITMAP_H
#define __WINE_BITMAP_H
-#include <X11/extensions/XShm.h>
#include "gdi.h"
#include "xmalloc.h"
#ifdef PRELIMINARY_WING16_SUPPORT
+/* FIXME: this doesn't belong here */
+#include <X11/extensions/XShm.h>
typedef struct
{
@@ -52,8 +53,6 @@
extern INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer );
extern INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer );
extern BOOL32 BITMAP_DeleteObject( HBITMAP16 hbitmap, BITMAPOBJ * bitmap );
-extern HBITMAP16 BITMAP_SelectObject( DC * dc, HBITMAP16 hbitmap,
- BITMAPOBJ * bmp );
/* objects/dib.c */
extern int DIB_GetImageWidthBytes( int width, int depth );
diff --git a/include/brush.h b/include/brush.h
index f03ad8f..8c136d9 100644
--- a/include/brush.h
+++ b/include/brush.h
@@ -16,10 +16,10 @@
LOGBRUSH32 logbrush;
} BRUSHOBJ;
-extern BOOL32 BRUSH_Init(void);
+#define NB_HATCH_STYLES 6
+
extern INT16 BRUSH_GetObject16( BRUSHOBJ * brush, INT16 count, LPSTR buffer );
extern INT32 BRUSH_GetObject32( BRUSHOBJ * brush, INT32 count, LPSTR buffer );
extern BOOL32 BRUSH_DeleteObject( HBRUSH16 hbrush, BRUSHOBJ * brush );
-extern HBRUSH32 BRUSH_SelectObject(DC * dc, HBRUSH32 hbrush, BRUSHOBJ * brush);
#endif /* __WINE_BRUSH_H */
diff --git a/include/callback.h b/include/callback.h
index 2f603c2..9dcf165 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -77,6 +77,7 @@
extern LONG CallTo32_2( FARPROC32, DWORD, DWORD );
extern LONG CallTo32_3( FARPROC32, DWORD, DWORD, DWORD );
extern LONG CallTo32_4( FARPROC32, DWORD, DWORD, DWORD, DWORD );
+extern LONG CallTo32_5( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD );
#define CallTaskStart32( func ) \
CallTo32_0( func )
diff --git a/include/crtdll.h b/include/crtdll.h
index 916e9b4..c5d9f4e 100644
--- a/include/crtdll.h
+++ b/include/crtdll.h
@@ -10,4 +10,16 @@
#define CRTDLL_LC_MIN LC_ALL
#define CRTDLL_LC_MAX LC_TIME
+/* ctype defines */
+#define CRTDLL_UPPER 0x1
+#define CRTDLL_LOWER 0x2
+#define CRTDLL_DIGIT 0x4
+#define CRTDLL_SPACE 0x8
+#define CRTDLL_PUNCT 0x10
+#define CRTDLL_CONTROL 0x20
+#define CRTDLL_BLANK 0x40
+#define CRTDLL_HEX 0x80
+#define CRTDLL_LEADBYTE 0x8000
+#define CRTDLL_ALPHA (0x0100|CRTDLL_UPPER|CRTDLL_LOWER)
+
#endif
diff --git a/include/debugger.h b/include/debugger.h
index 91f5121..1a1f02a 100644
--- a/include/debugger.h
+++ b/include/debugger.h
@@ -309,7 +309,6 @@
extern void DEBUG_NukePath(void);
/* debugger/dbg.y */
-extern void DEBUG_EnterDebugger(void);
extern void wine_debug( int signal, SIGCONTEXT *regs );
#endif /* __WINE_DEBUGGER_H */
diff --git a/include/except.h b/include/except.h
index ff68c39..d55146b 100644
--- a/include/except.h
+++ b/include/except.h
@@ -7,129 +7,6 @@
#define __WINE_EXCEPT_H
#include "winnt.h"
-/*
- * exception codes
- */
-
-#define STATUS_WAIT_0 0x00000000
-#define STATUS_ABANDONED_WAIT_0 0x00000080
-#define STATUS_USER_APC 0x000000C0
-#define STATUS_TIMEOUT 0x00000102
-#define STATUS_PENDING 0x00000103
-#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
-#define STATUS_BREAKPOINT 0x80000003
-#define STATUS_SINGLE_STEP 0x80000004
-#define STATUS_ACCESS_VIOLATION 0xC0000005
-#define STATUS_IN_PAGE_ERROR 0xC0000006
-#define STATUS_NO_MEMORY 0xC0000017
-#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
-#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
-#define STATUS_INVALID_DISPOSITION 0xC0000026
-#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
-#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
-#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
-#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
-#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
-#define STATUS_FLOAT_OVERFLOW 0xC0000091
-#define STATUS_FLOAT_STACK_CHECK 0xC0000092
-#define STATUS_FLOAT_UNDERFLOW 0xC0000093
-#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
-#define STATUS_INTEGER_OVERFLOW 0xC0000095
-#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
-#define STATUS_STACK_OVERFLOW 0xC00000FD
-#define STATUS_CONTROL_C_EXIT 0xC000013A
-
-#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
-#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
-#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
-#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
-#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
-#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
-#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
-#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
-#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
-#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
-#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
-#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
-#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
-#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
-#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
-#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
-
-/*
- * return values from the actual exception handlers
- */
-
-#define ExceptionContinueExecution 0
-#define ExceptionContinueSearch 1
-#define ExceptionNestedException 2
-#define ExceptionCollidedUnwind 3
-
-/*
- * return values from filters in except() and from UnhandledExceptionFilter
- */
-
-#define EXCEPTION_EXECUTE_HANDLER 1
-#define EXCEPTION_CONTINUE_SEARCH 0
-#define EXCEPTION_CONTINUE_EXECUTION -1
-
-/*
- * from OS/2 2.0 exception handling
- * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD
- */
-
-#define EH_NONCONTINUABLE 0x01
-#define EH_UNWINDING 0x02
-#define EH_EXIT_UNWIND 0x04
-#define EH_STACK_INVALID 0x08
-#define EH_NESTED_CALL 0x10
-
-#define EXCEPTION_CONTINUABLE 0
-#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
-
-/*
- * The exception record used by Win32 to give additional information
- * about exception to exception handlers.
- */
-
-#define EXCEPTION_MAXIMUM_PARAMETERS 15
-
-typedef struct __EXCEPTION_RECORD
-{
- DWORD ExceptionCode;
- DWORD ExceptionFlags;
- struct __EXCEPTION_RECORD *ExceptionRecord;
-
- LPVOID ExceptionAddress;
- DWORD NumberParameters;
- DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-} EXCEPTION_RECORD;
-
-typedef struct __EXCEPTION_RECORD_MIN
-{
- DWORD ExceptionCode;
- DWORD ExceptionFlags;
- struct __EXCEPTION_RECORD *ExceptionRecord;
-
- LPVOID ExceptionAddress;
- DWORD NumberParameters;
- DWORD ExceptionInformation[0];
-} EXCEPTION_RECORD_MIN;
-
-typedef struct __EXCEPTION_RECORD *PEXCEPTION_RECORD;
-
-/*
- * The exception pointers structure passed to exception filters
- * in except() and the UnhandledExceptionFilter().
- */
-
-typedef struct __EXCEPTION_POINTERS
-{
- PEXCEPTION_RECORD ExceptionRecord;
- PCONTEXT ContextRecord;
-} EXCEPTION_POINTERS;
-
-typedef struct __EXCEPTION_POINTERS *PEXCEPTION_POINTERS;
/*
* the function pointer to a exception handler
@@ -144,16 +21,6 @@
LPVOID pdispatcher);
/*
- * function pointer to a UnhandledExceptionFilter();
- */
-
-typedef long (*__PTOP_EXCFILTER)
- (PEXCEPTION_POINTERS ExceptionInfo);
-
-typedef __PTOP_EXCFILTER PTOP_LEVER_EXCEPTION_FILTER;
-typedef __PTOP_EXCFILTER LPTOP_LEVEL_EXCEPTION_FILTER;
-
-/*
* The exception frame, used for registering exception handlers
* Win32 cares only about this, but compilers generally emit
* larger exception frames for their own use.
@@ -163,37 +30,16 @@
{
struct __EXCEPTION_FRAME *Prev;
PEXCEPTION_HANDLER Handler;
-} EXCEPTION_FRAME;
-
-typedef struct __EXCEPTION_FRAME *PEXCEPTION_FRAME;
-
-extern PEXCEPTION_FRAME TebExceptionFrame asm("%fs:0");
-
-#define EXC_GetFrame() TebExceptionFrame
-#define EXC_SetFrame(a) (TebExceptionFrame=(a))
+} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
/*
* Function definitions
*/
-void EXC_RaiseException(DWORD exccode, DWORD excflags,
- DWORD nargs, const LPDWORD pargs,
- PCONTEXT pcontext);
+void RaiseException(DWORD exccode, DWORD excflags,
+ DWORD nargs, const LPDWORD pargs,
+ PCONTEXT pcontext /* Wine additional parameter */ );
-void EXC_RtlUnwind( PEXCEPTION_FRAME pestframe,
- LPVOID unusedEIP,
- PEXCEPTION_RECORD pexcrec,
- DWORD contextEAX,
- PCONTEXT pcontext );
-
-DWORD EXC_CallUnhandledExceptionFilter( PEXCEPTION_RECORD precord,
- PCONTEXT pcontext);
-
-void EXC_Init(void);
-
-BOOL RaiseException(DWORD exccode, DWORD excflags,
- DWORD nargs, const LPDWORD pargs);
-
/*
* this undocumented function is called when an exception
* handler wants all the frames to be unwound. RtlUnwind
@@ -208,11 +54,10 @@
* context.
*/
-BOOL RtlUnwind( PEXCEPTION_FRAME pestframe,
+void RtlUnwind( PEXCEPTION_FRAME pestframe,
LPVOID unusedEIP,
PEXCEPTION_RECORD pexcrec,
- DWORD contextEAX );
-
-DWORD UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers);
+ DWORD contextEAX,
+ PCONTEXT pcontext /* Wine additional parameter */ );
#endif /* __WINE_EXCEPT_H */
diff --git a/include/font.h b/include/font.h
index 641d029..12456ad 100644
--- a/include/font.h
+++ b/include/font.h
@@ -20,6 +20,10 @@
#pragma pack(4)
+#define FONTCACHE 32 /* dynamic font cache size */
+#define MAX_FONTS 256
+extern LPLOGFONT16 lpLogFontList[MAX_FONTS+1];
+
/* may be switched... */
#define GGO_BITMAP 0x4F4D
#define GGO_NATIVE 0x4F50
@@ -43,6 +47,9 @@
extern BOOL32 FONT_Init( void );
extern INT16 FONT_GetObject16( FONTOBJ * font, INT16 count, LPSTR buffer );
extern INT32 FONT_GetObject32A( FONTOBJ * font, INT32 count, LPSTR buffer );
-extern HFONT16 FONT_SelectObject( DC * dc, HFONT16 hfont, FONTOBJ * font );
+extern int FONT_ParseFontParms(LPSTR lpFont, WORD wParmsNo, LPSTR lpRetStr, WORD wMaxSiz);
+extern void FONT_GetMetrics( LOGFONT16 * logfont, XFontStruct * xfont,
+ TEXTMETRIC16 * metrics );
+
#endif /* __WINE_FONT_H */
diff --git a/include/hook.h b/include/hook.h
index 21c0196..b9ea056 100644
--- a/include/hook.h
+++ b/include/hook.h
@@ -9,11 +9,12 @@
#include "windows.h"
-#define HOOK_WIN16 0x0
-#define HOOK_WIN32 0x1
-#define HOOK_UNICODE 0x2
+#define HOOK_WIN16 0x0
+#define HOOK_WIN32A 0x1
+#define HOOK_WIN32W 0x2
-#define HOOK_MAPTYPE (HOOK_WIN32 | HOOK_UNICODE)
+/* hook type mask */
+#define HOOK_MAPTYPE (3)
extern HOOKPROC16 HOOK_GetProc16( HHOOK hhook );
extern BOOL32 HOOK_IsHooked( INT16 id );
diff --git a/include/metafiledrv.h b/include/metafiledrv.h
index dfb4b92..a8e67a9 100644
--- a/include/metafiledrv.h
+++ b/include/metafiledrv.h
@@ -66,6 +66,7 @@
extern BOOL32 MFDRV_Polygon( struct tagDC *dc, LPPOINT32 pt, INT32 count );
extern BOOL32 MFDRV_PolyPolygon( struct tagDC *dc, LPPOINT32 pt, LPINT32 counts,
UINT32 polygons);
+extern HGDIOBJ32 MFDRV_SelectObject( DC *dc, HGDIOBJ32 handle );
extern BOOL32 MFDRV_ExtFloodFill( struct tagDC *dc, INT32 x, INT32 y,
COLORREF color, UINT32 fillType );
extern BOOL32 MFDRV_ExtTextOut( struct tagDC *dc, INT32 x, INT32 y,
diff --git a/include/miscemu.h b/include/miscemu.h
index bacc10e..04e523a 100644
--- a/include/miscemu.h
+++ b/include/miscemu.h
@@ -35,9 +35,6 @@
/* msdos/int1a.c */
extern DWORD INT1A_GetTicksSinceMidnight(void);
-/* misc/cpu.c */
-extern int runtime_cpu(void);
-
#define INT_BARF(context,num) \
fprintf( stderr, "int%x: unknown/not implemented parameters:\n" \
"int%x: AX %04x, BX %04x, CX %04x, DX %04x, " \
diff --git a/include/pe_image.h b/include/pe_image.h
index 1130ba8..12f6895 100644
--- a/include/pe_image.h
+++ b/include/pe_image.h
@@ -23,5 +23,15 @@
extern int PE_unloadImage(HMODULE32 hModule);
extern FARPROC32 PE_FindExportedFunction(struct pe_data *pe, LPCSTR funcName);
extern void my_wcstombs(char * result, u_short * source, int len);
+extern PE_EnumResourceTypes32A(HMODULE32,ENUMRESTYPEPROC32A,LONG);
+extern PE_EnumResourceTypes32W(HMODULE32,ENUMRESTYPEPROC32W,LONG);
+extern PE_EnumResourceNames32A(HMODULE32,LPCSTR,ENUMRESNAMEPROC32A,LONG);
+extern PE_EnumResourceNames32W(HMODULE32,LPCWSTR,ENUMRESNAMEPROC32W,LONG);
+extern PE_EnumResourceLanguages32A(HMODULE32,LPCSTR,LPCSTR,ENUMRESLANGPROC32A,LONG);
+extern PE_EnumResourceLanguages32W(HMODULE32,LPCWSTR,LPCWSTR,ENUMRESLANGPROC32W,LONG);
+extern HRSRC32 PE_FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD);
+extern DWORD PE_SizeofResource32(HINSTANCE32,HRSRC32);
+extern HGLOBAL32 PE_LoadResource32(HINSTANCE32,HRSRC32);
+extern void PE_InitializeDLLs(HMODULE16);
#endif /* __WINE_PE_IMAGE_H */
diff --git a/include/pen.h b/include/pen.h
index ab4f5b2..effed43 100644
--- a/include/pen.h
+++ b/include/pen.h
@@ -18,6 +18,5 @@
extern INT16 PEN_GetObject16( PENOBJ * pen, INT16 count, LPSTR buffer );
extern INT32 PEN_GetObject32( PENOBJ * pen, INT32 count, LPSTR buffer );
-extern HPEN32 PEN_SelectObject( DC * dc, HPEN32 hpen, PENOBJ * pen );
#endif /* __WINE_PEN_H */
diff --git a/include/process.h b/include/process.h
index 2c018e7..dc6b421 100644
--- a/include/process.h
+++ b/include/process.h
@@ -9,6 +9,7 @@
#include "windows.h"
#include "winbase.h"
+#include "winnt.h"
#include "handle32.h"
#include "task.h"
@@ -82,7 +83,7 @@
DWORD process_dword; /* 90 Unknown */
struct _PDB32 *group; /* 94 Process group */
void *exe_modref; /* 98 MODREF for the process EXE */
- void *top_exc_filter; /* 9c Top exception filter */
+ LPTOP_LEVEL_EXCEPTION_FILTER top_filter; /* 9c Top exception filter */
DWORD priority; /* a0 Priority level */
HANDLE32 heap_list; /* a4 Head of process heap list */
void *heap_handles; /* a8 Head of heap handles list */
diff --git a/include/selectors.h b/include/selectors.h
index f807403..673a2f5 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -40,9 +40,9 @@
#define WINE_CODE_SELECTOR 0x17
#endif /* svr4 || SCO_DS */
-#ifdef __EMX__
-#define WINE_DATA_SELECTOR 0x00 /* FIXME: This is wrong */
-#define WINE_CODE_SELECTOR 0x00
+#ifdef __EMX__ /* Is this always true? */
+#define WINE_DATA_SELECTOR 0x53
+#define WINE_CODE_SELECTOR 0x5b
#endif /* OS/2 */
#else /* WINELIB */
diff --git a/include/sigcontext.h b/include/sigcontext.h
index 157bd91..55c60c2 100644
--- a/include/sigcontext.h
+++ b/include/sigcontext.h
@@ -59,7 +59,40 @@
#endif /* svr4 || SCO_DS */
#ifdef __EMX__
-typedef struct CONTEXTRECORD SIGCONTEXT;
+typedef unsigned long ULONG;
+typedef unsigned short USHORT;
+typedef struct _fpreg /* Note 1 */
+{
+ ULONG losig;
+ ULONG hisig;
+ USHORT signexp;
+} FPREG;
+typedef FPREG *PFPREG;
+
+typedef struct _CONTEXT /* Note 1 */
+{
+ ULONG ContextFlags;
+ ULONG ctx_env[7];
+ FPREG ctx_stack[8];
+ ULONG ctx_SegGs;
+ ULONG ctx_SegFs;
+ ULONG ctx_SegEs;
+ ULONG ctx_SegDs;
+ ULONG ctx_RegEdi;
+ ULONG ctx_RegEsi;
+ ULONG ctx_RegEax;
+ ULONG ctx_RegEbx;
+ ULONG ctx_RegEcx;
+ ULONG ctx_RegEdx;
+ ULONG ctx_RegEbp;
+ ULONG ctx_RegEip;
+ ULONG ctx_SegCs;
+ ULONG ctx_EFlags;
+ ULONG ctx_RegEsp;
+ ULONG ctx_SegSs;
+} SIGCONTEXT;
+/*typedef CONTEXTRECORD *PCONTEXTRECORD;*/
+
#endif /* __EMX__ */
@@ -138,12 +171,12 @@
#define EDI_sig(context) ((context)->ctx_RegEdi)
#define EBP_sig(context) ((context)->ctx_RegEbp)
#define ESP_sig(context) ((context)->ctx_RegEsp)
-#define CS_sig(context) ((context)->ctx_SegCS)
-#define DS_sig(context) ((context)->ctx_SegDS)
-#define ES_sig(context) ((context)->ctx_SegES)
-#define SS_sig(context) ((context)->ctx_SegSS)
-#define FS_sig(context) ((context)->ctx_SegFS)
-#define GS_sig(context) ((context)->ctx_SegGS)
+#define CS_sig(context) ((context)->ctx_SegCs)
+#define DS_sig(context) ((context)->ctx_SegDs)
+#define ES_sig(context) ((context)->ctx_SegEs)
+#define SS_sig(context) ((context)->ctx_SegSs)
+#define FS_sig(context) ((context)->ctx_SegFs)
+#define GS_sig(context) ((context)->ctx_SegGs)
#define EFL_sig(context) ((context)->ctx_EFlags)
#define EIP_sig(context) ((context)->ctx_RegEip)
diff --git a/include/thread.h b/include/thread.h
index 11d9cbb..ec3fa4a 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -8,6 +8,7 @@
#define __WINE_THREAD_H
#include "process.h"
+#include "winnt.h"
/* Thread exception block */
typedef struct _TEB
@@ -35,7 +36,7 @@
K32OBJ header; /* 00 Kernel object header */
PDB32 *process; /* 08 Process owning this thread */
K32OBJ *event; /* 0c Thread event */
- TEB teb; /* 10 Thread information block */
+ TEB teb; /* 10 Thread exception block */
PDB32 *process2; /* 40 Same as offset 08 (?) */
DWORD flags; /* 44 Flags */
DWORD exit_code; /* 48 Termination status */
@@ -52,7 +53,7 @@
DWORD last_error; /* 70 Last error code */
void *debugger_CB; /* 74 Debugger context block */
DWORD debug_thread; /* 78 Thread debugging this one (?) */
- void *context; /* 7c Thread register context */
+ void *pcontext; /* 7c Thread register context */
DWORD unknown3[3]; /* 80 Unknown */
WORD current_ss; /* 8c Another 16-bit stack selector */
WORD pad2; /* 8e */
@@ -69,11 +70,14 @@
K32OBJ *win16_mutex; /* 1e8 Pointer to Win16 mutex */
K32OBJ *win32_mutex; /* 1ec Pointer to KERNEL32 mutex */
K32OBJ *crit_section2; /* 1f0 Another critical section */
- DWORD unknown6[2]; /* 1f4 Unknown */
+ DWORD unknown6[3]; /* 1f4 Unknown */
+ /* The following are Wine-specific fields */
+ CONTEXT context; /* 200 Thread context */
} THDB;
-extern THDB *THREAD_Create( PDB32 *pdb, DWORD stack_size );
+extern THDB *THREAD_Create( PDB32 *pdb, DWORD stack_size,
+ LPTHREAD_START_ROUTINE start_addr );
extern void THREAD_Destroy( K32OBJ *ptr );
extern THDB *pCurrentThread;
diff --git a/include/winbase.h b/include/winbase.h
index e277353..919124f 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -38,12 +38,6 @@
#define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES
#define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK
-struct _EXCEPTION_POINTERS;
-
-typedef LONG (TOP_LEVEL_EXCEPTION_FILTER)(struct _EXCEPTION_POINTERS *);
-
-TOP_LEVEL_EXCEPTION_FILTER *SetUnhandledExceptionFilter(TOP_LEVEL_EXCEPTION_FILTER *func);
-
/*WINAPI int SetErrorMode(int);*/
#define STATUS_SUCCESS 0x00000000
diff --git a/include/windows.h b/include/windows.h
index 4d71ced..338bf13 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1825,6 +1825,12 @@
#define OF_EXIST 0x4000
#define OF_REOPEN 0x8000
+/* SetErrorMode values */
+#define SEM_FAILCRITICALERRORS 0x0001
+#define SEM_NOGPFAULTERRORBOX 0x0002
+#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
+#define SEM_NOOPENFILEERRORBOX 0x8000
+
/* GetTempFileName() Flags */
#define TF_FORCEDRIVE 0x80
@@ -3667,7 +3673,11 @@
#define VK_X 0x58
#define VK_Y 0x59
#define VK_Z 0x5A
-/* 0x5B-0x5F Undefined */
+
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+/* 0x5E-0x5F Unassigned */
#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
@@ -3711,16 +3721,37 @@
/* 0x88-0x8F Unassigned */
#define VK_NUMLOCK 0x90
#define VK_SCROLL 0x91
-/* 0x92-0xB9 Unassigned */
+/* 0x92-0x9F Unassigned */
+/*
+ * differencing between right and left shift/control/alt key.
+ * Used only by GetAsyncKeyState() and GetKeyState().
+ */
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+/* 0xA6-0xB9 Unassigned */
/* 0xBA-0xC0 OEM specific */
/* 0xC1-0xDA Unassigned */
/* 0xDB-0xE4 OEM specific */
-/* 0xE5 Unassigned */
+
+#define VK_PROCESSKEY 0xE5
+
/* 0xE6 OEM specific */
/* 0xE7-0xE8 Unassigned */
/* 0xE9-0xF5 OEM specific */
-/* 0xF6-0xFE Unassigned */
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
#define LMEM_FIXED 0
#define LMEM_MOVEABLE 0x0002
@@ -4597,6 +4628,21 @@
#define PR_JOBSTATUS 0x0000
+typedef BOOL32 (*ENUMRESTYPEPROC32A)(HMODULE32 hModule, LPSTR type,LONG lParam);
+typedef BOOL32 (*ENUMRESTYPEPROC32W)(HMODULE32 hModule, LPWSTR type,LONG lParam);
+typedef BOOL32 (*ENUMRESNAMEPROC32A)(HMODULE32 hModule, LPCSTR type,
+ LPSTR name,LONG lParam);
+typedef BOOL32 (*ENUMRESNAMEPROC32W)(HMODULE32 hModule, LPCWSTR type,
+ LPWSTR name,LONG lParam);
+typedef BOOL32 (*ENUMRESLANGPROC32A)(HMODULE32 hModule, LPCSTR type,
+ LPCSTR name,WORD lang,LONG lParam);
+typedef BOOL32 (*ENUMRESLANGPROC32W)(HMODULE32 hModule, LPCWSTR type,
+ LPCWSTR name,WORD lang,LONG lParam);
+
+DECL_WINELIB_TYPE_AW(ENUMRESTYPEPROC);
+DECL_WINELIB_TYPE_AW(ENUMRESNAMEPROC);
+DECL_WINELIB_TYPE_AW(ENUMRESLANGPROC);
+
#pragma pack(4)
/* Declarations for functions that exist only in Win16 */
@@ -4637,6 +4683,7 @@
HWND16 GetDesktopHwnd(void);
HMODULE16 GetExePtr(HANDLE16);
WORD GetExeVersion(void);
+INT16 GetKbCodePage(VOID);
INT16 GetInstanceData(HINSTANCE16,WORD,INT16);
BOOL16 GetModuleName(HINSTANCE16,LPSTR,INT16);
FARPROC16 GetMouseEventProc(void);
@@ -4650,6 +4697,7 @@
DWORD GetViewportOrg(HDC16);
DWORD GetWindowExt(HDC16);
DWORD GetWindowOrg(HDC16);
+DWORD GetWinFlags(void);
DWORD GlobalDOSAlloc(DWORD);
WORD GlobalDOSFree(WORD);
void GlobalFreeAll(HGLOBAL16);
@@ -4720,6 +4768,7 @@
BOOL32 CopyFile32A(LPCSTR,LPCSTR,BOOL32);
BOOL32 CopyFile32W(LPCWSTR,LPCWSTR,BOOL32);
#define CopyFile WINELIB_NAME_AW(CopyFile)
+INT32 CompareFileTime(LPFILETIME,LPFILETIME);
HFILE32 CreateFile32A(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32);
HFILE32 CreateFile32W(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32);
#define CreateFile WINELIB_NAME_AW(CreateFile)
@@ -4730,6 +4779,15 @@
INT32 EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM);
INT32 EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
+BOOL32 EnumResourceLanguages32A(HMODULE32,LPCSTR,LPCSTR,ENUMRESLANGPROC32A,LONG);
+BOOL32 EnumResourceLanguages32W(HMODULE32,LPCWSTR,LPCWSTR,ENUMRESLANGPROC32W,LONG);
+#define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
+BOOL32 EnumResourceNames32A(HMODULE32,LPCSTR,ENUMRESNAMEPROC32A,LONG);
+BOOL32 EnumResourceNames32W(HMODULE32,LPCWSTR,ENUMRESNAMEPROC32W,LONG);
+#define EnumResourceNames WINELIB_NAME_AW(EnumResourceNames)
+BOOL32 EnumResourceTypes32A(HMODULE32,ENUMRESTYPEPROC32A,LONG);
+BOOL32 EnumResourceTypes32W(HMODULE32,ENUMRESTYPEPROC32W,LONG);
+#define EnumResourceTypes WINELIB_NAME_AW(EnumResourceTypes)
BOOL32 EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A,DWORD);
BOOL32 EnumSystemCodePages32W(CODEPAGE_ENUMPROC32W,DWORD);
#define EnumSystemCodePages WINELIB_NAME_AW(EnumSystemCodePages)
@@ -4787,6 +4845,7 @@
VOID GetSystemTime(LPSYSTEMTIME);
LCID GetThreadLocale();
INT32 GetThreadPriority(HANDLE32);
+DWORD GetWindowThreadProcessId(HWND32,LPDWORD);
VOID GlobalMemoryStatus(LPMEMORYSTATUS);
LPVOID HeapAlloc(HANDLE32,DWORD,DWORD);
DWORD HeapCompact(HANDLE32,DWORD);
@@ -4803,6 +4862,9 @@
BOOL32 IsValidLocale(DWORD,DWORD);
BOOL32 LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
LPVOID MapViewOfFileEx(HANDLE32,DWORD,DWORD,DWORD,DWORD,DWORD);
+INT32 MessageBoxEx32A(HWND32,LPCSTR,LPCSTR,UINT32,WORD);
+INT32 MessageBoxEx32W(HWND32,LPCWSTR,LPCWSTR,UINT32,WORD);
+#define MessageBoxEx WINELIB_NAME_AW(MessageBoxEx)
BOOL32 MoveFile32A(LPCSTR,LPCSTR);
BOOL32 MoveFile32W(LPCWSTR,LPCWSTR);
#define MoveFile WINELIB_NAME_AW(MoveFile)
@@ -4883,6 +4945,7 @@
LONG GetBitmapBits(HBITMAP32,LONG,LPVOID);
WORD GetClassWord(HWND32,INT32);
DWORD GetDialogBaseUnits(void);
+VOID GetKeyboardState(LPBYTE);
DWORD GetLastError(void);
DWORD GetMenuCheckMarkDimensions(void);
COLORREF GetSysColor(INT32);
@@ -4891,7 +4954,8 @@
WORD GetWindowWord(HWND32,INT32);
BOOL16 HideCaret(HWND32);
BOOL16 IsWindow(HWND32);
-void LZDone(void);
+VOID LZDone(void);
+DWORD OemKeyScan(WORD);
UINT16 RealizePalette(HDC32);
DWORD RegCloseKey(HKEY);
DWORD RegFlushKey(HKEY);
@@ -4901,6 +4965,7 @@
BOOL16 SetCaretBlinkTime(UINT32);
BOOL16 SetCaretPos(INT32,INT32);
WORD SetClassWord(HWND32,INT32,WORD);
+VOID SetKeyboardState(LPBYTE);
VOID SetLastError(DWORD);
VOID SetRectRgn(HRGN32,INT32,INT32,INT32,INT32);
COLORREF SetTextColor(HDC32,COLORREF);
@@ -5419,6 +5484,9 @@
HWND16 GetActiveWindow16(void);
HWND32 GetActiveWindow32(void);
#define GetActiveWindow WINELIB_NAME(GetActiveWindow)
+WORD GetAsyncKeyState16(INT16);
+WORD GetAsyncKeyState32(INT32);
+#define GetAsyncKeyState WINELIB_NAME(GetAsyncKeyState)
BOOL16 GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
BOOL32 GetBitmapDimensionEx32(HBITMAP32,LPSIZE32);
#define GetBitmapDimensionEx WINELIB_NAME(GetBitmapDimensionEx)
@@ -5544,10 +5612,16 @@
UINT16 GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16);
UINT32 GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32);
#define GetInternalWindowPos WINELIB_NAME(GetInternalWindowPos)
+INT16 GetKeyboardType16(INT16);
+INT32 GetKeyboardType32(INT32);
+#define GetKeyboardType WINELIB_NAME(GetKeyboardType)
INT16 GetKeyNameText16(LONG,LPSTR,INT16);
INT32 GetKeyNameText32A(LONG,LPSTR,INT32);
INT32 GetKeyNameText32W(LONG,LPWSTR,INT32);
#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
+WORD GetKeyState16(INT16);
+WORD GetKeyState32(INT32);
+#define GetKeyState WINELIB_NAME(GetKeyState)
UINT32 GetLogicalDriveStrings32A(UINT32,LPSTR);
UINT32 GetLogicalDriveStrings32W(UINT32,LPWSTR);
#define GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings)
@@ -5979,6 +6053,10 @@
LONG LZSeek16(HFILE16,LONG,INT16);
LONG LZSeek32(HFILE32,LONG,INT32);
#define LZSeek WINELIB_NAME(LZSeek)
+UINT16 MapVirtualKey16(UINT16,UINT16);
+UINT32 MapVirtualKey32A(UINT32,UINT32);
+UINT32 MapVirtualKey32W(UINT32,UINT32);
+#define MapVirtualKey WINELIB_NAME_AW(MapVirtualKey)
FARPROC16 MakeProcInstance16(FARPROC16,HANDLE16);
#define MakeProcInstance32(proc,inst) (proc)
#define MakeProcInstance WINELIB_NAME(MakeProcInstance)
@@ -6227,6 +6305,10 @@
INT16 SetCommState16(LPDCB16);
BOOL32 SetCommState32(INT32,LPDCB32);
#define SetCommState WINELIB_NAME(SetCommState)
+BOOL16 SetCurrentDirectory16(LPCSTR);
+BOOL32 SetCurrentDirectory32A(LPCSTR);
+BOOL32 SetCurrentDirectory32W(LPCWSTR);
+#define SetCurrentDirectory WINELIB_NAME_AW(SetCurrentDirectory)
BOOL16 SetDeskWallPaper16(LPCSTR);
BOOL32 SetDeskWallPaper32(LPCSTR);
#define SetDeskWallPaper WINELIB_NAME(SetDeskWallPaper)
@@ -6245,6 +6327,9 @@
void SetDlgItemText32A(HWND32,INT32,LPCSTR);
void SetDlgItemText32W(HWND32,INT32,LPCWSTR);
#define SetDlgItemText WINELIB_NAME_AW(SetDlgItemText)
+UINT16 SetErrorMode16(UINT16);
+UINT32 SetErrorMode32(UINT32);
+#define SetErrorMode WINELIB_NAME(SetErrorMode)
BOOL16 SetFileAttributes16(LPCSTR,DWORD);
BOOL32 SetFileAttributes32A(LPCSTR,DWORD);
BOOL32 SetFileAttributes32W(LPCWSTR,DWORD);
@@ -6366,6 +6451,9 @@
BOOL16 ShowWindow16(HWND16,INT16);
BOOL32 ShowWindow32(HWND32,INT32);
#define ShowWindow WINELIB_NAME(ShowWindow)
+DWORD SizeofResource16(HMODULE16,HRSRC16);
+DWORD SizeofResource32(HMODULE32,HRSRC32);
+#define SizeofResource WINELIB_NAME(SizeofResource)
BOOL16 StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,
INT16,INT16,DWORD);
BOOL32 StretchBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,
@@ -6387,9 +6475,15 @@
BOOL32 TextOut32A(HDC32,INT32,INT32,LPCSTR,INT32);
BOOL32 TextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32);
#define TextOut WINELIB_NAME_AW(TextOut)
+INT16 ToAscii16(UINT16,UINT16,LPBYTE,LPVOID,UINT16);
+INT32 ToAscii32(UINT32,UINT32,LPBYTE,LPWORD,UINT32);
+#define ToAscii WINELIB_NAME(ToAscii)
BOOL16 TrackPopupMenu16(HMENU16,UINT16,INT16,INT16,INT16,HWND16,const RECT16*);
BOOL32 TrackPopupMenu32(HMENU32,UINT32,INT32,INT32,INT32,HWND32,const RECT32*);
#define TrackPopupMenu WINELIB_NAME(TrackPopupMenu)
+INT16 TranslateAccelerator16(HWND16,HACCEL16,LPMSG16);
+INT32 TranslateAccelerator32(HWND32,HACCEL32,LPMSG32);
+#define TranslateAccelerator WINELIB_NAME(TranslateAccelerator)
INT16 TransmitCommChar16(INT16,CHAR);
BOOL32 TransmitCommChar32(INT32,CHAR);
#define TransmitCommChar WINELIB_NAME(TransmitCommChar)
@@ -6434,6 +6528,10 @@
DWORD VerQueryValue32A(LPVOID,LPCSTR,LPVOID*,UINT32*);
DWORD VerQueryValue32W(LPVOID,LPCWSTR,LPVOID*,UINT32*);
#define VerQueryValue WINELIB_NAME_AW(VerQueryValue)
+WORD VkKeyScan16(CHAR);
+WORD VkKeyScan32A(CHAR);
+WORD VkKeyScan32W(WCHAR);
+#define VkKeyScan WINELIB_NAME_AW(VkKeyScan)
HWND16 WindowFromDC16(HDC16);
HWND32 WindowFromDC32(HDC32);
#define WindowFromDC WINELIB_NAME(WindowFromDC)
@@ -6529,6 +6627,7 @@
INT32 LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32);
INT32 LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32);
SEGPTR WIN16_GlobalLock16(HGLOBAL16);
+SEGPTR WIN16_LockResource(HGLOBAL16);
INT32 lstrncmp32A(LPCSTR,LPCSTR,INT32);
INT32 lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
INT32 lstrncmpi32A(LPCSTR,LPCSTR,INT32);
@@ -6604,7 +6703,6 @@
UINT GDIRealizePalette(HDC16);
HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD);
DWORD GetAspectRatioFilter(HDC16);
-int GetAsyncKeyState(int);
WORD GetAtomName(ATOM,LPSTR,short);
HANDLE16 GetClipboardData(WORD);
int GetClipboardFormatName(WORD,LPSTR,short);
@@ -6622,9 +6720,6 @@
BOOL GetInputState(void);
int GetKBCodePage(void);
int GetKerningPairs(HDC16,int,LPKERNINGPAIR16);
-INT GetKeyState(INT);
-void GetKeyboardState(BYTE*);
-int GetKeyboardType(int);
HWND GetLastActivePopup(HWND);
BOOL GetMessage(SEGPTR,HWND,UINT,UINT);
LONG GetMessageExtraInfo(void);
@@ -6649,7 +6744,6 @@
LPINT16 GetThresholdEvent(void);
int GetThresholdStatus(void);
BOOL GetWinDebugInfo(LPWINDEBUGINFO,UINT);
-LONG GetWinFlags(void);
ATOM GlobalDeleteAtom(ATOM);
void GlobalFix(HGLOBAL16);
BOOL16 GlobalUnWire(HGLOBAL16);
@@ -6663,9 +6757,7 @@
BOOL IsValidMetaFile(HMETAFILE16);
HINSTANCE16 LoadModule(LPCSTR,LPVOID);
FARPROC16 LocalNotify(FARPROC16);
-WORD MapVirtualKey(WORD,WORD);
void MessageBeep(WORD);
-DWORD OemKeyScan(WORD);
BOOL OpenClipboard(HWND);
BOOL OpenIcon(HWND);
int OpenSound(void);
@@ -6692,14 +6784,11 @@
HWND SetClipboardViewer(HWND);
void SetConvertHook(BOOL);
BOOL SetConvertParams(int,int);
-BOOL32 SetCurrentDirectory(LPCSTR);
HCURSOR16 SetCursor(HCURSOR16);
void SetCursorPos(short,short);
void SetDoubleClickTime(WORD);
int SetEnvironment(LPCSTR,LPCSTR,WORD);
-UINT SetErrorMode(UINT);
WORD SetHookFlags(HDC16,WORD);
-void SetKeyboardState(BYTE*);
DWORD SetMapperFlags(HDC16,DWORD);
BOOL SetMessageQueue(int);
HMETAFILE16 SetMetaFileBits(HGLOBAL16);
@@ -6719,20 +6808,15 @@
HINSTANCE16 ShellExecute(HWND,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT);
int ShowCursor(BOOL);
void ShowOwnedPopups(HWND,BOOL);
-DWORD SizeofResource(HMODULE16,HRSRC16);
int StartSound(void);
int StopSound(void);
BOOL SwapMouseButton(BOOL);
void SwapRecording(WORD);
int SyncAllVoices(void);
LONG TabbedTextOut(HDC16,short,short,LPSTR,short,short,LPINT16,short);
-int ToAscii(WORD,WORD,LPSTR,LPVOID,WORD);
-INT16 TranslateAccelerator(HWND,HACCEL16,LPMSG16);
BOOL TranslateMDISysAccel(HWND,LPMSG16);
BOOL TranslateMessage(LPMSG16);
int UpdateColors(HDC16);
-WORD VkKeyScan(WORD);
-SEGPTR WIN16_LockResource(HGLOBAL16);
void WaitMessage(void);
int WaitSoundState(int);
diff --git a/include/winnt.h b/include/winnt.h
index 55a96a8..4bd7387 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -139,6 +139,126 @@
#endif /* __WINE__ */
+/*
+ * Exception codes
+ */
+
+#define STATUS_WAIT_0 0x00000000
+#define STATUS_ABANDONED_WAIT_0 0x00000080
+#define STATUS_USER_APC 0x000000C0
+#define STATUS_TIMEOUT 0x00000102
+#define STATUS_PENDING 0x00000103
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_ACCESS_VIOLATION 0xC0000005
+#define STATUS_IN_PAGE_ERROR 0xC0000006
+#define STATUS_NO_MEMORY 0xC0000017
+#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
+#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
+#define STATUS_INVALID_DISPOSITION 0xC0000026
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
+#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
+#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
+#define STATUS_FLOAT_OVERFLOW 0xC0000091
+#define STATUS_FLOAT_STACK_CHECK 0xC0000092
+#define STATUS_FLOAT_UNDERFLOW 0xC0000093
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
+#define STATUS_INTEGER_OVERFLOW 0xC0000095
+#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
+#define STATUS_STACK_OVERFLOW 0xC00000FD
+#define STATUS_CONTROL_C_EXIT 0xC000013A
+
+#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
+#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
+#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
+#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
+#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
+#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
+#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
+#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
+#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
+#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
+#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
+#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
+#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
+#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
+#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
+#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
+
+/*
+ * Return values from the actual exception handlers
+ */
+
+#define ExceptionContinueExecution 0
+#define ExceptionContinueSearch 1
+#define ExceptionNestedException 2
+#define ExceptionCollidedUnwind 3
+
+/*
+ * Return values from filters in except() and from UnhandledExceptionFilter
+ */
+
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define EXCEPTION_CONTINUE_EXECUTION -1
+
+/*
+ * From OS/2 2.0 exception handling
+ * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD
+ */
+
+#define EH_NONCONTINUABLE 0x01
+#define EH_UNWINDING 0x02
+#define EH_EXIT_UNWIND 0x04
+#define EH_STACK_INVALID 0x08
+#define EH_NESTED_CALL 0x10
+
+#define EXCEPTION_CONTINUABLE 0
+#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
+
+/*
+ * The exception record used by Win32 to give additional information
+ * about exception to exception handlers.
+ */
+
+#define EXCEPTION_MAXIMUM_PARAMETERS 15
+
+typedef struct __EXCEPTION_RECORD
+{
+ DWORD ExceptionCode;
+ DWORD ExceptionFlags;
+ struct __EXCEPTION_RECORD *ExceptionRecord;
+
+ LPVOID ExceptionAddress;
+ DWORD NumberParameters;
+ DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
+
+/*
+ * The exception pointers structure passed to exception filters
+ * in except() and the UnhandledExceptionFilter().
+ */
+
+typedef struct _EXCEPTION_POINTERS
+{
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+
+/*
+ * function pointer to a exception filter
+ */
+
+typedef LONG (*PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+
+DWORD UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers );
+LPTOP_LEVEL_EXCEPTION_FILTER
+SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
+
/* Language IDs */
#define LANG_NEUTRAL 0x00
diff --git a/include/x11drv.h b/include/x11drv.h
index 127441d..a08831e 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -90,6 +90,8 @@
extern BOOL32 X11DRV_PolyPolygon( struct tagDC *dc, LPPOINT32 pt,
LPINT32 counts, UINT32 polygons);
+extern HGDIOBJ32 X11DRV_SelectObject( struct tagDC *dc, HGDIOBJ32 handle );
+
extern BOOL32 X11DRV_ExtFloodFill( struct tagDC *dc, INT32 x, INT32 y,
COLORREF color, UINT32 fillType );
extern BOOL32 X11DRV_ExtTextOut( struct tagDC *dc, INT32 x, INT32 y,
@@ -97,4 +99,10 @@
LPCSTR str, UINT32 count, const INT32 *lpDx );
+/* X11 driver internal functions */
+
+extern BOOL32 X11DRV_BITMAP_Init(void);
+extern BOOL32 X11DRV_BRUSH_Init(void);
+extern BOOL32 X11DRV_FONT_Init(void);
+
#endif /* __WINE_X11DRV_H */