【问题标题】:IoGetDeviceProperly causes BSODIoGetDeviceProperly 导致 BSOD
【发布时间】:2012-01-28 19:22:14
【问题描述】:

我已经为 Windows 中的硬盘编写了一个过滤器驱动程序(例如 DDK 的 DiskPerf),我需要获取一些有关我的驱动程序连接到它的设备的信息,例如 HardWareID。 我在 IRP_MJ_READ 函数中使用 IoGetDeviceProperly。但是这种方法会导致 BSOD 并且 BSOD 说问题是“IRQL_NO_LESS_OR_EQUAL”。 MSDN 说 DispatchRead 和 IoGetDeviceProperly,都在 PASSIVE_LEVEL 运行。 怎么了? 如何获取有关驱动程序附加到它的设备的信息?

【问题讨论】:

  • 它们不会在被动状态下运行,它们只能在被动状态下正常工作。分页 I/O 请求在 apc 级别运行,您必须避免这些。

标签: windows driver bsod hardware-id


【解决方案1】:

可以在 IRQL = APC_LEVEL 调用 DispatchRead 例程。

Dispatch Routines and IRQLs

调用 IoGetDeviceProperty 并将设备信息保存在 DispatchCreate 中并在 DispatchRead 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2013-03-28
    • 2016-06-10
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多