ダイレクト 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 ルーチンを使用するタイミングと方法の詳細については、このセクションと「Bus-Master DMA の使用」を参照してください。