MDL的困扰! 敬请各位前辈赐教!

skyler2008 skyler2008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚刚接触Windows驱动, 对其中的MDL的用法存有较多疑惑, 敬请各位高手赐教!

virtualAddress = MmGetMdlVirtualAddress(pIrp->MdlAddress);
totalLength = MmGetMdlByteCount(pIrp->MdlAddress);

mdl = IoAllocateMdl(virtualAddress, totalLength, FALSE, FALSE, NULL )
==>是否可以理解为:
分配一个空的MDL空间(不赋值), 使该结构体的空间大小能描述从 virtualAddress开始,长度为totalLength的虚拟内存空间所对应的物理地址空间

IoBuildPartialMdl((PVOID)pIrp->MdlAddress,
mdl,
(PVOID) NewVirtualAddress,
NewVirtualAddressLen);
==>是否可以理解为:
使mdl能描述一个物理地址空间, 该空间为pIrp->MdlAddress中描述的从NewVirtualAddress开始,长度为NewVirtualAddressLen的虚拟地址对应的物理地址空间
...全文
评论 1
收藏 已收藏
分享
返回顶部