📄 cpgpdiskcontext.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPdiskContext.cpp,v 1.25 2002/11/14 22:23:18 wjb Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include "pgpBuild.h"
#include "pgpClientErrors.h"
#include "CPGPKey.h"
#include "CDriverComm.h"
#include "CEngineSubsystems.h"
#include "CPGPdiskContext.h"
#include "CPGPdiskDisk.h"
#include "CPGPdiskDiskSet.h"
#include "pgplnlib.h"
_USING_PGP
// Class CPGPdiskContext member functions
CPGPdiskContext::CPGPdiskContext()
{
mKeyDBModified=TRUE;
mPGPContext.Create();
PGPlnLicenseCheck(mPGPContext);
}
const CPGPclPrefs&
CPGPdiskContext::PGPclPrefs() const
{
mPGPclPrefs.Open();
return mPGPclPrefs;
}
// Added PGPSetNotificationCallback support so we only
// reload the keydb when things change -wjb
void diskContextUpdateProc (
PGPUserValue userval,
PGPNotificationReason reason,
PGPUInt32 uParam1,
PGPUInt32 uParam2)
{
if (reason == kPGPNotification_KeyDBChanged)
{
PGPBoolean *pmKeyDBModified;
pmKeyDBModified=(PGPBoolean *)userval;
*pmKeyDBModified=TRUE;
}
}
const CPGPKeyDB&
CPGPdiskContext::PGPKeyDB() const
{
// Open default key DB and keyset on that DB on demand.
if (!mPGPKeyDB.WeCreated())
{
mKeyDBModified=TRUE; // wjb
ReloadPGPKeyDB();
PGPSetNotificationCallback(diskContextUpdateProc,&mKeyDBModified); //wjb
}
return mPGPKeyDB;
}
PGPBoolean
CPGPdiskContext::IsTherePGPdiskADK() const
{
PGPBoolean isThereADK;
if(PGPclEnterprise())
{
isThereADK = PGPclPrefs().GetBoolean(kPGPPrefUsePGPdiskADK);
}
else
{
return FALSE;
}
return isThereADK;
}
void
CPGPdiskContext::GetPGPdiskADKPubKey(CPGPKey& adkKey) const
{
if(PGPclEnterprise())
{
// Get ADK key ID.
CPGPData keyIDData;
PGPclPrefs().GetData(kPGPPrefPGPdiskADKKeyID, keyIDData);
CPGPKeyID adkKeyID(*static_cast<PGPKeyID *>(keyIDData.Get()));
// Get ADK key.
adkKey.FindKeyByKeyID(PGPKeyDB(), adkKeyID);
}
else
{
THROW_PGPERROR(kPGPClientError_DiskAdkFuncOnPersonalBuild);
}
}
void
CPGPdiskContext::GetPGPdiskADKUserID(CString& userID) const
{
if(PGPclEnterprise())
{
CPGPKey adkKey;
GetPGPdiskADKPubKey(adkKey);
adkKey.GetPrimaryUserIDName(userID);
}
else
{
THROW_PGPERROR(kPGPClientError_DiskAdkFuncOnPersonalBuild);
}
}
void
CPGPdiskContext::UpdateDiskSet(CPGPdiskDiskSet& diskSet) const
{
PGPdiskInfo disks[kPGPdiskMaxMountedDisks];
PGPUInt32 numFilled;
CEngineSubsystems::DriverComm().QueryAllMounted(disks,
kPGPdiskMaxMountedDisks, numFilled);
diskSet.Empty();
for (PGPUInt32 i = 0; i < numFilled; i++)
{
auto_ptr<CPGPdiskDisk> pNewDisk(new CPGPdiskDisk);
pNewDisk->AttachMounted(this, disks[i].path, disks[i].root,
disks[i].deviceName, disks[i].isReadOnly, disks[i].hasTimedOut);
diskSet.AddMounted(*pNewDisk.get());
}
}
void
CPGPdiskContext::ReloadPGPKeyDB() const
{
if(!mKeyDBModified)
return;
mKeyDBModified=FALSE;
// Open default key DB
try
{
mPGPKeyDB.OpenDefault(mPGPContext);
}
catch (CComboError& error)
{
switch (error.pgpErr)
{
case kPGPError_CantOpenFile:
case kPGPError_FileNotFound:
if (PGPclPreferences(PGPContext(), NULL,
kPGPclKeyringPrefs, NULL) != kPGPError_NoErr)
{
throw;
}
else
{
mPGPKeyDB.OpenDefault(mPGPContext);
}
break;
default:
throw;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -