バス ドライバー

バス ドライバー は、バス コントローラー、アダプター、またはブリッジをサービスします (考えられるドライバーレイヤー の図を参照してください)。 Microsoft では、PCI、PnpISA、SCSI、USB など、最も一般的なバス用のバス ドライバーを提供しています。 その他のバス ドライバーは、IHVまたはOEMによって提供できます。 バス ドライバーは必須のドライバーであり、マシン上のバスの種類ごとに 1 つのバス ドライバーがあります。 マシン上に同じ種類のバスが複数ある場合、バス ドライバーは複数のバスにサービスを提供できます。

バス ドライバーの主な役割は次のとおりです。

  • バス上のデバイスを列挙します。

  • プラグ アンド プレイ IRP と電源管理 IRP に応答します。

  • バスへの多重アクセス (一部のバスの場合)。

  • バス上のデバイスを一般的に管理します。

バスのドライバーは、基本的に子も列挙する ファンクション ドライバー です。

列挙中に、バス ドライバーは、そのバス上のデバイスを識別し、それらのデバイス オブジェクトを作成します。 (デバイス オブジェクトの詳細については、 デバイス オブジェクトとデバイス スタック)。バス ドライバーが接続されているデバイスを識別するために使用する方法は、特定のバスによって異なります。

バス ドライバーは、デバイスの電源状態を物理的に変更するデバイス レジスタにアクセスするなど、バス上のデバイスに代わって特定の操作を実行します。 たとえば、デバイスがスリープ状態になると、バス ドライバーはデバイスを適切なデバイスの電源状態にするようにデバイス レジスタを設定します。

ただし、バス ドライバーは、そのバスに接続されている子デバイスの読み取りと書き込みの要求を処理しないことに注意してください。 子デバイスに対する読み取りと書き込みの要求は、子デバイスの 関数ドライバーによって処理されます。 子デバイスが 未加工モード で使用されている場合にのみ、親バス ドライバーはデバイスの読み取りと書き込みを処理します。

バス ドライバーは、そのコントローラー、アダプター、またはブリッジのファンクション ドライバーとして機能するため、これらのコンポーネントのデバイス電源ポリシーも管理します。

バス ドライバーは、SCSI ポート/ミニポート ドライバー ペアが SCSI ホスト バス アダプター (HBA) を駆動する方法として、ドライバーとミニドライバーのペアとして実装できます。 このようなドライバー ペアでは、ミニドライバーは 2 番目のドライバー (DLL) にリンクされます。