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 以降で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | <= DISPATCH_LEVEL |