その他のドライバー スタックからの構成情報の取得
自身が使用しているドライバーがあるスタックではないスタックにドライバーがあり、そのドライバーで動作しているデバイスの構成領域から情報を取得する必要があることが考えられます。 たとえば、PCI - PCI ブリッジの構成空間にビットを設定する必要があるものの、そのブリッジの PDO へのポインターがない場合が該当します。 オペレーティング システムによってシステム上にある PCI - PCI ブリッジが列挙され、そのすべてのブリッジに対する PDO が作成されますが、それらのデバイスのデバイス インターフェイスは登録されません。 したがって、デバイス インターフェイス メカニズムを使用して、これらのブリッジの構成空間にアクセスすることはできません。 デバイス インターフェイスの詳細については「デバイス インターフェイス クラスの概要」を参照してください。
あるドライバーから他のドライバー スタックに属するハードウェアにアクセスする手段として、フィルター ドライバーを記述する方法があります。 たとえば、ブリッジ ハードウェアにアクセスするために、必要な操作をそのブリッジの構成空間に実装するフィルター ドライバーを設計できます。 また、ブリッジのハードウェアに設定できるハードウェア ID を指定する INF ファイルも用意する必要があります。このファイルにより、ブリッジのデバイス ID を検出した PnP マネージャーが、そのブリッジのドライバー スタックにフィルター ドライバーを読み込むことができます
また、デバイスの共同インストーラーで SetupDiXxx 関数を使用してプログラム処理でフィルターをインストールすることもできます。
これにより、フィルター ドライバーは、BUS_INTERFACE_STANDARD インターフェイスを使用してブリッジにアクセスできます。