PCANCEL_MAPPED_TRANSFER コールバック関数 (wdm.h)
CancelMappedTransfer ルーチンは、現在アダプターにマップされているシステム DMA 転送を取り消します。
構文
PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;
NTSTATUS PcancelMappedTransfer(
[in] PDMA_ADAPTER DmaAdapter,
[in] PVOID DmaTransferContext
)
{...}
パラメーター
[in] DmaAdapter
DMA_ADAPTER 構造体へのポインター。 この構造体は、保留中の DMA 転送の完了を待機しているアダプター オブジェクトです。 呼び出し元は、IoGetDmaAdapter ルーチンへの以前の呼び出しからこのポインターを取得し、呼び出し元は DMA 転送のマップ レジスタを設定する MapTransferEx 呼び出しにこのポインターを渡しました。
[in] DmaTransferContext
DMA 転送コンテキストへのポインター。 このパラメーター値は、アダプター チャネルの割り当てを要求した AllocateAdapterChannelEx 呼び出しに渡されたのと同じ DMA 転送コンテキストである必要があります。
戻り値
CancelMappedTransfer は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー コードが返されます。
備考
CancelMappedTransfer は、名前で直接呼び出すことができるシステム ルーチンではありません。このルーチンは、DMA_OPERATIONS 構造体で返されたアドレスからのポインターによってのみ呼び出すことができます。ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION3に設定して、IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL 返す場合、このルーチンはプラットフォームでは使用できません。
このルーチンは、関連付けられている転送コンテキストを取り消し済みとしてマークします。これにより、このコンテキストの下でそれ以上の転送ができなくなります。 転送が取り消されると、その完了ルーチンが呼び出されますが、転送の状態が DmaCancelled に設定される場合があります。
システム DMA 転送が取り消されるか完了したかに関係なく、FlushAdapterBuffers または FlushAdapterBuffersEx ルーチンを常に呼び出して、DMA 転送操作の終了時にシステム DMA コントローラーの内部キャッシュに残っているデータをフラッシュする必要があります。 転送が取り消されるか完了した後、DMA チャネルが解放されるか、MapTransferEx ルーチンが呼び出されて新しい DMA 転送のマップ レジスタを設定する前に、FlushAdapterBuffersXxx 呼び出しが行われる必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 以降で使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | <= DISPATCH_LEVEL |
関連項目
AllocateAdapterChannelEx の
FlushAdapterBuffersEx の
InitializeDmaTransferContext の
IoGetDmaAdapter の