soogood130
驱动牛犊
驱动牛犊
  • 注册日期2012-06-20
  • 最后登录2013-01-25
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1462回复:1

弱弱的问:如何正确获得systembuffer的MDL?

楼主#
更多 发布于:2012-12-14 23:14
场景是这样的.我要做一个使用wsk发送UDP的小驱动, 使用DeviceIoControl 的METHOED_IN_DIRECT发送一块数据进入内核?而WskSendTo函数需要的是一个MDL, 为了减少内存拷贝, 我调用IoAllocateIrp创建一个irp,使用IoAllocateMdl为irp->associatedIrp->systembuffer创建一个MDL并与这个irp关联上,之后调用MmBuildMdlForNonPagedPool. 最后发送完成, 在这个irp的完成函数中IoFreeMdl, IoFreeIrp. 但是调用IoFreeMdl时就蓝了.
如何正确的获得systembuffer的mdl并最终清除? 还是不应该这样传输数据? 如何使用irp->MdlAddress传入数据呢?
第一次发帖, 谢谢.
soogood130
驱动牛犊
驱动牛犊
  • 注册日期2012-06-20
  • 最后登录2013-01-25
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-01-08 11:01
自问自答, 用DeviceIoControl的输出缓冲区送入大BUFFER, 在内核直接可以使用Irp->MdlAddress.
游客

返回顶部