【问题标题】:MDL data is corrupted in storage filter driver存储过滤器驱动程序中的 MDL 数据已损坏
【发布时间】:2012-10-15 07:48:15
【问题描述】:

我正在开发低级 (SCSI) 存储过滤器驱动程序。驱动程序拦截读取 IO 并将数据以较小的块写入其他位置。 在极少数情况下,驱动程序读取的数据已损坏。 驱动的流程是这样的:

  1. 接收 IRP 和 MDL
  2. 使用 IoBuildPartialMdl() 函数构建驱动程序 IRP 和 MDL。
  3. 发送原始 IRP 并等待响应。
  4. 使用“自定义”构建 MDL 发送驱动程序 IRP
  5. 等待响应并回复上层。

在第 4 步中,数据有时会损坏。需要说的是,并非所有数据都已损坏,并且通常在不久之前对该数据有单独的 IO 请求。 这里发生了什么?我使用的 MDL 是否不正确?

【问题讨论】:

    标签: windows memory-management driver


    【解决方案1】:

    显然,MDL 可能包含数据将被损坏的间隙。正确的解决方法是复制数据。 http://msdn.microsoft.com/en-us/library/windows/hardware/gg463193.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2016-06-21
      • 2020-07-14
      • 1970-01-01
      • 2017-05-24
      相关资源
      最近更新 更多