cvolumeimp.h

来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C头文件 代码 · 共 120 行

H
120
字号
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

        $Id: CVolumeImp.h,v 1.5 2002/08/06 20:09:34 dallen Exp $
____________________________________________________________________________*/

#ifndef Included_CVolumeImp_h	// [
#define Included_CVolumeImp_h

#include "CImp.h"
#include "CString.h"
#include "CVolume.h"

_PGP_BEGIN

// Class CVolumeImp

class CVolumeImp : public CImp
{
	friend class CVolume;

protected:
	enum VolumeState	{kVolStateMounted, kVolStateUnmounted};
	enum LockState		{kLockStateNone, kLockStateIO, kLockStateFormat};

protected:
	CVolumeImp() : mIsAttachedToVolume(FALSE), 
		mVolState(kVolStateUnmounted), mLockState(kLockStateNone)
	{
		Status() = mRoot.Status();
	}

	PGPBoolean	IsMounted() const
	{
		return (mVolState == kVolStateMounted);
	}

	PGPBoolean	IsUnmounted() const
	{
		return (mVolState == kVolStateUnmounted);
	}

	PGPBoolean	IsAttachedToVolume() const
	{
		return mIsAttachedToVolume;
	}

	PGPBoolean	IsLockedForIO() const
	{
		return (mLockState == kLockStateIO);
	}

	PGPBoolean	IsLockedForFormat() const
	{
		return (mLockState == kLockStateFormat);
	}

	const char *	Root() const 
	{
		return mRoot;
	}

	virtual const char *	DeviceName() const = 0;

	PGPUInt32		BlockSize() const 
	{
		return mBlockSize;
	}

	PGPUInt64		TotalBlocks() const 
	{
		return mTotalBlocks;
	}

	PGPBoolean		RootsEqual(const char *root) const 
	{
		return mRoot.CompareNoCase(root);
	}

	virtual PGPBoolean	HasOpenFiles() = 0;

	virtual CComboError	AttachVolume(const char *root, 
		const char *deviceName) = 0;
	virtual void		DetachVolume() = 0;

	virtual CComboError	Mount(const char *deviceName, const char *root, 
		PGPUInt64 totalBlocks, PGPUInt32 blockSize, 
		const void *ioHandlerFunc, void *refPtr, PGPBoolean readOnly) = 0;

	virtual CComboError	Unmount(PGPBoolean isForced) = 0
	{
		return CComboError();
	}

	virtual CComboError	LockForIO() = 0;
	virtual CComboError	LockForFormat() = 0;
	virtual CComboError	UnlockVolume() = 0;

	virtual CComboError	Read(void *buf, PGPUInt64 pos, 
		PGPUInt32 nBlocks) const = 0;
	virtual CComboError	Write(const void *buf, PGPUInt64 pos, 
		PGPUInt32 nBlocks) = 0;

protected:
	PGPBoolean	mIsAttachedToVolume;

	VolumeState	mVolState;
	LockState	mLockState;

	CString	mRoot;

	PGPUInt32	mBlockSize;
	PGPUInt64	mTotalBlocks;
};

_PGP_END

#endif	// ] Included_CVolumeImp_h

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?