IEEE 1394 ドライバー スタック

次の図は、新しい 1394 バス ドライバーと Microsoft がサポートする 1394 クライアント ドライバーを備えた IEEE 1394 ドライバー スタックを示しています。

diagram illustrating the ieee 1394 driver stack.

IEEE 1394 バス ドライバーに接続するデバイスのクライアント ドライバーは、IEEE 1394 ドライバー スタックの上に配置されます。 バス ドライバーは、IEEE 1394 バスにハードウェアに依存しないインターフェイスを提供します。 デバイス ドライバーは、IEEE 1394 バス ドライバーによって処理される IRP を送信することによって、デバイスと通信します。 Windows 7 より前のバス ドライバーは、ポート ドライバー (1394bus.sys) とマザーボードのホスト コントローラー (ochi1394.sys) のプライマリ ミニポート ドライバーの組み合わせでした。 Windows 7 以降のバージョンでは、レガシ ポート/ミニポート バス ドライバーは、カーネル モード ドライバー フレームワーク (KMDF) を使用して実装されるモノリシック IEEE 1394 バス ドライバーである1394ohci.sysに置き換えられます。 1394ohci.sysバスドライバは、従来の1394バスドライバと完全に下位互換性があります。 新しいバス ドライバーと従来の 1394 バス ドライバーの動作の既知の違いの詳細については、Windows 7 の IEEE 1394 バス ドライバーを参照してください。

次の図は、レガシ ドライバーと新しい 1394 バス ドライバーの関係を示しています。

Diagram showing the relationship between the legacy and the new 1394 bus drivers.

バスに接続されているデバイスにコマンドを発行するには、ドライバーは、コントロール コード IOCTL_1394_CLASSを使用して、IRP_MJ_DEVICE_CONTROL IRP を発行します。 ドライバーは、IEEE 1394 I/O 要求ブロック (IRB) のパラメーターをパッケージ化し、IRP の Parameters.Others.Argument1 メンバーにポインターを渡します。 IRB の FunctionNumber メンバーは操作の種類を決定し、 u メンバーは操作を記述します。 バス ドライバーは、IOCTL_1394_CLASS IRP を使用して、バスとホスト コントローラーの両方にインターフェイスを表示します。

IRB 構造体には、各バス要求と要求固有のパラメーターに適用されるパラメーターが含まれています。 IRB の u メンバーには、要求固有のパラメーターが、要求の種類ごとに 1 つずつ、データ構造の和集合に含まれています。

通常の操作中、ドライバーは通常の I/O 要求 ( IRP_MJ_READ など) を受け取り、適切な IEEE 1394 操作に変換し、IOCTL_1394_CLASSを介してその操作をデバイスにディスパッチします。

Windows 7 の IEEE 1394 バス ドライバー