📄 dllmain.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: DllMain.cpp,v 1.12 2002/11/22 05:33:01 wjb Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include "CPFLImpFactoryWin32.h"
#include "UModuleInstance.h"
#include "pgpClientLib.h"
#include "pgpDiskEngine.h"
#include "CEngineImpFactoryWin32.h"
#include "CEngineSubsystemsWin32.h"
_USING_PGP
_UNNAMED_BEGIN
// Static variables
PGPUInt32 PGPdiskEngineRefCount = 0;
PGPBoolean PGPclInitialized = FALSE;
PGPBoolean SubInitialized = FALSE;
PGPContextRef PGPContextForCL = kInvalidPGPContextRef;
_UNNAMED_END
// Dll startup and shutdown functions
PGPError
PGPdiskEngineExport
PGPdiskEngineInitLibrary(PGPUInt32 Flags)
{
PGPError error = kPGPError_NoErr;
try
{
// Special case for admin disk wizard running in disk
if ((PGPdiskEngineRefCount>0)&&(PGPclInitialized)&&(!SubInitialized))
{
SubInitialized=TRUE;
CPFLImpFactoryWin32::CreateInstance();
CEngineImpFactoryWin32::CreateInstance();
CEngineSubsystemsWin32::CreateInstance();
CEngineSubsystemsWin32::CreateSubsystems();
}
// End special case
if (PGPdiskEngineRefCount++ == 0)
{
// Convention is we must close it even if it errors out
PGPclInitialized = TRUE;
error = PGPclInitLibrary(&PGPContextForCL, Flags);
THROW_IF_PGPERROR(error);
SubInitialized=TRUE;
CPFLImpFactoryWin32::CreateInstance();
CEngineImpFactoryWin32::CreateInstance();
CEngineSubsystemsWin32::CreateInstance();
CEngineSubsystemsWin32::CreateSubsystems();
}
}
catch (CComboError& caughtErr)
{
error = caughtErr.pgpErr;
PGPdiskEngineCleanupLibrary(); // this is safe
}
return error;
}
void
PGPdiskEngineExport
PGPdiskEngineCleanupLibrary()
{
try
{
if ((PGPdiskEngineRefCount > 0) &&
(--PGPdiskEngineRefCount == 0))
{
SubInitialized=FALSE;
CEngineSubsystemsWin32::DestroySubsystems();
CEngineSubsystemsWin32::DestroyInstance();
CEngineImpFactoryWin32::DestroyInstance();
CPFLImpFactoryWin32::DestroyInstance();
if (PGPclInitialized)
{
PGPclCloseLibrary();
PGPclInitialized = FALSE;
PGPContextForCL = kInvalidPGPContextRef;
}
}
}
catch (CComboError&) { }
}
BOOL
WINAPI
DllMain(HINSTANCE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
UModuleInstance::Set(hInstDll);
break;
case DLL_PROCESS_DETACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
break;
default:
pgpAssert(FALSE);
break;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -