阅读:1448回复:0
[已解决]MDL包含进程号吗?
因为MmGetMdlVirtualAddress得到的是用户地址空间的地址,而在驱动派遣函数中调用这个这个函数时,可以能已经以别的进程了,那么MmGetSystemAddressForMdlSafe一定要知道MmGetMdlVirtualAddress得到的地址属于哪个进程,这样它才能找到被映射的物理内存,并在内核空间中重新映射。
感觉有点复杂,不知道是不是这样的? 唉,查了一下MDL 结构 typedef __struct_bcount(Size) struct _MDL { struct _MDL *Next; CSHORT Size; CSHORT MdlFlags; struct _EPROCESS *Process; PVOID MappedSystemVa; PVOID StartVa; ULONG ByteCount; ULONG ByteOffset; } MDL, *PMDL; 果然有所属进程,感觉MDL直接存物理地址更好。 |
|