DMA_CHANNEL_ALLOCATE_HANDLERコールバック関数 (netdma.h)
Windows 8以降。
構文
DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;
NTSTATUS DmaChannelAllocateHandler(
[in] PVOID ProviderContext,
[in] PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
[in] PVOID NetDmaChannelHandle,
[out] PVOID *pProviderChannelContext
)
{...}
パラメーター
[in] ProviderContext
DMA プロバイダーのコンテキスト領域を識別するポインター。 DMA プロバイダー ドライバーは、 への呼び出しでこのハンドルを NetDMA インターフェイスに渡します。 NetDmaRegisterProvider 関数。
[in] ChannelParameters
へのポインター NET_DMA_CHANNEL_PARAMETERS DMA チャネルの構成パラメーターを定義する構造体です。
[in] NetDmaChannelHandle
DMA チャネルを識別するハンドル。 プロバイダー ドライバーは、このハンドルを NetDmaXxx 関数に渡して、DMA チャネルを識別します。
[out] pProviderChannelContext
DMA チャネルの DMA プロバイダーのコンテキスト領域へのポインターである値へのポインター。 DMA プロバイダー ドライバーは、 ProviderAllocateDmaChannel から戻る前に、このコンテキスト領域を割り当てます。 NetDMA は、プロバイダー チャネル コンテキストを必要とする ProviderXxx 関数にコンテキスト領域ポインターを渡します。
戻り値
ProviderAllocateDmaChannel は 、次のいずれかの状態値を返します。
リターン コード | 説明 |
---|---|
|
操作は正常に完了しました。 |
|
リソースが不足しているため、操作が失敗しました。 |
|
指定されていない理由で操作が失敗しました。 |
注釈
NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderAllocateDmaChannel 関数を呼び出して、DMA チャネルを割り当てます。 NetDMA インターフェイスは、DMA チャネルを使用する前に ProviderAllocateDmaChannel を呼び出します。
DMA プロバイダー ドライバーは、 の ProcessorAffinityMask メンバーで指定されたビットと一致する割り込み CPU アフィニティを持つ DMA チャネルを割り当てようとします。ChannelParameters パラメーターで構造体をNET_DMA_CHANNEL_PARAMETERSします。 MSI-X がサポートされていない場合、または MSI-X がサポートされているが、割り込み CPU アフィニティが一致する DMA チャネルが使用できない場合、DMA プロバイダー ドライバーは使用可能な DMA チャネルを割り当て、 KeSetTargetProcessorDpc ルーチンを呼び出して、指定されたアフィニティ マスク ビットのいずれかに一致するように割り込み DPC のターゲット CPU を設定します。
DMA プロバイダーは常に、DMA チャネルの割り込み DPC に関連付けられている CPU 番号を、NET_DMA_CHANNEL_PARAMETERS構造体の CpuNumber メンバーの NetDMA インターフェイスに返します。
DMA プロバイダー ドライバーは、ProviderAllocateDmaChannel の pProviderChannelContext パラメーターで、ドライバーによって割り当てられたコンテキスト情報のブロックへのポインターを提供します。 このコンテキスト領域には、DMA チャネルに関する情報が格納されます。 NetDMA インターフェイスは、DMA チャネル コンテキストを必要とする ProviderXxx 関数への後続の呼び出しでコンテキスト情報を渡します。
NetDMA インターフェイスが ProviderAllocateDmaChannel を呼び出すと、 NetDmaChannelHandle パラメーターでハンドルが提供されます。 DMA プロバイダー ドライバーは、DMA チャネルに関連付けられている NetDmaXxx 関数の後続の呼び出しでこのハンドルを使用します。
NetDMA インターフェイスは ProviderFreeDmaChannel 関数を呼び出して、以前に割り当てられた DMA チャネルを解放します。
NetDMA は、IRQL <= DISPATCH_LEVEL で ProviderAllocateDmaChannel を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NetDMA 1.0 ドライバーでサポートされています。 |
対象プラットフォーム | Windows |
ヘッダー | netdma.h (Netdma.h を含む) |
IRQL | <= DISPATCH_LEVEL |