windows-nt/Source/XPSP1/NT/shell/ext/url/dllinit.cpp
2020-09-26 16:20:57 +08:00

136 lines
2.3 KiB
C++

/*
* dllinit.cpp - Initialization and termination routines.
*/
/* Headers
**********/
#include "project.hpp"
#pragma hdrstop
#include "autodial.hpp"
#include "inetcpl.h"
#include "init.h"
#ifdef _X86_
BOOL g_bRunningOnNT = FALSE;
#endif
/* Module Prototypes
********************/
PRIVATE_CODE BOOL MyAttachProcess(HMODULE hmod);
PRIVATE_CODE BOOL MyDetachProcess(HMODULE hmod);
/* Global Variables
*******************/
#pragma data_seg(DATA_SEG_READ_ONLY)
/* serialization control structure */
PUBLIC_DATA CSERIALCONTROL g_cserctrl =
{
MyAttachProcess,
MyDetachProcess,
NULL,
NULL
};
#pragma data_seg()
#ifdef DEBUG
#pragma data_seg(DATA_SEG_READ_ONLY)
/* .ini file name and section used by inifile.c!SetIniSwitches() */
PUBLIC_DATA PCSTR g_pcszIniFile = "ohare.ini";
PUBLIC_DATA PCSTR g_pcszIniSection = "URLDebugOptions";
/* module name used by debspew.c!SpewOut() */
PUBLIC_DATA PCSTR g_pcszSpewModule = "URL";
#pragma data_seg()
#endif
/***************************** Private Functions *****************************/
#pragma warning(disable:4100) /* "unreferenced formal parameter" warning */
PRIVATE_CODE BOOL MyAttachProcess(HMODULE hmod)
{
BOOL bResult;
ASSERT(IS_VALID_HANDLE(hmod, MODULE));
DebugEntry(MyAttachProcess);
bResult = (InitDataObjectModule());
#ifdef _X86_
// Remember whether we're running on NT or not
g_bRunningOnNT = (0 == (GetVersion() & 0x80000000));
#endif
#ifndef DEBUG
// We don't need to get called on DLL_THREAD_ATTACH, etc. This
// is for perf gains.
DisableThreadLibraryCalls(hmod);
#endif
ASSERT(NULL == g_cserctrl.AttachThread &&
NULL == g_cserctrl.DetachThread);
DebugExitBOOL(MyAttachProcess, bResult);
return(bResult);
}
PRIVATE_CODE BOOL MyDetachProcess(HMODULE hmod)
{
BOOL bResult = TRUE;
ASSERT(IS_VALID_HANDLE(hmod, MODULE));
DebugEntry(MyDetachProcess);
ExitInternetCPLModule();
ExitDataObjectModule();
DebugExitBOOL(MyDetachProcess, bResult);
return(bResult);
}
#pragma warning(default:4100) /* "unreferenced formal parameter" warning */
/****************************** Public Functions *****************************/
#ifdef DEBUG
PUBLIC_CODE BOOL SetAllIniSwitches(void)
{
BOOL bResult;
bResult = SetDebugModuleIniSwitches();
bResult = SetSerialModuleIniSwitches() && bResult;
return(bResult);
}
#endif