terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1372回复:4

NT下,用DriverWorks请问如何将系统虚拟地址转换为总线地址?

楼主#
更多 发布于:2004-07-17 09:03
我写一个nt下的driver,在执行dma操作前要将一个总线地址写入相应的寄存器中,请问如何将一个系统虚拟地址转换为总线地址?
    另外请问一下,有谁开发过用分散/集中方式执行dma的驱动,请问如何实现?有源码么?
    非常感谢!
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-17 11:31
应该叫做物理地址,总线地址好像有点区别奥,可以构造MDL
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
myswin
驱动小牛
驱动小牛
  • 注册日期2003-10-13
  • 最后登录2005-11-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-18 10:10
我也想做啊,分散/集中方式,
terrace,交流交流啊~~~~~`
=========== D =========== R =========== I =========== V =========== E ---------抵制日货-------
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-19 16:08
我查了下NT DDK的help文档,里面有个函数MmGetPhysicalAddress,返回一个PHYSICAL_ADDRESS类型的地址,这样可以将系统虚拟地址转换为物理地址吧?
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-19 20:45
一般对于一个IRP,请求的一块内存区域可以用MDL描述,它描述的一块数据区可能在物理上是不连续的。但是我如何才能得到物理上每块数据的物理起始地址和对应的长度?
    我找了好久都没有找到这样的函数调用,mmgetphysicaladdress 却只能得到一个物理地址(整个数据块起始虚拟地址的物理地址),却没有长度信息。
     请问哪位大虾知道如何得到?


游客

返回顶部