⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpgpdiskimpdrvnt.h

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 H
字号:
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

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

#ifndef Included_CPGPdiskImpDrvNT_h	// [
#define Included_CPGPdiskImpDrvNT_h

#include <ntdddisk.h>

#include "CIrp.h"
#include "CSecurityToken.h"

#include "CPGPdiskImp.h"

_PGP_BEGIN

// Class CPGPdiskImpDrvNT

class CPGPdiskImpDrvNT : public CPGPdiskImp
{
	friend class CDriverImpFactoryDrvNT;

private:
	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);
	CComboError	Unmount(PGPBoolean isForced);

private:
	CPGPdiskImpDrvNT() { }

private:
	CSecurityToken	mTokenForMountUnmount;
	CSecurityToken	mTokenForIo;

	CComboError	CalcBlockSizeOfHost(const char *path, 
		PGPUInt32& hostBlockSize) const;

	void	CalcNTFakeDriveLayout(DRIVE_LAYOUT_INFORMATION *pDLI) const;
	void	CalcNTFakeGeometry(DISK_GEOMETRY *pGeom) const;
	void	CalcNTFakePartitionInfo(PARTITION_INFORMATION *pPartInfo) const;

	NTSTATUS	ProcessIrpMjRead(CIrp& irp);
	NTSTATUS	ProcessIrpMjWrite(CIrp& irp);

	void				ProcessIrpCallbackAux(CIrp& irp, 
		PGPBoolean &wasIrpCompleted);
	static void _cdecl	ProcessIrpCallback(void *refPtr);

	CComboError	QueueIrpToIoThread(CIrp& irp);

	NTSTATUS	ProcessExtIrpMjDeviceControl(CIrp& irp);
	PGPUInt32	ProcessExternalIo(void *ioPacket, PGPBoolean& wasCompleted);
};

_PGP_END

#endif	// ] Included_CPGPdiskImpDrvNT_h

⌨️ 快捷键说明

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