PINITIALIZE_DMA_TRANSFER_CONTEXT コールバック関数 (wdm.h)
InitializeDmaTransferContext ルーチンは、DMA リソースの保留中の割り当てを追跡するために使用される不透明な DMA 転送コンテキストを初期化します。
構文
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を返します。 エラーの戻り値として考えられるのは、次の状態コードです。
リターン コード | 説明 |
---|---|
|
呼び出し元によって渡されたパラメーター値が無効であるため、このルーチンは失敗しました。 |
注釈
InitializeDmaTransferContext は、名前で直接呼び出すことができるシステム ルーチンではありません。このルーチンは、DMA_OPERATIONS構造体で返されるアドレスからのポインターによってのみ呼び出すことができます 。 ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION3に設定して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL を返す場合、このルーチンはプラットフォームでは使用できません。
初期化された DMA 転送コンテキストは、 AllocateAdapterChannelEx、 GetScatterGatherListEx、または BuildScatterGatherListEx ルーチンのパラメーターとして指定 する 必要があります。 これらの各ルーチンは、要求された DMA リソース割り当てに関する情報を DMA 転送コンテキストに書き込みます。 この情報は、呼び出し元に対して不透明です。 保留中の割り当て要求を取り消すには、呼び出し元が CancelAdapterChannel ルーチンに要求の DMA 転送コンテキストを指定する必要があります。
AllocateAdapterChannelEx、GetScatterGatherListEx、または BuildScatterGatherListEx に提供される DMA 転送コンテキストは、すべてのアダプター割り当て要求で一意である必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | <= DISPATCH_LEVEL |