fanzi
驱动小牛
驱动小牛
  • 注册日期2004-12-09
  • 最后登录2013-12-19
  • 粉丝1
  • 关注0
  • 积分1004分
  • 威望754点
  • 贡献值0点
  • 好评度93点
  • 原创分0分
  • 专家分0分
阅读:4606回复:2

请教有关IoBuildPartialMdl

楼主#
更多 发布于:2007-11-26 11:26
MSDN上数IoBuildPartialMdl 创建一个已存在MDL的子MDL 。不是很明白,执行了IoAllocateMdl,为啥还要执行IoBuildPartialMdl 呢?
在bulusb中有这样的代码。
mdl = IoAllocateMdl((PVOID) virtualAddress,
                        totalLength,
                        FALSE,
                        FALSE,
                        NULL);
。。。。。

    IoBuildPartialMdl(Irp->MdlAddress,
                      mdl,
                      (PVOID) virtualAddress,
                      stageLength);

可不可以写成这样呢??
mdl = IoAllocateMdl((PVOID) virtualAddress,
                        stageLength,
                        FALSE,
                        FALSE,
                        NULL);
张帆的内核学习论坛 http://bbs.kerneldev.com
bamu1984z
驱动牛犊
驱动牛犊
  • 注册日期2006-09-18
  • 最后登录2008-07-24
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望78点
  • 贡献值0点
  • 好评度76点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-12-11 22:45
IoAllocateMdl:
Allocates an MDL for a buffer, given the starting virtual address of the buffer and its length.
This routine does not associate the physical pages in the buffer with the allocated MDL. To do so, the driver must call MmBuildMdlForNonPagedPool, IoBuildPartialMdl, or MmProbeAndLockPages.  

这个函数没有把对应物理页的内容填入~~~
flipflop
驱动牛犊
驱动牛犊
  • 注册日期2003-06-20
  • 最后登录2018-03-24
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望213点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2013-06-24 10:12
IoAllocateMdl 后不执行IoFreeMdl 会不会导致内存泄露等问题? 我看到WDK中的Example有的执行有的不执行。
游客

返回顶部