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 プロバイダーは、このハンドルを NetDMA の pProviderChannelContext パラメーターで指定された場所に返しました。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 ドライバーでサポートされます。 |
| ターゲット プラットフォーム の | ウィンドウズ |
| ヘッダー | netdma.h (Netdma.h を含む) |
| IRQL | <= DISPATCH_LEVEL |