clerror.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 392 行
C
392 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
CLerror.c - convert error codes to strings and display in messagebox
$Id: CLerror.c,v 1.16 2002/10/29 17:38:19 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPclx.h"
// external globals
extern HINSTANCE g_hInst;
// _____________________________________
//
// get descriptive string for error code
PGPError PGPclExport
PGPclErrorToString (
INT iCode,
LPSTR szString,
PGPUInt32 uLen,
PGPUInt32* puType)
{
PGPError err = kPGPError_NoErr;
UINT uType = kPGPclErrorType_Error;
UINT uIDS;
if (IsntPGPError (iCode)) return FALSE;
switch (iCode) {
case kPGPError_UserAbort :
case kPGPError_Interrupted :
case kPGPError_Win32_AlreadyOpen :
case kPGPError_Win32_UserNotInitialized :
return err;
case kPGPError_Win32_NoSecretKeys :
uIDS = IDS_ERR_NOSECRETKEYS;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_Expired :
uIDS = IDS_ERR_EXPIRED;
break;
case kPGPError_Win32_NoSigningKey :
uIDS = IDS_ERR_NOSIGNINGKEYFORSEARCH;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_ImageTooBig :
uIDS = IDS_ERR_IMAGETOOBIG;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_InvalidImage :
uIDS = IDS_ERR_INVALIDIMAGE;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_InvalidComctl32 :
uIDS = IDS_ERR_INVALIDCOMMONCONTROLS;
break;
case kPGPError_Win32_InvalidSHFolder :
uIDS = IDS_ERR_INVALIDSHFOLDER;
break;
case kPGPError_Win32_UnsupportedPlatform :
uIDS = IDS_ERR_UNSUPPORTEDPLATFORM;
break;
case kPGPError_Win32_UnsupportedKeyType :
uIDS = IDS_ERR_UNSUPPORTEDKEYTYPE;
break;
case kPGPError_Win32_NoRootCACertPrefs :
uIDS = IDS_ERR_NOROOTCACERT;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_NoCAServerPrefs :
uIDS = IDS_ERR_NOCASERVER;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_Win32_InvalidCurrentDate :
uIDS = IDS_ERR_INVALIDCURRENTDATE;
break;
case kPGPError_Win32_PrefRefNoLongerValid :
uIDS = IDS_ERR_COULDNOTWRITEPREFS;
break;
case kPGPError_Win32_PrefsHashBad :
uIDS = IDS_ERR_BADPREFSHASH;
break;
case kPGPError_Win32_NetPrefsHashBad :
uIDS = IDS_ERR_BADNETPREFSHASH;
break;
case kPGPError_Win32_NoPrefsServiceResponse :
uIDS = IDS_ERR_PREFSSERVICENOTRESPONDING;
break;
case kPGPError_RPCFailed :
uIDS = IDS_ERR_CANNOTCONNECTTOSDKSERVICE;
break;
case kPGPError_OutOfMemory :
uIDS = IDS_ERR_OUTOFMEMORY;
break;
case kPGPError_CantOpenFile :
case kPGPError_FileNotFound : //???
uIDS = IDS_ERR_NOFILE;
break;
case kPGPError_FilePermissions :
case kPGPError_FileLocked :
uIDS = IDS_ERR_FILEPERMISSIONS;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_WriteFailed :
case kPGPError_DiskFull : //???
uIDS = IDS_ERR_KEYIOWRITING;
break;
case kPGPError_IllegalFileOp:
uIDS = IDS_ERR_INVALIDFILEOPERROR;
break;
case kPGPError_IncompatibleAPI :
uIDS = IDS_ERR_INCOMPATIBLESDKAPI;
break;
case kPGPError_BadPassphrase :
case kPGPError_MissingPassphrase :
uIDS = IDS_ERR_WRONGKEYPASSPHRASE;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_BadPacket :
uIDS = IDS_ERR_CORRUPTPACKET;
break;
case kPGPError_DuplicateUserID :
uIDS = IDS_ERR_DUPLICATEUSERID;
break;
case kPGPError_DuplicateCert :
uIDS = IDS_ERR_DUPLICATECERT;
break;
case kPGPError_NoDecryptionKeyFound :
uIDS = IDS_ERR_EXTRACTKEYNOTEXIST;
break;
case kPGPError_DetachedSignatureFound :
uIDS = IDS_ERR_DETSIGFOUND;
break;
case kPGPError_KeyUnusableForEncryption :
uIDS = IDS_ERR_SIGONLYKEY;
break;
case kPGPError_KeyUnusableForSignature :
uIDS = IDS_ERR_ENCRYPTONLYKEY;
break;
case kPGPError_RandomSeedTooSmall :
case kPGPError_OutOfEntropy :
uIDS = IDS_ERR_RNGNOTSEEDED;
break;
case kPGPError_InputFile :
uIDS = IDS_ERR_INPUTFILENOTEXIST;
break;
case kPGPError_OutputBufferTooSmall :
uIDS = IDS_ERR_OUTPUTBUFFERTOOSMALL;
break;
case kPGPError_KeyInvalid :
uIDS = IDS_ERR_CANNOTUSEUNTRUSTEDKEY;
uType = kPGPclErrorType_Alert;
break;
case kPGPError_FileOpFailed :
uIDS = IDS_ERR_FILEOPFAILED;
break;
case kPGPError_ReadFailed :
case kPGPError_EOF :
uIDS = IDS_ERR_KEYRINGCORRUPT;
break;
case kPGPError_ServerKeyFailedPolicy :
uIDS = IDS_ERR_KEYFAILEDPOLICY;
break;
case kPGPError_UnsupportedHKPFilter :
uIDS = IDS_ERR_UNSUPPORTEDHTTPFILTER;
break;
case kPGPError_Win32_TokenNotInserted :
uIDS = IDS_ERR_TOKENNOTINSERTED;
break;
case kPGPError_Win32_TokenParameterError :
uIDS = IDS_ERR_TOKENPARAMETERERROR;
break;
case kPGPError_Win32_InvalidUnicodeChar :
uIDS = IDS_ERR_UNICODECONVERSION;
break;
case kPGPError_Win32_InvalidKeyIDString :
uIDS = IDS_ERR_INVALIDKEYIDSTRING;
break;
default:
uIDS = IDS_ERR_CATCHALL;
break;
}
if (uIDS == IDS_ERR_CATCHALL)
{
CHAR sz1[256];
err = PGPGetClientErrorString (iCode, sizeof(sz1), sz1);
if (IsntPGPError (err))
{
CHAR sz2[256];
LoadString (g_hInst, IDS_ERRORPREFIX, sz2, sizeof(sz2));
lstrcat (sz2, sz1);
lstrcpyn (szString, sz2, uLen);
szString[uLen-1] = '\0';
}
else
{
LoadString (g_hInst, uIDS, szString, uLen);
wsprintf (sz1, szString, iCode);
strncpy (szString, sz1, uLen);
szString[uLen-1] = '\0';
}
}
else
LoadString (g_hInst, uIDS, szString, uLen);
if (puType)
*puType = uType;
return kPGPError_UnknownError;
}
// _____________________________________
//
// putup error messagebox (if necessary)
PGPError PGPclExport
PGPclErrorBox (
HWND hwnd,
PGPError errIn)
{
PGPError err = kPGPError_NoErr;
CHAR szMessage[512];
CHAR szCaption[64];
UINT uCaptionID;
UINT uCaptionType;
UINT uFlags;
err = PGPclErrorToString (errIn,
szMessage, sizeof(szMessage), &uCaptionType);
if (IsPGPError (err))
{
uFlags = MB_OK|MB_SETFOREGROUND|MB_TASKMODAL|MB_TOPMOST;
switch (uCaptionType) {
case kPGPclErrorType_Warning :
uFlags |= MB_ICONEXCLAMATION;
uCaptionID = IDS_CAPTIONWARNING;
break;
case kPGPclErrorType_Alert :
uFlags |= MB_ICONEXCLAMATION;
uCaptionID = IDS_CAPTIONALERT;
break;
case kPGPclErrorType_Information :
uFlags |= MB_ICONINFORMATION;
uCaptionID = IDS_CAPTIONINFO;
break;
default :
uFlags |= MB_ICONSTOP;
uCaptionID = IDS_CAPTIONERROR;
break;
}
LoadString (g_hInst, uCaptionID, szCaption, sizeof(szCaption));
MessageBox (hwnd, szMessage, szCaption, uFlags);
}
return errIn;
}
// _____________________________________
//
// get descriptive string for error code
PGPError PGPclExport
PGPclEncDecErrorToString (
INT iCode,
LPSTR szString,
UINT uLen)
{
PGPError err = kPGPError_NoErr;
UINT uIDS;
if (IsntPGPError (iCode)) return FALSE;
switch (iCode) {
case kPGPError_UserAbort :
case kPGPError_Interrupted :
return err;
default:
uIDS = IDS_ERR_CATCHALL;
break;
}
if (uIDS == IDS_ERR_CATCHALL)
{
CHAR sz1[256];
err = PGPGetClientErrorString (iCode, sizeof(sz1), sz1);
if (IsntPGPError (err))
{
CHAR sz2[256];
LoadString (g_hInst, IDS_ERRORPREFIX, sz2, sizeof(sz2));
lstrcat (sz2, sz1);
lstrcpyn (szString, sz2, uLen);
szString[uLen-1] = '\0';
}
else
{
LoadString (g_hInst, uIDS, szString, uLen);
wsprintf (sz1, szString, iCode);
strncpy (szString, sz1, uLen);
szString[uLen-1] = '\0';
}
}
else
LoadString (g_hInst, uIDS, szString, uLen);
return kPGPError_UnknownError;
}
// _____________________________________
//
// putup error messagebox (if necessary)
PGPError PGPclExport
PGPclEncDecErrorBox (
HWND hWnd,
INT iCode)
{
PGPError err = kPGPError_NoErr;
CHAR szMessage[512];
CHAR szCaption[64];
err = PGPclEncDecErrorToString (iCode, szMessage, sizeof(szMessage));
if (IsPGPError (err))
{
LoadString (g_hInst, IDS_CAPTIONERROR, szCaption,
sizeof(szCaption));
MessageBox (hWnd, szMessage, szCaption,
MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|
MB_TASKMODAL|MB_TOPMOST);
}
return err;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?