📄 cpgpdiskhandlerimp.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPdiskHandlerImp.h,v 1.9 2002/08/06 20:09:34 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CPGPdiskHandlerImp_h // [
#define Included_CPGPdiskHandlerImp_h
#include "pgpDiskPubTypes.h"
#include "CImp.h"
#include "CList.h"
#include "CLookasideList.h"
#include "CRMWOLock.h"
#include "CThread.h"
#include "CTimer.h"
#include "CPGPdisk.h"
#include "CPGPdiskHandlerImp.h"
_PGP_BEGIN
// Types
class CString;
// Class CPGPdiskHandlerImp
class CPGPdiskHandlerImp : public CImp
{
friend class CPGPdiskHandler;
protected:
enum
{
ContextToggleSeconds = 5,
ContextVerifySeconds = 5,
MaxQueuedTasks = 32
};
enum HandlerTask;
struct TaskInfoHeader;
struct MountTaskInfo;
struct UnmountTaskInfo;
struct UnmountAllTaskInfo;
struct EverySecondTaskInfo;
protected:
CPGPdiskHandlerImp();
PGPBoolean IsFileAMountedPGPdisk(const char *path) const
{
return IsntNull(GetPGPdiskByPath(path));
}
PGPBoolean IsRootAMountedPGPdisk(const char *root) const
{
return IsntNull(GetPGPdiskByRoot(root));
}
const char * GetDiskDevNameByPath(const char *path) const;
const char * GetDiskDevNameByRoot(const char *root) const;
PGPUInt32 NumPGPdisks() const
{
return mPGPdiskList.Count();
}
CComboError ExportPGPdiskInfo(PGPdiskInfo *pInfoArray,
PGPUInt32 numElems, PGPUInt32 &elemsFilled) const;
void TurnOnUnmountAllMode()
{
mInUnmountAllMode = TRUE;
}
CComboError SetInactivityTimeout(const char *root, PGPUInt32 seconds);
PGPBoolean AreDisksTimedOut();
void ResetTimedOutDisk(const char *root);
CComboError MountPGPdisk(const char *path, const char *root,
PGPdiskEncryptionAlgorithm algorithm, const void *exportedContext,
PGPUInt32 sizeContext, PGPUInt64 firstDataBlock,
PGPUInt64 numDataBlocks, char *deviceName, PGPBoolean readOnly);
CComboError UnmountPGPdisk(const char *root, PGPBoolean isForced);
CComboError UnmountAllPGPdisks(PGPBoolean isForced);
protected:
CLookasideList<CPGPdisk> mPGPdiskAllocator;
CList<CPGPdisk> mPGPdiskList;
mutable CRMWOLock mPGPdiskListLock;
PGPBoolean mInUnmountAllMode;
PGPBoolean mWorkerThreadCreated;
CThread mTaskThread;
CTimer mEverySecondTimer;
virtual void Shutdown();
virtual CComboError Startup();
CComboError CreateWorkerThread();
void DestroyWorkerThread();
CComboError ConstructDeviceName(CString& deviceName) const;
virtual const void * GetPlatformIoHandlerFunc() const = 0;
virtual PGPUInt32 GetPlatformProcessId() const = 0;
CPGPdisk * GetPGPdiskByPath(const char *path) const;
CPGPdisk * GetPGPdiskByRoot(const char *root) const;
CPGPdisk * GetPGPdiskByDeviceName(const char *deviceName) const;
virtual CComboError UnmountPGPdiskAux(CPGPdisk *pPGD,
PGPBoolean isForced = FALSE);
virtual CComboError MountPGPdiskCallback(MountTaskInfo *pMTI);
virtual CComboError UnmountPGPdiskCallback(UnmountTaskInfo *pUTI);
virtual CComboError UnmountAllPGPdisksCallback(
UnmountAllTaskInfo *pUATI);
virtual void EverySecondThreadCallback(EverySecondTaskInfo *pESTI);
void PGPdiskTaskCallbackAux(TaskInfoHeader *pTIH);
static void _cdecl PGPdiskTaskCallback(void *refPtr);
CComboError PerformPGPdiskTask(TaskInfoHeader *pTIH,
HandlerTask task);
CComboError SchedulePGPdiskTask(TaskInfoHeader *pTIH,
HandlerTask task);
virtual void EverySecondTimerCallbackAux();
static void _cdecl EverySecondTimerCallback(void *refPtr);
};
_PGP_END
#endif // Included_CPGPdiskHandlerImp_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -