CBrowseUIModule gModule;
CAtlWinModule gWinModule;
+void *operator new (size_t, void *buf)
+{
+ return buf;
+}
+
/*************************************************************************
* BROWSEUI DllMain
*/
-BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
+STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
{
TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
+
+ /* HACK - the global constructors don't run, so I placement new them here */
+ new (&gModule) CBrowseUIModule;
+ new (&gWinModule) CAtlWinModule;
+ new (&_AtlBaseModule) CAtlBaseModule;
+
if (dwReason == DLL_PROCESS_ATTACH)
{
gModule.Init(ObjectMap, hInstance, NULL);
#define offsetofclass(base, derived) (reinterpret_cast<DWORD_PTR>(static_cast<base *>(reinterpret_cast<derived *>(_ATL_PACKING))) - _ATL_PACKING)
-extern "C" IMAGE_DOS_HEADER __ImageBase;
-
namespace ATL
{
public:
CAtlComModule()
{
- m_hInstTypeLib = reinterpret_cast<HINSTANCE>(&__ImageBase);
+ GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)this, &m_hInstTypeLib);
m_ppAutoObjMapFirst = NULL;
m_ppAutoObjMapLast = NULL;
if (FAILED(m_csObjMap.Init()))
public :
static bool m_bInitFailed;
public:
+ CAtlBaseModule()
+ {
+ cbSize = sizeof(_ATL_BASE_MODULE);
+ GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)this, &m_hInst);
+ m_hInstResource = m_hInst;
+ }
+
HINSTANCE GetModuleInstance()
{
return m_hInst;