ダイレクト I/O と DMA を使用するすべてのドライバーは、アダプター オブジェクトを作成する必要があります。 アダプター オブジェクトは、DMA コントローラー チャネルまたはポート、またはバス マスター デバイスを表します。
2 種類の最下位レベルのドライバーでは、アダプター オブジェクトを使用する必要があります。
システム DMA コントローラーを使用するデバイスのドライバー。 このようなデバイスは 下位デバイス と呼ばれ、「システム (または 下位) DMA を使用する」と言われます。
バス マスター アダプターであるデバイスのドライバー。 このようなデバイスは、I/O バスの使用権を巡ってシステムと調停し、そのためバスマスターDMAを使用します。
ドライバーは、通常、デバイス拡張機能で、アダプター オブジェクトへのポインターの記憶域を提供します。
DMA 転送を実行するために、これらの DMA メソッドのいずれかを使用するデバイスのドライバーは、通常 、AdapterControl ルーチンを持ち、アダプター オブジェクトを操作するシステム提供のサポート ルーチンを呼び出します。 ( AdapterControl ルーチンを必要としないドライバーには、 分散/収集 DMA を使用 するドライバーと 、共通バッファー、バス マスター DMA を使用するものが含まれます)。
デバイスのスタートアップ操作の一環として、DMA 操作を処理するドライバーは I/O マネージャーを呼び出します。このマネージャーは、プラットフォーム固有の HAL を呼び出してアダプター オブジェクトのセットを作成します。 任意の Windows プラットフォームでは、アダプター オブジェクトのセットには、次のアダプター オブジェクトが含まれています。
下位デバイスが接続されている各システム DMA コントローラー チャネルまたはポート。
マシン内の各バス マスター DMA デバイス。
I/O マネージャーと HAL は連携して、デバイスの DMA 機能とシステム構成に基づいて適切なアダプター オブジェクトを割り当てます。
(バス マスター DMA が可能な SCSI デバイスの場合、SCSI ポート ドライバーは、HBA 固有の SCSI ミニポート ドライバーのアダプター オブジェクトを設定します。ミニポート ドライバーの HwScsiFindAdapter ルーチンは、アダプター固有のデータをポート ドライバーに提供します。
ドライバーがアダプター オブジェクトと AdapterControl ルーチンを使用するタイミングと方法の詳細については、このセクションと「Bus-Master DMA の使用」を参照してください。