DMA_APPEND_HANDLER コールバック関数 (netdma.h)
ProviderAppendDma 関数は、DMA チャネルの最後の記述子に DMA 記述子のリンクされたリストを追加します。
構文
DMA_APPEND_HANDLER DmaAppendHandler;
NTSTATUS DmaAppendHandler(
[in] PVOID ProviderChannelContext,
[in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
[in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
[in] ULONG DescriptorCount
)
{...}
パラメーター
[in] ProviderChannelContext
DMA チャネルのコンテキスト領域を識別するポインター。 DMA プロバイダーは、 の pProviderChannelContext パラメーターで指定された場所で、このハンドルを NetDMA に返しました ProviderAllocateDmaChannel 関数。
[in] DescriptorVirtualAddress
DMA 記述子のリンクされたリスト内の最初の NET_DMA_DESCRIPTOR 構造体の仮想アドレスへのポインター。 対応する物理アドレスは、 DescriptorPhysicalAddress パラメーターで指定されます。
[in] DescriptorPhysicalAddress
DMA 記述子のリンクされたリスト内の最初の DMA 記述子の物理アドレスへのポインター。 対応する仮想アドレスは、 DescriptorVirtualAddress パラメーターで指定されます。
[in] DescriptorCount
DescriptorVirtualAddress での DMA 記述子の数。
戻り値
ProviderAppendDma は、次のいずれかの状態値を返します。
リターン コード | 説明 |
---|---|
|
操作は正常に完了しました。 |
|
指定されていない理由で操作が失敗しました。 |
注釈
NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderAppendDma 関数を呼び出して、DMA チャネルの最後の記述子の後に DMA 記述子のリンクされたリストを追加します。 NetDMA インターフェイスは、DMA 転送が開始された後、何度でも ProviderAppendDma を呼び出すことができます。 ただし、NetDMA インターフェイスは、チャネルのリセットまたは中止後、または DMA チャネルが最初に割り当てられた後に ProviderStartDma 関数を呼び出す必要があります。
アクティブ転送の現在の記述子が最後の記述子である場合、DMA エンジンは最後の記述子を再読み取りする必要があります。 最後のNET_DMA_DESCRIPTOR構造体の NextDescriptor メンバーは新しいアドレスを持つ必要があり、DMA エンジンは次の記述子を続行する必要があります。 現在の記述子が最後の記述子でない場合、DMA エンジンは追加のタスクなしで DMA 記述子の処理を続行できます。
NetDMA は、IRQL <= DISPATCH_LEVELで ProviderAppendDma を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Server 2008 の NetDMA 2.0 ドライバーでサポートされます。 Windows Server 2008 の NetDMA 1.1 ドライバーでサポートされます。 Windows Server 2008 および Windows Vista の NetDMA 1.0 ドライバーでサポートされます。 |
対象プラットフォーム | Windows |
ヘッダー | netdma.h (Netdma.h を含む) |
IRQL | <= DISPATCH_LEVEL |