MDL的困扰! 敬请各位前辈赐教!
刚刚接触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的虚拟地址对应的物理地址空间