次の方法で共有


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

NetDMA インターフェイスはサポートされていません

Windows 8 以降で使用できます。

ProviderStartDma 関数は、指定された DMA チャネルで DMA 転送を開始します。

構文

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [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 操作の記述子の数です。
 

戻り値

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

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

備考

NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderStartDma 関数を呼び出して、DMA 転送を開始します。 NetDMA インターフェイスは、DMA チャネル 割り当てられた後、いつでも ProviderStartDma を呼び出すことができます。 NetDMA インターフェイスは ProviderAbortDmaProviderResetChannel、または ProviderStartDma を呼び出す必要があります。DMA チャネルの ProviderAllocateDmaChannel 関数を します。

DMA 転送のソースは、DMA 記述子のリンクされた一覧です。 NextDescriptorDescriptorVirtualAddress パラメーターの NET_DMA_DESCRIPTOR 構造体のメンバーには、リンクリスト内の次のNET_DMA_DESCRIPTOR構造体の物理アドレスが含まれています。

NetDMA 2.0 以降のバージョンでは、リンクされた記述子の一覧は NULL で終了されません。 リンク リストの最後の記述子の NextDescriptor メンバーは、ProviderAppendDma 関数の後続の呼び出しで使用される NET_DMA_DESCRIPTOR 構造体の物理アドレスを指定します。 NetDMA 2.0 プロバイダー ドライバーは、NextDescriptor にアドレスをキャッシュし、次の追加操作のリンクリストの先頭としてこのアドレスを使用できます。
 
開始操作を実行するには、DMA プロバイダーが現在の記述子の処理を完了した後、既存の DMA 記述子リスト (存在する場合) を無視する必要があります。 DMA プロバイダーは、現在のNET_DMA_DESCRIPTOR構造体の NextDescriptor メンバーを無視し、ProviderStartDma が指定 記述子を読み込む必要があります。

ProviderStartDma 最初の DMA 転送を開始した後、NetDMA インターフェイスは、ProviderAppendDma 関数を呼び出して、転送に追加のデータを追加できます。

NetDMA は、IRQL <= DISPATCH_LEVEL で ProviderStartDma 呼び出します。

必要条件

要件 価値
サポートされる最小クライアント 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

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel