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.
|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: init.cpp
// Content: This file contains the module initialization.
// History:
// Tue 08-Oct-1996 08:51:15 -by- Viroon Touranachun [viroont]
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#include "ulsp.h"
#include "regunreg.h"
#include <ilsguid.h>
#include "classfac.h"
//****************************************************************************
// Constants
//****************************************************************************
//****************************************************************************
// Global Parameters
//****************************************************************************
HINSTANCE g_hInstance = NULL; LONG g_cDllRef = 0; #ifdef _DEBUG
LONG g_cCritSec = 0; #endif
CRITICAL_SECTION g_ULSSem;
#ifdef DEBUG
HDBGZONE ghZoneUls = NULL; // ULS zones
static PTCHAR _rgZonesUls[] = { TEXT("ILS"), TEXT("Error"), TEXT("Warning"), TEXT("Trace"), TEXT("RefCount"), TEXT("KA"), TEXT("Filter"), TEXT("Request"), TEXT("Response"), TEXT("Connection"), }; #endif
//****************************************************************************
// BOOL _Processattach (HINSTANCE)
//
// This function is called when a process is attached to the DLL
//
// History:
// Tue 08-Oct-1996 08:53:03 -by- Viroon Touranachun [viroont]
// Ported from Shell.
//****************************************************************************
BOOL _ProcessAttach(HINSTANCE hDll) { // Tracking critical section leaks
//
#ifdef _DEBUG
g_cCritSec = 0; g_cDllRef = 0; #endif
g_hInstance = hDll; MyInitializeCriticalSection (&g_ULSSem); return TRUE; }
//****************************************************************************
// BOOL _ProcessDetach (HINSTANCE)
//
// This function is called when a process is detached from the DLL
//
// History:
// Tue 08-Oct-1996 08:53:11 -by- Viroon Touranachun [viroont]
// Ported from Shell.
//****************************************************************************
BOOL _ProcessDetach(HINSTANCE hDll) { MyDeleteCriticalSection (&g_ULSSem);
#ifdef _DEBUG
DBG_REF("ULS g_cCritSec=%d", g_cCritSec); DBG_REF("ULS RefCount=%d", g_cDllRef); #endif
return TRUE; }
//****************************************************************************
// BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved)
//
// This function is called when the DLL is loaded
//
// History:
// Tue 08-Oct-1996 08:53:22 -by- Viroon Touranachun [viroont]
// Ported from Shell.
//****************************************************************************
BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved) { switch(dwReason) { case DLL_PROCESS_ATTACH: DBGINIT(&ghZoneUls, _rgZonesUls); DisableThreadLibraryCalls(hDll); DBG_INIT_MEMORY_TRACKING(hDll); _ProcessAttach(hDll); break;
case DLL_PROCESS_DETACH: _ProcessDetach(hDll); DBG_CHECK_MEMORY_TRACKING(hDll); DBGDEINIT(&ghZoneUls); break;
default: break;
} // end switch()
return TRUE; }
//****************************************************************************
// STDAPI DllCanUnLoadNow()
//
// This function is called to check whether it can be unloaded.
//
// History:
// Tue 08-Oct-1996 08:53:35 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
STDAPI DllCanUnloadNow(void) { if (g_cDllRef) return S_FALSE;
return S_OK; }
//****************************************************************************
// STDAPI DllRegisterServer(void)
//
// This function is called to check whether it can be unloaded.
//
// History:
// Tue 08-Oct-1996 08:53:35 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
STDAPI DllRegisterServer(void) { if (RegisterUnknownObject(TEXT("Internet Location Services"), CLSID_InternetLocationServices)) return S_OK; else return ILS_E_FAIL; }
//****************************************************************************
// STDAPI DllUnregisterServer(void)
//
// This function is called to check whether it can be unloaded.
//
// History:
// Tue 08-Oct-1996 08:53:35 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
STDAPI DllUnregisterServer(void) { if (UnregisterUnknownObject(CLSID_InternetLocationServices)) return S_OK; else return ILS_E_FAIL; }
//****************************************************************************
// void DllLock()
//
// This function is called to prevent the DLL from being unloaded.
//
// History:
// Tue 08-Oct-1996 08:53:45 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void DllLock(void) { InterlockedIncrement(&g_cDllRef); }
//****************************************************************************
// void DllRelease()
//
// This function is called to allow the DLL to be unloaded.
//
// History:
// Tue 08-Oct-1996 08:53:52 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void DllRelease(void) { InterlockedDecrement(&g_cDllRef); }
|