アダプター オブジェクトの概要

ダイレクト I/O と DMA を使用するすべてのドライバーは、アダプター オブジェクトを作成する必要があります。 アダプター オブジェクトは、DMA コントローラー チャネルまたはポート、あるいはバス マスター デバイスを表します。

2 種類の最下位レベルのドライバーでは、アダプター オブジェクトを使用する必要があります。

  • システム DMA コントローラーを使用するデバイスのドライバー。 このようなデバイスは下位デバイスと呼ばれ、「システム (または下位) DMA を使用する」と言われます。

  • バス マスター アダプターであるデバイスのドライバー。 このようなデバイスは、I/O バスの使用をシステムと判断し、バス マスター DMA を使用します。

ドライバーは、通常、デバイス拡張機能で、アダプター オブジェクトへのポインターのストレージを提供します。

DMA 転送を実行するため、これらの DMA メソッドのいずれかを使用するデバイスのドライバーは、通常、AdapterControl ルーチンを持ち、アダプター オブジェクトを操作するシステム提供のサポート ルーチンを呼び出します。 (AdapterControl ルーチンを必要としないドライバーには、スキャッター/ギャザー DMA を使用するものと、共通バッファー、バス マスター DMA を使用するものが含まれます)。

デバイス起動操作の一環として、DMA 操作を処理するドライバーは I/O マネージャーを呼び出します。その後、このマネージャーは、プラットフォーム固有の HAL を呼び出してアダプター オブジェクトのセットを作成します。 どの Windows プラットフォームでも、一連のアダプター オブジェクトには通常、以下のアダプター オブジェクトが含まれています。

  • 下位デバイスが接続されている各システム DMA コントローラー チャネルまたはポート。

  • マシン内の各バス マスター DMA デバイス。

(バス マスター DMA が可能な SCSI デバイスの場合、SCSI ポート ドライバーは、HBA 固有の SCSI ミニポート ドライバーのアダプター オブジェクトを設定します。ミニポート ドライバーの HwScsiFindAdapter ルーチンは、アダプター固有のデータをポート ドライバーに提供します)。

ドライバーがアダプター オブジェクトと AdapterControl ルーチンを使用するタイミングと方法について詳しくは、このセクションと「バス マスター DMA の使用」をご覧ください。

デバイス ドライバーのための DMA 再マッピングを有効にする