Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
1.8 KiB

//+----------------------------------------------------------------------------
//
// 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;
}