ScsiPortIoMapTransfer 関数 (srb.h)

ScsiPortIoMapTransfer ルーチンは、下位 HBA を介してデータを転送するミニポート ドライバーのシステム DMA コントローラーを設定します。

メモ SCSI ポート ドライバーと SCSI ミニポート ドライバー モデルは、今後変更または使用できない可能性があります。 代わりに、 Storport ドライバー モデルと Storport ミニポート ドライバー モデルを使用することをお勧めします。
 

構文

SCSIPORT_API VOID ScsiPortIoMapTransfer(
  [in] PVOID               HwDeviceExtension,
  [in] PSCSI_REQUEST_BLOCK Srb,
  [in] PVOID               LogicalAddress,
  [in] ULONG               Length
);

パラメーター

[in] HwDeviceExtension

ハードウェア デバイス拡張機能へのポインター。 これは、ポート ドライバーが割り当て、ミニポート ドライバーの代わりに初期化する HBA ごとの記憶域です。 ミニポート ドライバーは通常、HBA の状態や HBA のマップされたアクセス範囲など、この拡張機能に HBA 固有の情報を格納します。 この領域は、ミニポート ドライバーが ScsiPortInitialize を呼び出した直後に、HBA のデバイス オブジェクトの DeviceExtension-HwDeviceExtension> メンバーのミニポート ドライバーで使用できます。 ポート ドライバーは、デバイスを削除すると、このメモリを解放します。

[in] Srb

DMA 転送の SCSI 要求ブロックへのポインター。

[in] LogicalAddress

転送操作の開始アドレスを指定します。 この値には、データの転送先または転送元となるバッファーのベース アドレスを指定できます。 この値には、このようなバッファー内のオフセットを指定できます。

[in] Length

転送するバイト数を指定します。

戻り値

なし

解説

システム DMA コントローラー (下位 DMA) を使用する HBA のミニポート ドライバーのみが ScsiPortIoMapTransfer を呼び出します。 このようなミニポート ドライバーがデータを転送する HBA を設定する前に、このルーチンを呼び出す必要があります。 LogicalAddressLength で指定される範囲は、指定された SRB によって記述されたバッファー内にある必要があります。

オペレーティング システム固有のポート ドライバーがシステム DMA コントローラーをプログラムした後、ミニポート ドライバーの HwScsiDmaStarted ルーチンを 呼び出します。 HwScsiDmaStarted は 、HBA をプログラムしてデータ転送を開始する必要があります。 HBA は、ミニポート ドライバーの ScsiPortIoMapTransfer への呼び出しと、ミニポート ドライバーの HwScsiDmaStarted ルーチンへのオペレーティング システム固有のポート ドライバーの呼び出しの間で中断できることに注意してください。

要件

要件
対象プラットフォーム デスクトップ
Header srb.h (Miniport.h、Scsi.h を含む)
Library Scsiport.lib

こちらもご覧ください

HwScsiDmaStarted

ScsiPortFlushDma