英語で読む

次の方法で共有


PINITIALIZE_DMA_TRANSFER_CONTEXT コールバック関数 (wdm.h)

InitializeDmaTransferContext ルーチンは、DMA リソースの保留中の割り当てを追跡するために使用される不透明な DMA 転送コンテキストを初期化します。

構文

C++
PINITIALIZE_DMA_TRANSFER_CONTEXT PinitializeDmaTransferContext;

NTSTATUS PinitializeDmaTransferContext(
  [in]  PDMA_ADAPTER DmaAdapter,
  [out] PVOID DmaTransferContext
)
{...}

パラメーター

[in] DmaAdapter

DMA_ADAPTER 構造体へのポインター。 この構造体は、ドライバーのバス マスター DMA デバイスまたはシステム DMA チャネルを表すアダプター オブジェクトです。 呼び出し元は、IoGetDmaAdapter ルーチンへの以前の呼び出しからこのポインターを取得しました。

[out] DmaTransferContext

InitializeDmaTransferContext DMA 転送コンテキストの初期値を書き込む呼び出し元によって割り当てられたバッファーへのポインター。 このコンテキストは、呼び出し元に対して不透明です。 呼び出し元は、DMA 転送コンテキストを格納するのに十分な大きさのバッファーを割り当てる必要があります。 このコンテキストのサイズ (バイト単位) は、Wdm.h ヘッダー ファイルの DMA_TRANSFER_CONTEXT_SIZE_V1 定数によって指定されます。

戻り値

InitializeDmaTransferContext は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 考えられるエラー戻り値には、次の状態コードが含まれます。

リターン コード 形容
STATUS_INVALID_PARAMETERS
呼び出し元によって渡されたパラメーター値が無効であるため、このルーチンは失敗しました。

備考

InitializeDmaTransferContext は、名前で直接呼び出すことができるシステム ルーチンではありません。このルーチンは、DMA_OPERATIONS 構造体で返されたアドレスからのポインターによってのみ呼び出すことができます。ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION3に設定して、IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL 返す場合、このルーチンはプラットフォームでは使用できません。

初期化された DMA 転送コンテキストは、AllocateAdapterChannelExGetScatterGatherListEx、または BuildScatterGatherListEx ルーチン パラメーターとして指定する必要があります。 これらの各ルーチンは、要求された DMA リソース割り当てに関する情報を DMA 転送コンテキストに書き込みます。 この情報は呼び出し元に対して不透明です。 保留中の割り当て要求を取り消すには、呼び出し元が要求の DMA 転送コンテキストを CancelAdapterChannel ルーチンに提供する必要があります。

AllocateAdapterChannelEx GetScatterGatherListEx、または BuildScatterGatherListEx に提供される DMA 転送コンテキストは、すべてのアダプター割り当て要求で一意である必要があります。

必要条件

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

関連項目

AllocateAdapterChannelEx

BuildScatterGatherListEx

CancelAdapterChannel

DMA_ADAPTER

DMA_OPERATIONS

GetScatterGatherListEx する

IoGetDmaAdapter