我已经为Windows中的硬盘(如DDK的DiskPerf)编写了筛选器驱动程序,我需要获取有关驱动程序所连接的设备的一些信息,例如HardWareID。我在IRP_MJ_READ函数中使用IoGetDeviceProperly。但是此方法会导致BSOD,而BSOD表示问题是“ IRQL_NO_LESS_OR_EQUAL”。 MSDN说DispatchRead和IoGetDeviceProperly都在PASSIVE_LEVEL上运行。怎么了?如何获取有关驱动程序已连接到的设备的信息?
DispatchRead例程可以在IRQL = APC_LEVEL处调用。
请参见Dispatch Routines and IRQLs
调用IoGetDeviceProperty并将设备信息保存在DispatchCreate中,并在DispatchRead中使用它。