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 + -
显示快捷键?