阅读:1558回复:1
弱弱的问:如何正确获得systembuffer的MDL?
场景是这样的.我要做一个使用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传入数据呢? 第一次发帖, 谢谢. |
|
沙发#
发布于:2013-01-08 11:01
自问自答, 用DeviceIoControl的输出缓冲区送入大BUFFER, 在内核直接可以使用Irp->MdlAddress.
|
|