87 lines
1.8 KiB
C++
87 lines
1.8 KiB
C++
//+----------------------------------------------------------------------------
|
|
//
|
|
// File: main.cpp
|
|
//
|
|
// Module: CMUTIL.DLL
|
|
//
|
|
// Synopsis: Main entry point for cmutil.dll
|
|
//
|
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
|
//
|
|
// Author: henryt Created 03/01/98
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
|
|
#include "cmmaster.h"
|
|
#include "cmlog.h"
|
|
|
|
HINSTANCE g_hInst = NULL;
|
|
|
|
//
|
|
// thread local storage index
|
|
//
|
|
DWORD g_dwTlsIndex;
|
|
|
|
extern HANDLE g_hProcessHeap; // defined in mem.cpp
|
|
extern void EndDebugMemory(); // impemented in mem.cpp
|
|
|
|
extern "C" BOOL WINAPI DllMain(
|
|
HINSTANCE hinstDLL, // handle to DLL module
|
|
DWORD fdwReason, // reason for calling function
|
|
LPVOID lpvReserved // reserved
|
|
)
|
|
{
|
|
if (fdwReason == DLL_PROCESS_ATTACH)
|
|
{
|
|
//
|
|
// First Things First, lets initialize the U Api's
|
|
//
|
|
if (!InitUnicodeAPI())
|
|
{
|
|
//
|
|
// Without our U api's we are going no where. Bail.
|
|
//
|
|
return FALSE;
|
|
}
|
|
|
|
g_hProcessHeap = GetProcessHeap();
|
|
|
|
//
|
|
// alloc tls index
|
|
//
|
|
g_dwTlsIndex = TlsAlloc();
|
|
if (g_dwTlsIndex == TLS_OUT_OF_INDEXES)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
MYVERIFY(DisableThreadLibraryCalls(hinstDLL));
|
|
|
|
g_hInst = hinstDLL;
|
|
}
|
|
|
|
else if (fdwReason == DLL_PROCESS_DETACH)
|
|
{
|
|
//
|
|
// free the tls index
|
|
//
|
|
if (g_dwTlsIndex != TLS_OUT_OF_INDEXES)
|
|
{
|
|
TlsFree(g_dwTlsIndex);
|
|
}
|
|
|
|
if (!UnInitUnicodeAPI())
|
|
{
|
|
CMASSERTMSG(FALSE, TEXT("cmutil Dllmain, UnInitUnicodeAPI failed - we are probably leaking a handle"));
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
EndDebugMemory();
|
|
#endif
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|