阅读:1380回复:4
NT下,用DriverWorks请问如何将系统虚拟地址转换为总线地址?
我写一个nt下的driver,在执行dma操作前要将一个总线地址写入相应的寄存器中,请问如何将一个系统虚拟地址转换为总线地址?
另外请问一下,有谁开发过用分散/集中方式执行dma的驱动,请问如何实现?有源码么? 非常感谢! |
|
沙发#
发布于:2004-07-19 16:08
我查了下NT DDK的help文档,里面有个函数MmGetPhysicalAddress,返回一个PHYSICAL_ADDRESS类型的地址,这样可以将系统虚拟地址转换为物理地址吧?
|
|
板凳#
发布于:2004-07-19 20:45
一般对于一个IRP,请求的一块内存区域可以用MDL描述,它描述的一块数据区可能在物理上是不连续的。但是我如何才能得到物理上每块数据的物理起始地址和对应的长度?
我找了好久都没有找到这样的函数调用,mmgetphysicaladdress 却只能得到一个物理地址(整个数据块起始虚拟地址的物理地址),却没有长度信息。 请问哪位大虾知道如何得到? |
|