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

如何才能得到MDL描述的各数据块的起始物理地址和长度?

楼主#
更多 发布于:2004-07-21 12:07
一般对于一个IRP,请求的一块内存区域可以用MDL描述,它描述的一块数据区可能在物理上是不连续的。但是我如何才能得到物理上每块数据的物理起始地址和对应的长度?
我找了好久都没有找到这样的函数调用,mmgetphysicaladdress 却只能得到一个物理地址(整个数据块起始虚拟地址的物理地址),却没有长度信息。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-07-21 14:03
一般的X86页长4K.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-21 19:17
感谢楼上大佬提示。但还是有些不清楚。
一个MDL描述了用户的一个数据块(这个数据块可能逻辑上是连续的,但物理上是不连续的)。我现在要执行DMA传输,必须将各物理块的起始地址和对应的长度找到构成一个散列表。将该表的基地止写入对应的寄存器中,然后才能启动DMA操作。但是,我在help文档和DDK的help文档中都没有发现有这样的系统调用。那该怎么办?
游客

返回顶部