Leaked source code of windows server 2003
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.
|
|
/*++
Copyright (C) Microsoft Corporation
Module Name:
dllinit.cpp
Abstract:
This module implements the dll related function
Author:
William Hsieh (williamh) created
Revision History:
--*/
#include "devmgr.h"
#include "factory.h"
LPCTSTR DEVMGR_DEVICEID_SWITCH = TEXT("DMDeviceId"); LPCTSTR DEVMGR_MACHINENAME_SWITCH = TEXT("DMMachineName"); LPCTSTR DEVMGR_COMMAND_SWITCH = TEXT("DMCommand");
//
// DLL main entry point
// INPUT:
// HINSTANCE hInstance -- module instance handle
// DWORD dwReason -- the reason why we are called.
// LPVOID lpReserved -- no used here
BOOL DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved ) { UNREFERENCED_PARAMETER(lpReserved);
switch (dwReason) { case DLL_PROCESS_ATTACH:
// we do not need thread attach/detach calls
DisableThreadLibraryCalls(hInstance);
if (!SHFusionInitializeFromModule(hInstance)) { return FALSE; }
// do must be done
InitCommonControls();
// initiailze our global stuff
InitGlobals(hInstance);
break;
case DLL_PROCESS_DETACH: // do the clean up here.....
SHFusionUninitialize(); break; } return(TRUE); }
BOOL InitGlobals( HINSTANCE hInstance ) { g_hInstance = hInstance; // preload memory allocation error message
TCHAR tszTemp[256]; ::LoadString(hInstance, IDS_ERROR_NOMEMORY, tszTemp, ARRAYLEN(tszTemp)); g_MemoryException.SetMessage(tszTemp); ::LoadString(hInstance, IDS_NAME_DEVMGR, tszTemp, ARRAYLEN(tszTemp)); g_MemoryException.SetCaption(tszTemp); try { //preload strings
g_strDevMgr.LoadString(hInstance, IDS_NAME_DEVMGR);
// parse the command line and establish machine name and etc
CDMCommandLine CmdLine; CmdLine.ParseCommandLine(GetCommandLine()); g_strStartupMachineName = CmdLine.GetMachineName(); g_strStartupDeviceId = CmdLine.GetDeviceId(); g_strStartupCommand = CmdLine.GetCommand(); }
catch (CMemoryException* e) { e->ReportError(); e->Delete(); return FALSE; }
return TRUE; }
//
// Overloaded allocation operators
//
void * __cdecl operator new( size_t size) { return ((void *)LocalAlloc(LPTR, size)); }
void __cdecl operator delete( void *ptr) { LocalFree(ptr); }
__cdecl _purecall(void) { return (0); }
//
// Standard APIs for a OLE server. They are all routed to CClassFactory
// support functions
//
//
STDAPI DllRegisterServer() { return CClassFactory::RegisterAll(); }
STDAPI DllUnregisterServer() { return CClassFactory::UnregisterAll(); }
STDAPI DllCanUnloadNow() { return CClassFactory::CanUnloadNow(); }
STDAPI DllGetClassObject( REFCLSID rclsid, REFIID riid, void** ppv ) { return CClassFactory::GetClassObject(rclsid, riid, ppv); }
|