soarstar
驱动小牛
驱动小牛
  • 注册日期2005-03-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望271点
  • 贡献值0点
  • 好评度209点
  • 原创分0分
  • 专家分0分
阅读:1466回复:2

请教几个概念~~

楼主#
更多 发布于:2007-03-20 21:38
  在看声卡驱动的过程中
TransBusAddrToStatic()是将PCI总线地址转化为一个物理系统地址,然后创建一个静态的、独立于进程的虚拟地址映射
HalTranslateBusAddress()是将PCI物理总线地址转化为物理系统地址
MmMapIoSpace()是将CPI物理地址空间映射为一个不分页的、进程相关的虚拟地址空间

我想问问:
1. 什么是PCI总线地址?什么有时物理系统地址?
2. TransBusAddrToStatic()和MmMapIoSpace()创建的虚拟地址空间有何不同?

实在有些糊涂?请大家指教?
Email:xj_yeah@163.com
milkyway1888
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2011-05-07
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望97点
  • 贡献值0点
  • 好评度91点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-21 10:30
我的理解是
1.PCI总线地址指的是寄存器在PCI上的偏移量,而系统地址指寄存器在CPU上的绝对编址.
2.TransBusAddrToStatic()是把总线物理地址直接转化成虚拟地址,它里头调用了HalTranslateBusAddress(用来把总线物理地址转成系统物理地址)和MmMapIoSpace(把系统物理地址转化成虚拟地址).其中的虚拟地址应该都是当前进程的.

至于总线地址和系统地址的关系我也不大明白,请XD们指教.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-03 17:30
调用的应该是 CreateStaticMapping(),创建用于内核使用的 静态地址。
游客

返回顶部