diff --git a/dlls/atl/Makefile.in b/dlls/atl/Makefile.in index 350db903490..8af9e8bc7f1 100644 --- a/dlls/atl/Makefile.in +++ b/dlls/atl/Makefile.in @@ -1,6 +1,7 @@ MODULE = atl.dll IMPORTLIB = atl IMPORTS = uuid atl100 oleaut32 ole32 user32 +EXTRADEFS = -D_ATL_VER=_ATL_VER_30 C_SRCS = \ atl_main.c \ diff --git a/dlls/atl/atl_main.c b/dlls/atl/atl_main.c index f215151817c..eee6fee8ff5 100644 --- a/dlls/atl/atl_main.c +++ b/dlls/atl/atl_main.c @@ -478,5 +478,5 @@ void* WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM) */ DWORD WINAPI AtlGetVersion(void *pReserved) { - return 0x0300; + return _ATL_VER; } diff --git a/dlls/atl/tests/Makefile.in b/dlls/atl/tests/Makefile.in index b397c850c27..b57371310ca 100644 --- a/dlls/atl/tests/Makefile.in +++ b/dlls/atl/tests/Makefile.in @@ -1,5 +1,6 @@ TESTDLL = atl.dll IMPORTS = uuid atl oleaut32 ole32 rpcrt4 user32 gdi32 advapi32 +EXTRADEFS = -D_ATL_VER=_ATL_VER_30 C_SRCS = \ atl_ax.c \ diff --git a/dlls/atl100/Makefile.in b/dlls/atl100/Makefile.in index 65cae11f966..19cfcad052c 100644 --- a/dlls/atl100/Makefile.in +++ b/dlls/atl100/Makefile.in @@ -1,6 +1,7 @@ -MODULE = atl100.dll +MODULE = atl100.dll IMPORTLIB = atl100 -IMPORTS = uuid ole32 oleaut32 user32 gdi32 advapi32 +IMPORTS = uuid ole32 oleaut32 user32 gdi32 advapi32 +EXTRADEFS = -D_ATL_VER=_ATL_VER_100 C_SRCS = \ atl.c \ diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c index f1b76a5c4f1..88cdce481a1 100644 --- a/dlls/atl100/atl.c +++ b/dlls/atl100/atl.c @@ -231,5 +231,5 @@ HRESULT WINAPI AtlIPersistStreamInit_Save(LPSTREAM pStm, BOOL fClearDirty, */ DWORD WINAPI AtlGetVersion(void *pReserved) { - return 0x0a00; + return _ATL_VER; } diff --git a/dlls/atl80/Makefile.in b/dlls/atl80/Makefile.in index c310fdbddfc..70f416f9e7c 100644 --- a/dlls/atl80/Makefile.in +++ b/dlls/atl80/Makefile.in @@ -1,4 +1,6 @@ -MODULE = atl80.dll +MODULE = atl80.dll +EXTRADEFS = -D_ATL_VER=_ATL_VER_80 + C_SRCS = atl80.c diff --git a/dlls/atl80/atl80.c b/dlls/atl80/atl80.c index ec9a51577aa..b250d32ef2b 100644 --- a/dlls/atl80/atl80.c +++ b/dlls/atl80/atl80.c @@ -19,11 +19,12 @@ #include #include "windef.h" #include "winbase.h" +#include "atlbase.h" /*********************************************************************** * AtlGetVersion [atl80.@] */ DWORD WINAPI AtlGetVersion(void *pReserved) { - return 0x0800; + return _ATL_VER; } diff --git a/dlls/kernel32/except.c b/dlls/kernel32/except.c index 54be10550a5..49e5c258794 100644 --- a/dlls/kernel32/except.c +++ b/dlls/kernel32/except.c @@ -154,7 +154,7 @@ static int format_exception_msg( const EXCEPTION_POINTERS *ptr, char *buffer, in len = snprintf( buffer, size, "Unhandled PIC return in vm86 mode"); break; default: - len = snprintf( buffer, size, "Unhandled exception 0x%08x", rec->ExceptionCode); + len = snprintf( buffer, size, "Unhandled exception 0x%08x in thread %x", rec->ExceptionCode, GetCurrentThreadId()); break; } if ((len<0) || (len>=size)) diff --git a/include/atlbase.h b/include/atlbase.h index 4033f9a727e..794a09926df 100644 --- a/include/atlbase.h +++ b/include/atlbase.h @@ -23,6 +23,16 @@ #include +/* Wine extention: we (ab)use _ATL_VER to handle truct layout differences between ATL versions. */ +#define _ATL_VER_30 0x0300 +#define _ATL_VER_70 0x0700 +#define _ATL_VER_80 0x0800 +#define _ATL_VER_100 0x0a00 + +#ifndef _ATL_VER +#define _ATL_VER _ATL_VER_100 +#endif + typedef HRESULT (WINAPI _ATL_CREATORFUNC)(void* pv, REFIID riid, LPVOID* ppv); typedef HRESULT (WINAPI _ATL_CREATORARGFUNC)(void* pv, REFIID riid, LPVOID* ppv, DWORD dw); typedef HRESULT (WINAPI _ATL_MODULEFUNC)(DWORD dw); @@ -31,6 +41,8 @@ typedef LPCWSTR (WINAPI _ATL_DESCRIPTIONFUNCW)(void); typedef const struct _ATL_CATMAP_ENTRY* (_ATL_CATMAPFUNC)(void); typedef void (WINAPI _ATL_TERMFUNC)(DWORD dw); +typedef CRITICAL_SECTION CComCriticalSection; + typedef struct _ATL_OBJMAP_ENTRYA_V1_TAG { const CLSID* pclsid; @@ -148,6 +160,20 @@ typedef struct _ATL_MODULEW_TAG _ATL_TERMFUNC_ELEM* m_pTermFuncs; } _ATL_MODULEW; +typedef struct _ATL_MODULE70 +{ + UINT cbSize; + LONG m_nLockCnt; + _ATL_TERMFUNC_ELEM *m_pTermFuncs; + CComCriticalSection m_csStaticDataInitAndTypeInfo; +} _ATL_MODULE70; + +#if _ATL_VER >= _ATL_VER_70 +typedef _ATL_MODULE70 _ATL_MODULE; +#else +typedef _ATL_MODULEW _ATL_MODULE; +#endif + typedef struct _ATL_INTMAP_ENTRY_TAG { const IID* piid;