次の方法で共有


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 を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapterNULL を返す場合、このルーチンはプラットフォームでは使用できません。

このルーチンは、関連付けられている転送コンテキストを取り消し済みとしてマークします。これにより、このコンテキストでのそれ以上の転送は禁止されます。 転送が取り消されると、その完了ルーチンが呼び出されますが、転送の状態が DmaCancelled に設定される場合があります。

システム DMA 転送が取り消されたか完了したかに関係なく、 FlushAdapterBuffers または FlushAdapterBuffersEx ルーチンを常に呼び出して、DMA 転送操作の最後にシステム DMA コントローラーの内部キャッシュに残っているデータをフラッシュする必要があります。 転送が取り消されるか完了した後、DMA チャネルが解放されるか、MapTransferEx ルーチンが呼び出されて新しい DMA 転送のマップ レジスタを設定する前に、FlushAdapterBuffersXxx 呼び出しが行われる必要があります。

要件

要件
サポートされている最小のクライアント Windows 8 以降で使用できます。
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx