📄 cvolumeimpdrvnt.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CVolumeImpDrvNT.h,v 1.5 2002/08/06 20:09:32 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CVolumeImpDrvNT_h // [
#define Included_CVolumeImpDrvNT_h
#include <ntdddisk.h>
#include "CVolumeImp.h"
_PGP_BEGIN
// Types
class CDevice;
class CString;
class CUnicodeString;
// Class CVolumeImpDrvNT
class CVolumeImpDrvNT : public CVolumeImp
{
friend class CDriverImpFactoryDrvNT;
private:
CVolumeImpDrvNT();
~CVolumeImpDrvNT();
const char * DeviceName() const {return mAsciiDeviceName;}
PGPBoolean HasOpenFiles();
CComboError AttachVolume(const char *root, const char *deviceName);
void DetachVolume();
CComboError Mount(const char *deviceName, const char *root,
PGPUInt64 totalBlocks, PGPUInt32 blockSize,
const void *ioHandlerFunc, void *refPtr, PGPBoolean readOnly);
CComboError Unmount(PGPBoolean isForced);
CComboError LockForIO();
CComboError LockForFormat();
CComboError UnlockVolume();
CComboError Read(void *buf, PGPUInt64 pos, PGPUInt32 nBlocks) const;
CComboError Write(const void *buf, PGPUInt64 pos, PGPUInt32 nBlocks);
private:
CDevice *mPDevice;
CString mAsciiDeviceName;
CDevice mVHDevice;
PFILE_OBJECT mVHFileObject;
HANDLE mVolumeHandle;
#if (_WIN32_WINNT >= 0x0500)
CDevice mMountMgr;
CDevice mDirDevice;
PFILE_OBJECT mDirFileObject;
HANDLE mDirHandle;
#endif // (_WIN32_WINNT < 0x0500)
PGPBoolean IsVolumeHandleOpened() const
{
return (IsntNull(mVolumeHandle));
}
CComboError MakeDeviceStrings(const char *deviceName,
const char *linkName, CUnicodeString& fullDevName,
CUnicodeString& fullLinkName) const;
#if (_WIN32_WINNT >= 0x0500)
CComboError GetVolumeStrings(const char *deviceName,
CUnicodeString& volId, CUnicodeString& curLink) const;
CComboError OpenMountMgr();
void CloseMountMgr();
CComboError OpenMountPointDir(const CUnicodeString& fullDirName);
void CloseMountPointDir();
CComboError AnnounceWin2kArrival(const CUnicodeString& fullDevName);
CComboError CreateMountPoint(const CUnicodeString& volId,
const CUnicodeString& fullDevName,
const CUnicodeString& fullLinkName);
CComboError DeleteMountPoint(const CUnicodeString& volId,
const CUnicodeString& fullDevName,
const CUnicodeString& fullLinkName);
#endif // (_WIN32_WINNT < 0x0500)
CComboError GetGeometry(DISK_GEOMETRY& geom);
CComboError GetPartitionInfo(PARTITION_INFORMATION& partInfo);
CComboError FillInBlockInfo();
CComboError OpenVolumeHandle();
void CloseVolumeHandle();
};
_PGP_END
#endif // ] Included_CVolumeImpDrvNT_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -