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) 1995-1996, Microsoft Corporation All rights reserved
siMain.cpp - main Scrapi Interface
Routines to interface with calling application. ---------------------------------------------------------------------- */
#include "precomp.h"
#include "clcnflnk.hpp"
#include "version.h"
// SDK stuff
#include "NmApp.h" // To register CLSID_NetMeeting
#include "NmSysInfo.h" // For CNmSysInfoObj
#include "SDKInternal.h" // For NmManager, etc.
#include "MarshalableTI.h" // For Marshalable Type Info
// Global variable definitions (local to each instance)
HINSTANCE g_hInst = NULL; // This dll's instance
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap) OBJECT_ENTRY(CLSID_NetMeeting, CNetMeetingObj) OBJECT_ENTRY(CLSID_NmSysInfo, CNmSysInfoObj) OBJECT_ENTRY(CLSID_NmManager, CNmManagerObj) OBJECT_ENTRY(CLSID_MarshalableTI, CMarshalableTI) END_OBJECT_MAP()
/* D L L M A I N */ /*-------------------------------------------------------------------------
%%Function: DllMain -------------------------------------------------------------------------*/ BOOL WINAPI DllMain(HINSTANCE hDllInst, DWORD fdwReason, LPVOID lpv) { switch (fdwReason) { case DLL_PROCESS_ATTACH: { #ifdef DEBUG
InitDebug(); DBG_INIT_MEMORY_TRACKING(hDllInst); TRACE_OUT(("*** MSCONF.DLL: Attached process thread %X", GetCurrentThreadId())); #endif
g_hInst = hDllInst; _Module.Init(ObjectMap, g_hInst);
DisableThreadLibraryCalls(hDllInst);
InitDataObjectModule(); break; }
case DLL_PROCESS_DETACH:
_Module.Term();
#ifdef DEBUG
DBG_CHECK_MEMORY_TRACKING(hDllInst); TRACE_OUT(("*** MSCONF.DLL: Detached process thread %X", GetCurrentThreadId())); DeInitDebug(); #endif
break;
case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: default: break; } return TRUE; }
/////////////////////////////////////////////////////////////////////////////
// Used to determine whether the DLL can be unloaded by OLE
STDAPI DllCanUnloadNow(void) { return (_Module.GetLockCount()==0) ? S_OK : S_FALSE; }
/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { HRESULT hr = S_OK;
if( InlineIsEqualGUID(rclsid, CLSID_NetMeeting) || InlineIsEqualGUID(rclsid, CLSID_NmManager) ) { hr = CoGetClassObject(rclsid, CLSCTX_LOCAL_SERVER, NULL, riid, ppv); } else { hr = _Module.GetClassObject(rclsid, riid, ppv); }
return hr; }
/* D L L G E T V E R S I O N */ /*-------------------------------------------------------------------------
%%Function: DllGetVersion
-------------------------------------------------------------------------*/ STDAPI DllGetVersion(IN OUT DLLVERSIONINFO * pinfo) { HRESULT hr;
if ((NULL == pinfo) || IsBadWritePtr(pinfo, sizeof(*pinfo)) || sizeof(*pinfo) != pinfo->cbSize) { hr = E_INVALIDARG; } else { pinfo->dwMajorVersion = (VER_PRODUCTVERSION_DW & 0xFF000000) >> 24; pinfo->dwMinorVersion = (VER_PRODUCTVERSION_DW & 0x00FF0000) >> 16; pinfo->dwBuildNumber = (VER_PRODUCTVERSION_DW & 0x0000FFFF); pinfo->dwPlatformID = DLLVER_PLATFORM_WINDOWS; hr = S_OK; }
return hr; }
/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void) { return _Module.RegisterServer(); }
/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void) { HRESULT hr = S_OK;
hr = _Module.UnregisterServer();
return hr; }
|