访问设备配置空间 - 赢取内核PCI设备

时间:2012-07-05 23:11:15

标签: windows kernel device-driver wdk pci

我正在编写获取pci设备的方法,以编程方式给出供应商ID,设备ID(就像来自Linux内核的pci_get_device)。

为此,我需要获取设备对象配置。我从这里读到了相同的内容:http://msdn.microsoft.com/en-us/library/windows/hardware/ff558707(v=vs.85).aspx

现在为了测试这个,我制作了假的驱动程序服务安装框架,它将安装我的I / O设备驱动程序,在DriverEntry中,我可以测试这个PCI功能。

但OS在

处与irql_not_less_or_equal崩溃
irp = IoBuildSynchronousFsdRequest(IRP_MJ_PNP,
                                       targetObject,
                                       NULL,
                                       0,
                                       NULL,
                                       &event,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> &ioStatusBlock);

任何人都可以告诉我这有什么问题,(我是从Driver Entry调用它,并传递当前安装驱动程序的deviceObject。)

1 个答案:

答案 0 :(得分:0)

DriverEntry()中没有有效的PDO。 DriverEntry大致对应于用户空间应用程序中的main(),并在驱动程序加载到内存后首先调用。 DriverEntry的主要目的是向操作系统注册驱动程序,其代码独立于实际设备。只有在操作系统调用了初始化回调之后(在识别出设备之后)才能拥有PDO - 并且在DriverEntry完成后调用回调(实际上,回调应作为驱动程序注册的一部分提供给操作系统) DriverEntry())。