⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dllmain.cpp

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 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 + -