次の方法で共有


DMA_APPEND_HANDLERコールバック関数 (netdma.h)

NetDMA インターフェイスは Windows 8 以降ではサポートされていません。

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 記述子 数。

NetDMA バージョン 2.0 より前 NetDMA プロバイダー ドライバーは、DescriptorCount パラメーターを無視できることに注意してください。 NetDMA 2.0 以降のバージョンの場合、このパラメーターは DMA 操作の記述子の数です。
 

戻り値

ProviderAppendDma は、次のいずれかの状態値を返します。

リターン コード 形容
STATUS_SUCCESS
操作が正常に完了しました。
STATUS_UNSUCCESSFUL
指定されていない理由で操作が失敗しました。

備考

NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderAppendDma 関数を呼び出して、DMA チャネルの最後の記述子の後に DMA 記述子のリンクされたリストを追加します。 NetDMA インターフェイスは、DMA 転送が開始された後、ProviderAppendDma を何度でも呼び出すことができます。 ただし、NetDMA インターフェイスは、チャネルのリセットまたは中止後、または DMA チャネルが最初に割り当てられた後に、ProviderStartDma 関数を呼び出す必要があります。

NetDMA 2.0 以降のバージョンでは、リンクされた記述子の一覧は NULL で終了されません。 リンク リストの最後の記述子の NextDescriptor メンバーは、ProviderAppendDma 関数の後続の呼び出しで使用される NET_DMA_DESCRIPTOR 構造体の物理アドレスを指定します。 NetDMA 2.0 プロバイダー ドライバーは、NextDescriptor にアドレスをキャッシュし、次の追加操作のリンクリストの先頭としてこのアドレスを使用できます。
 
NetDMA インターフェイスは、最後の記述子の NextDescriptor メンバーを、ProviderAppendDma 呼び出す前に、新しい記述子チェーンの先頭に設定します。

アクティブ転送の現在の記述子が最後の記述子である場合、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

関連項目

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma