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

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

楼主#
更多 发布于:2004-07-21 12:07
一般对于一个IRP,请求的一块内存区域可以用MDL描述,它描述的一块数据区可能在物理上是不连续的。但是我如何才能得到物理上每块数据的物理起始地址和对应的长度?
我找了好久都没有找到这样的函数调用,mmgetphysicaladdress 却只能得到一个物理地址(整个数据块起始虚拟地址的物理地址),却没有长度信息。
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文档中都没有发现有这样的系统调用。那该怎么办?
游客

返回顶部