阅读:2212回复:3
如何把虚拟地址转换成物理地址(最方便的方法)
9054由local端发起的DMA操作需要物理地址,但在应用软件中得到得地址都是虚拟地址。
有什么方便的方法把虚拟地址转换成物理地址哪? 还有连续的虚拟地址对应的物理地址是连续的么? |
|
沙发#
发布于:2004-06-24 08:32
WDM中可以使用MmGetPhysicalAddress得到物理地址。
连续的虚拟地址对应的物理地址不一定是连续的 |
|
|
板凳#
发布于:2004-06-24 23:06
最简便的办法就是驱动通过DmaAdapter.AllocateBuffer申请一块物理连续的内存做DMA用,应用层通过拷贝该buffer的内容来传递数据。
还有一个办法就是使用DirectIO,直接利用应用层的buffer, 利用MmProbeAndLockPages来取得Buffer的MDL,然后从中拿到物理地址来传输数据 |
|
地板#
发布于:2004-06-25 13:44
谢谢,给分了,一人20
不过我已经找到简便的方法了。用windriver的wd_dmalock函数 不过好像只能分配到1M的内存。。。(: |
|