次の方法で共有


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 プロバイダーは、 の pProviderChannelContext パラメーターで指定された場所で、このハンドルを NetDMA に返しました 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 記述子のリンクされた一覧です。 DescriptorVirtualAddress パラメーターのNET_DMA_DESCRIPTOR構造体の NextDescriptor メンバーには、リンク リスト内の次の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 ドライバーでサポートされます。
対象プラットフォーム Windows
ヘッダー netdma.h (Netdma.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel