204 lines
2.9 KiB
C
204 lines
2.9 KiB
C
/*
|
|
* dllinit.c - Initialization and termination routines.
|
|
*/
|
|
|
|
|
|
/* Headers
|
|
**********/
|
|
|
|
#include "project.h"
|
|
#pragma hdrstop
|
|
|
|
#include "..\core\init.h"
|
|
#include "server.h"
|
|
#include "cnrlink.h"
|
|
|
|
|
|
/* Module Prototypes
|
|
********************/
|
|
|
|
PRIVATE_CODE BOOL MyAttachProcess(HMODULE);
|
|
PRIVATE_CODE BOOL MyDetachProcess(HMODULE);
|
|
|
|
|
|
/* Global Variables
|
|
*******************/
|
|
|
|
/* serialization control structure */
|
|
/* note no thread attach or thread detach procs here so we can optimize... */
|
|
|
|
PUBLIC_DATA CSERIALCONTROL g_cserctrl =
|
|
{
|
|
MyAttachProcess,
|
|
MyDetachProcess,
|
|
NULL,
|
|
NULL
|
|
};
|
|
|
|
#ifdef DEBUG
|
|
|
|
/* .ini file name and section used by inifile.c!SetIniSwitches() */
|
|
|
|
PUBLIC_DATA LPCTSTR GpcszIniFile = TEXT("rover.ini");
|
|
PUBLIC_DATA LPCTSTR GpcszIniSection = TEXT("LinkInfoDebugOptions");
|
|
|
|
/* module name used by debug.c!SpewOut() */
|
|
|
|
PUBLIC_DATA LPCTSTR GpcszSpewModule = TEXT("LinkInfo");
|
|
|
|
#endif
|
|
|
|
|
|
/***************************** Private Functions *****************************/
|
|
|
|
|
|
#pragma warning(disable:4100) /* "unreferenced formal parameter" warning */
|
|
|
|
/*
|
|
** MyAttachProcess()
|
|
**
|
|
**
|
|
**
|
|
** Arguments:
|
|
**
|
|
** Returns:
|
|
**
|
|
** Side Effects: none
|
|
*/
|
|
PRIVATE_CODE BOOL MyAttachProcess(HMODULE hmod)
|
|
{
|
|
BOOL bResult;
|
|
|
|
ASSERT(IS_VALID_HANDLE(hmod, MODULE));
|
|
|
|
DebugEntry(MyAttachProcess);
|
|
|
|
// Don't care about thread attach/detach.
|
|
DisableThreadLibraryCalls(hmod);
|
|
bResult = ProcessInitServerModule();
|
|
|
|
DebugExitBOOL(MyAttachProcess, bResult);
|
|
|
|
return(bResult);
|
|
}
|
|
|
|
|
|
/*
|
|
** MyDetachProcess()
|
|
**
|
|
**
|
|
**
|
|
** Arguments:
|
|
**
|
|
** Returns:
|
|
**
|
|
** Side Effects: none
|
|
*/
|
|
PRIVATE_CODE BOOL MyDetachProcess(HMODULE hmod)
|
|
{
|
|
BOOL bResult = TRUE;
|
|
|
|
ASSERT(IS_VALID_HANDLE(hmod, MODULE));
|
|
|
|
DebugEntry(MyDetachProcess);
|
|
|
|
ProcessExitServerModule();
|
|
|
|
DebugExitBOOL(MyDetachProcess, bResult);
|
|
|
|
return(bResult);
|
|
}
|
|
|
|
#pragma warning(default:4100) /* "unreferenced formal parameter" warning */
|
|
|
|
|
|
/****************************** Public Functions *****************************/
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
/*
|
|
** SetAllIniSwitches()
|
|
**
|
|
**
|
|
**
|
|
** Arguments:
|
|
**
|
|
** Returns:
|
|
**
|
|
** Side Effects: none
|
|
*/
|
|
PUBLIC_CODE BOOL SetAllIniSwitches(void)
|
|
{
|
|
BOOL bResult;
|
|
|
|
bResult = SetDebugModuleIniSwitches();
|
|
bResult |= SetSerialModuleIniSwitches();
|
|
bResult |= SetMemoryManagerModuleIniSwitches();
|
|
|
|
return(bResult);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
** InitializeDLL()
|
|
**
|
|
**
|
|
**
|
|
** Arguments:
|
|
**
|
|
** Returns:
|
|
**
|
|
** Side Effects: none
|
|
*/
|
|
PUBLIC_CODE BOOL InitializeDLL(void)
|
|
{
|
|
BOOL bResult;
|
|
|
|
DebugEntry(InitializeDLL);
|
|
|
|
bResult = InitMemoryManagerModule();
|
|
|
|
#ifdef DEBUG
|
|
|
|
if (bResult)
|
|
{
|
|
SpewHeapSummary(0);
|
|
}
|
|
|
|
#endif
|
|
|
|
DebugExitBOOL(InitializeDLL, bResult);
|
|
|
|
return(bResult);
|
|
}
|
|
|
|
|
|
/*
|
|
** TerminateDLL()
|
|
**
|
|
**
|
|
**
|
|
** Arguments:
|
|
**
|
|
** Returns: TRUE
|
|
**
|
|
** Side Effects: none
|
|
*/
|
|
PUBLIC_CODE BOOL TerminateDLL(void)
|
|
{
|
|
BOOL bResult;
|
|
|
|
DebugEntry(TerminateDLL);
|
|
|
|
ExitMemoryManagerModule();
|
|
|
|
bResult = TRUE;
|
|
|
|
DebugExitBOOL(TerminateDLL, bResult);
|
|
|
|
return(bResult);
|
|
}
|