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.
 
 
 
 
 
 

115 lines
1.9 KiB

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
winfax.c
Abstract:
This module contains routines for the winfax dllinit.
Author:
Wesley Witt (wesw) 22-Jan-1996
--*/
#include "faxapi.h"
#pragma hdrstop
HINSTANCE g_MyhInstance;
static BOOL gs_fFXSAPIInit;
#define FAX_API_DEBUG_LOG_FILE _T("FXSAPIDebugLogFile.txt")
#ifdef __cplusplus
extern "C" {
#endif
DWORD
DllMain(
HINSTANCE hInstance,
DWORD Reason,
LPVOID Context
)
/*++
Routine Description:
DLL initialization function.
Arguments:
hInstance - Instance handle
Reason - Reason for the entrypoint being called
Context - Context record
Return Value:
TRUE - Initialization succeeded
FALSE - Initialization failed
--*/
{
if (Reason == DLL_PROCESS_ATTACH)
{
OPEN_DEBUG_FILE(FAX_API_DEBUG_LOG_FILE);
g_MyhInstance = hInstance;
DisableThreadLibraryCalls( hInstance );
gs_fFXSAPIInit = FXSAPIInitialize();
return gs_fFXSAPIInit;
}
if (Reason == DLL_PROCESS_DETACH)
{
FXSAPIFree();
CLOSE_DEBUG_FILE;
}
return TRUE;
}
//
// FXSAPIInitialize and FXSAPIFree are private and are called by the service only
// Becuase the process is not always terminated when the service is stopped, and not all DLL are freed,
// DLL_PROCESS_ATTACH is not always called when the service starts. Therefore it calls FXSAPIInitialize().
//
BOOL
FXSAPIInitialize(
VOID
)
{
if (TRUE == gs_fFXSAPIInit)
{
return TRUE;
}
if (!FaxClientInitRpcServer())
{
return FALSE;
}
return TRUE;
}
VOID
FXSAPIFree(
VOID
)
{
FaxClientTerminateRpcServer();
HeapCleanup();
gs_fFXSAPIInit = FALSE;
return;
}
#ifdef __cplusplus
}
#endif