Windows IOGetDevice会导致BSOD

Windows IOGetDevice会导致BSOD,windows,driver,bsod,hardware-id,Windows,Driver,Bsod,Hardware Id,我已经为Windows中的硬盘编写了一个过滤驱动程序(比如DDK的DiskPerf),我需要获得一些关于驱动程序所连接的设备的信息,例如HardWareID。 我在IRP_MJ_READ函数中正确使用了iogetDevice。但这种方法会导致BSOD,BSOD说问题是“IRQL不小于或等于”。MSDN称DispatchRead和IOGetDevice运行正常,均处于被动_级别。 怎么了? 如何获取驱动程序连接到的设备的信息?可以在IRQL=APC\U级别调用DispatchRead例程 看 调用

我已经为Windows中的硬盘编写了一个过滤驱动程序(比如DDK的DiskPerf),我需要获得一些关于驱动程序所连接的设备的信息,例如HardWareID。 我在IRP_MJ_READ函数中正确使用了iogetDevice。但这种方法会导致BSOD,BSOD说问题是“IRQL不小于或等于”。MSDN称DispatchRead和IOGetDevice运行正常,均处于被动_级别。 怎么了?
如何获取驱动程序连接到的设备的信息?

可以在IRQL=APC\U级别调用DispatchRead例程


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

可以在IRQL=APC\U级别调用DispatchRead例程


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

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