sclink.cpp

来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C++ 代码 · 共 212 行

CPP
212
字号
/*__________________________________________________________________________
 Copyright (C) 2002 PGP Corporation
 All rights reserved.
 
 $Id: SClink.cpp,v 1.8 2002/08/06 20:09:50 dallen Exp $
__________________________________________________________________________*/

// This file does the soft linking between the shell extensions
// and PGPsc. This is VERY IMPORTANT, because soft linking ensures
// that the multi-meg PGP dlls are not loaded up unless the user
// actually wants to do a PGP operation. Otherwise, simply 
// doing a right click to bring up the context menu will result
// in a lengthy delay. Please do not hard link to this module!!!!  -wjb

#include "precomp.h"

HINSTANCE hSC_DLL=NULL;

typedef BOOL (*ENCRYPTFILELIST)(HWND,char *,void *,void *,
					 FILELIST *,BOOL,BOOL);

BOOL PGPscEncryptFileList(HWND hwnd,char *szApp,void *PGPsc,void *PGPtls,
					 FILELIST *ListHead,BOOL bEncrypt,BOOL bSign)
{
	ENCRYPTFILELIST SCEncryptFileList;
	BOOL RetVal;

	SCEncryptFileList  = (ENCRYPTFILELIST)GetProcAddress(hSC_DLL,"PGPscEncryptFileList");

	RetVal=(SCEncryptFileList)(hwnd,szApp,PGPsc,PGPtls,
					 ListHead,bEncrypt,bSign);

	return RetVal;
}

typedef BOOL (*FREESPACEWIPECMDLINE)(HWND,void*, char *,int, BOOL);

BOOL PGPscFreeSpaceWipeCmdLine(HWND hwnd, void* PGPsc, 
							   char *Drive, int Passes, BOOL bAuto)
{
	FREESPACEWIPECMDLINE SCFreeSpaceWipeCmdLine;
	BOOL RetVal;

	SCFreeSpaceWipeCmdLine  = (FREESPACEWIPECMDLINE)GetProcAddress(hSC_DLL,"PGPscFreeSpaceWipeCmdLine");

	RetVal=(SCFreeSpaceWipeCmdLine)(hwnd,PGPsc,Drive,Passes,bAuto);

	return RetVal;
}

typedef BOOL (*CREATESDAFILELIST)(HWND,char *,void *,void *,
					 FILELIST *);

BOOL PGPscCreateSDAFileList(HWND hwnd,char *szApp,void *PGPsc,void *PGPtls,
					 FILELIST *ListHead)
{
	CREATESDAFILELIST SCCreateSDAFileList;
	BOOL RetVal;

	SCCreateSDAFileList = 
		(CREATESDAFILELIST)GetProcAddress(hSC_DLL,"PGPscCreateSDAFileList");

	RetVal=(SCCreateSDAFileList)(hwnd,szApp,PGPsc,PGPtls,
					 ListHead);

	return RetVal;
}

typedef BOOL (*DECRYPTFILELIST)(HWND,char *,void *,void *,FILELIST *);

BOOL PGPscDecryptFileList(HWND hwnd,char *szApp,void *PGPsc,void *PGPtls,FILELIST *ListHead)
{
	DECRYPTFILELIST SCDecryptFileList;
	BOOL RetVal;

	SCDecryptFileList  = (DECRYPTFILELIST)GetProcAddress(hSC_DLL,"PGPscDecryptFileList");

	RetVal=(SCDecryptFileList)(hwnd,szApp,PGPsc,PGPtls,ListHead);

	return RetVal;
}

typedef BOOL (*WIPEFILELIST)(HWND,void *,FILELIST *,DWORD,DWORD);

