📄 cpgpdiskimp.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPdiskImp.h,v 1.6 2002/08/06 20:09:34 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CPGPdiskImp_h // [
#define Included_CPGPdiskImp_h
#include "CArray.h"
#include "CFile.h"
#include "CImp.h"
#include "CMutex.h"
#include "CString.h"
#include "CThread.h"
#include "UString.h"
#include "CCipherContext.h"
#include "CPGPdisk.h"
#include "CVolume.h"
_PGP_BEGIN
// Class CPGPdiskImp
class CPGPdiskImp : public CImp
{
friend class CPGPdisk;
protected:
enum
{
BlocksPerOp = 32,
MaxQueuedIoReqs = 128
};
public:
virtual ~CPGPdiskImp();
protected:
CPGPdiskImp();
PGPBoolean HasInactivityTimedOut() const
{
return mHasTimedOut;
}
PGPBoolean IsMounted() const
{
return mVolume.IsMounted();
}
PGPBoolean IsUnmounted() const
{
return mVolume.IsUnmounted();
}
PGPBoolean IsReadOnly() const
{
return mIsReadOnly;
}
const char * Path() const
{
return mFile.Path();
}
const char * Root() const
{
return mVolume.Root();
}
const char * DeviceName() const
{
return mVolume.DeviceName();
}
PGPUInt64 TotalBlocks() const
{
return mVolume.TotalBlocks();
}
PGPBoolean HasOpenFiles()
{
return mVolume.HasOpenFiles();
}
void FlipContexts();
CComboError ValidateContexts();
CComboError SetInactivityTimeout(PGPUInt32 seconds);
void ResetTimedOut();
virtual PGPUInt32 ProcessExternalIo(void *ioPacket,
PGPBoolean& wasCompleted) = 0;
virtual CComboError Mount(const char *path, const char *root,
const char *deviceName, PGPdiskEncryptionAlgorithm algorithm,
const void *exportedContext, PGPUInt32 sizeContext,
PGPUInt64 firstDataBlock, PGPUInt64 numDataBlocks,
const void *ioHandlerFunc, void *refPtr, PGPUInt32 procId,
PGPBoolean isReadOnly = FALSE);
virtual CComboError Unmount(PGPBoolean isForced);
virtual CComboError Read(void *buf, PGPUInt64 posInBlocks,
PGPUInt32 nBlocks) const;
virtual CComboError Write(const void *buf, PGPUInt64 posInBlocks,
PGPUInt32 nBlocks);
protected:
CFile mFile;
CThread *mIoThread;
CVolume mVolume;
PGPUInt32 mTimeoutId;
PGPBoolean mTimeoutActive;
PGPBoolean mHasTimedOut;
CCipherContext mCipherContext;
mutable CMutex mCipherContextMutex;
CArray<PGPByte> *mBufferObject;
PGPByte *mBuffer;
PGPBoolean mIsReadOnly;
PGPUInt64 mFirstDataBlock;
PGPUInt64 mNumDataBlocks;
PGPUInt32 mHostBlockSize;
static VOID InactivityTimerCallback(ULONG userVal);
virtual CComboError CalcBlockSizeOfHost(const char *path,
PGPUInt32& hostBlockSize) const = 0;
virtual CComboError PerformPremountTasks() {return CComboError();}
};
_PGP_END
#endif // ] Included_CPGPdiskImp_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -