从其他驱动程序堆栈获取配置信息

有时,需要从设备的配置空间中获取信息,该设备的驱动程序位于驱动程序所在的堆栈以外的堆栈上。 例如,假设你想要在 PCI 到 PCI 网桥的配置空间中设置一个位,并且没有指向网桥 PDO 的指针。 尽管操作系统枚举 PCI 到 PCI 网桥,并为系统上的每个网桥创建 PDO,但它不会为这些设备注册设备接口。 因此,不能使用设备接口机制访问这些网桥的配置空间。 有关设备接口的详细信息,请参阅 设备接口简介

驱动程序访问属于其他驱动程序堆栈的硬件的一种方法是编写筛选器驱动程序。 例如,若要访问网桥硬件,可以设计一个筛选器驱动程序,用于在网桥的配置空间上实现所需的操作。 还必须提供一个 INF 文件,该文件指定网桥硬件的可能硬件 ID,以便 PnP 管理器可以在检测到网桥的设备 ID 时将筛选器驱动程序加载到网桥的驱动程序堆栈中。

或者,可以在设备的共同安装程序中使用 SetupDiXxx 函数以编程方式安装筛选器。

然后,筛选器驱动程序可以使用 BUS_INTERFACE_STANDARD 接口访问网桥。