BOOL PGPscWipeFileList(HWND hwnd,void *PGPsc,FILELIST *ListHead,DWORD dwWipeFlags,
					   DWORD dwPasses)
{
	WIPEFILELIST SCWipeFileList;
	BOOL RetVal;

	SCWipeFileList  = (WIPEFILELIST)GetProcAddress(hSC_DLL,"PGPscWipeFileList");

	RetVal=(SCWipeFileList)(hwnd,PGPsc,ListHead,dwWipeFlags,dwPasses);

	return RetVal;
}

typedef BOOL (*ADDTOFILELIST)(FILELIST **,char *,ADDFILELISTCALLBACK,void *);

BOOL PGPscAddToFileList(FILELIST **filelist,char *filename,
						ADDFILELISTCALLBACK UserProc,void *pUserValue)
{
	ADDTOFILELIST SCAddToFileList;
	BOOL RetVal;

	SCAddToFileList  = (ADDTOFILELIST)GetProcAddress(hSC_DLL,"PGPscAddToFileList");

	RetVal=(SCAddToFileList)(filelist,filename,UserProc,pUserValue);

	return RetVal;
}

typedef BOOL (*FREEFILELIST)(FILELIST *);

BOOL PGPscFreeFileList(FILELIST *FileList)
{
	FREEFILELIST SCFreeFileList;
	BOOL RetVal;

	SCFreeFileList  = (FREEFILELIST)GetProcAddress(hSC_DLL,"PGPscFreeFileList");

	RetVal=(SCFreeFileList)(FileList);

	return RetVal;
}

typedef BOOL (*INITPGPSC)(HWND,void **,void **,int);

BOOL PGPscInit(HWND hwnd,void **PGPsc,void **PGPtls,int Flags)
{
	INITPGPSC SCInitPGPsc;
	BOOL RetVal;

    hSC_DLL = LoadLibrary("PGPSC.DLL");
    if (hSC_DLL == 0) 
	{
		MessageBox(hwnd,"LoadLibrary() failed: Unable to locate PGPSC.DLL!",
			"PGP Error",MB_OK|MB_ICONSTOP|MB_SETFOREGROUND);

		return FALSE;
    }

	SCInitPGPsc  = (INITPGPSC)GetProcAddress(hSC_DLL,"PGPscInit");

	RetVal=(SCInitPGPsc)(hwnd,PGPsc,PGPtls,Flags);

	return RetVal;
}

typedef BOOL (*UNINITPGPSC)(HWND,void *,void *);

BOOL PGPscDestroy(HWND hwnd,void *PGPsc,void *PGPtls)
{
	UNINITPGPSC SCUninitPGPsc;
	BOOL RetVal=TRUE;

	if(PGPsc)
	{
		SCUninitPGPsc  = (UNINITPGPSC)GetProcAddress(hSC_DLL,"PGPscDestroy");

		RetVal=(SCUninitPGPsc)(hwnd,PGPsc,PGPtls);
	}

	if(hSC_DLL)
	{
		FreeLibrary(hSC_DLL);
		hSC_DLL=NULL;
	}

	return RetVal;
}

typedef UINT (*PGPSCQUERYCACHESECSREMAINING)(void);

UINT PGPscQueryCacheSecsRemaining (void)
{
	PGPSCQUERYCACHESECSREMAINING SCPGPscQueryCacheSecsRemaining;
	UINT RetVal;

	SCPGPscQueryCacheSecsRemaining  = 
		(PGPSCQUERYCACHESECSREMAINING)GetProcAddress(hSC_DLL,"PGPscQueryCacheSecsRemaining");

	RetVal=(SCPGPscQueryCacheSecsRemaining)();

	return RetVal;
}

typedef BOOL (*CHECKFORPURGE)(UINT,WPARAM);

BOOL PGPscCheckForPurge (UINT uMsg,WPARAM wParam)
{
	CHECKFORPURGE SCCheckForPurge;
	UINT RetVal;

	SCCheckForPurge  = 
		(CHECKFORPURGE)GetProcAddress(hSC_DLL,"PGPscCheckForPurge");

	RetVal=(SCCheckForPurge)(uMsg,wParam);

	return RetVal;
}

/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?