songybwf
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1413回复:4

请问关于在irp_mj_read完成例程解密的问题

楼主#
更多 发布于:2004-04-25 17:03
看了各位前辈的文章,还有一些疑问。
当(Irp->Flags & IRP_NOCACHE)以及Irp->MdlAddress != NULL
时用 MmGetSystemAddressForMdlSafe获得pbuf并将其内容拷贝
到自己开辟的内存中,然后将其解密。之后我该怎么办呢?自己
新建一个mdl替换原来的mdl吗?
songybwf
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-28 18:30
谢谢回复。lock哪个页面呢?
我在IoAllocateMdl( pVirtual, ReadLength, FALSE, TRUE, Irp);
后加上了
MmProbeAndLockPages(Irp->MdlAddress, Irp->RequestorMode, IoWriteAccess);
但是还是没有改变。

he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-28 17:54
对页面Lock一下试试
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
songybwf
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-28 15:06
毫无头绪啊。各位大侠点拨点拨我吧
songybwf
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-27 18:44
我写的代码如下:
NTSTATUS
ReadCompleteRoutine(
       IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
)
{

ULONG ReadLength = Irp->IoStatus.Information;
PVOID pbuf;
PVOID pVirtual;
PMDL  OriginalMDL;

DbgPrint((\"Entering Read Complete Routine. the length is %d .\\n\", ReadLength));

pbuf = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);


pVirtual = ExAllocatePool( NonPagedPool, ReadLength);
RtlCopyMemory(pVirtual, pbuf, ReadLength);


// 解密,简单的将其ascII值加一
DecryptData(pVirtual, ReadLength);


// save original Mdl
OriginalMDL = Irp->MdlAddress;
Irp->MdlAddress = NULL;


//build the MDL
IoAllocateMdl( pVirtual, ReadLength, FALSE, TRUE, Irp);





if( Irp->PendingReturned )
{

       IoMarkIrpPending( Irp );

}


return Irp->IoStatus.Status;


}

pVirtual里面的东西经过了解密(+1),但是读出来的内容还是原来的阿?我还漏掉了什么步骤吗?
游客

返回顶部