barton_iou
驱动牛犊
驱动牛犊
  • 注册日期2002-10-17
  • 最后登录2002-11-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1510回复:2

Isa卡中自带RAM如何在ring3层程序中直接读写?

楼主#
更多 发布于:2002-11-07 14:59
我有一块Isa卡,其自己带有一段RAM,我自己想这样,可以吗?
1。HalTranslateBusAddress();把总线相关的物理地址转换成系统空间的物理地址;
2。MmMapIoSpace();把系统空间的物理地址映射到虚拟地址空间;
3。置DO_DIRECT_IO位。设置驱动程序和ring3层应用程序之间的内存访问方式。

还有一个问题,我看ddk下的mapmem例子后,有个疑问:
InitializeObjectAttributes()
ZwOpenSection()
ObReferenceObjectByHandle()
ZwMapViewOfSection()
它调用这些函数在干些什么勾当?

它为什么把开始和结束物理地址分别映射,而不只映射开始的物理地址?结束的地址可以直接用开始的地址加地址长度啊?
 :( :(  
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-23 20:48
不一定!
因为win好像将4K定为一个页,如果你的内存过大,它可能被分成多个页,页页之间的虚拟地址可不一定是连续的!
rkt_001
驱动牛犊
驱动牛犊
  • 注册日期2002-11-19
  • 最后登录2004-03-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-19 17:03
我也有类似的问题,
学习中。。。。。
游客

返回顶部