Freigeben über


DMA_START_HANDLER Rückruffunktion (netdma.h)

Hinweis Die NetDMA-Schnittstelle wird nicht unterstützt.

in Windows 8 und höher.

Die ProviderStartDma--Funktion startet eine DMA-Übertragung auf dem angegebenen DMA-Kanal.

Syntax

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

Parameter

[in] ProviderChannelContext

Ein Zeiger, der den Kontextbereich eines DMA-Kanals identifiziert. Der DMA-Anbieter hat dieses Handle an netDMA an dem Speicherort zurückgegeben, der im pProviderChannelContext Parameter des ProviderAllocateDmaChannel Funktion.

[in] DescriptorVirtualAddress

Ein Zeiger auf die virtuelle Adresse der ersten NET_DMA_DESCRIPTOR Struktur in einer verknüpften Liste der DMA-Deskriptoren. Die entsprechende physische Adresse wird an der DescriptorPhysicalAddress Parameter angegeben.

[in] DescriptorPhysicalAddress

Ein Zeiger auf die physische Adresse des ersten DMA-Deskriptors in einer verknüpften Liste von DMA-Deskriptoren. Die entsprechende virtuelle Adresse wird an der DescriptorVirtualAddress Parameter angegeben.

[in] DescriptorCount

Die Anzahl der DMA-Deskriptoren bei DescriptorVirtualAddress .

Hinweis NetDMA-Anbietertreiber vor NetDMA, Version 2.0, den DescriptorCount-Parameter ignorieren können. Für NetDMA 2.0 und höhere Versionen ist dieser Parameter die Anzahl der Deskriptoren im DMA-Vorgang.
 

Rückgabewert

ProviderStartDma einen der folgenden Statuswerte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Der Vorgang wurde erfolgreich abgeschlossen.
STATUS_RESOURCES
Fehler beim Vorgang aufgrund unzureichender Ressourcen.
STATUS_UNSUCCESSFUL
Der Vorgang ist aus nicht angegebenen Gründen fehlgeschlagen.

Bemerkungen

Die NetDMA-Schnittstelle ruft die ProviderStartDma--Funktion eines DMA-Anbieters auf, um eine DMA-Übertragung zu starten. Die NetDMA-Schnittstelle kann ProviderStartDma- jederzeit aufrufen, nachdem ein DMA-Kanal zugewiesen wurde. Die NetDMA-Schnittstelle muss ProviderStartDma- aufrufen, nachdem die ProviderAbortDma-, ProviderResetChannel-oder ProviderAllocateDmaChannel Funktion für einen DMA-Kanal.

Die Quelle der DMA-Übertragung ist eine verknüpfte Liste der DMA-Deskriptoren. Der NextDescriptor Member der NET_DMA_DESCRIPTOR Struktur an der DescriptorVirtualAddress Parameter enthält die physische Adresse der nächsten NET_DMA_DESCRIPTOR Struktur in der verknüpften Liste.

Hinweis In NetDMA 2.0 und höheren Versionen ist die verknüpfte Liste der Deskriptoren nicht NULL-beendet. Der NextDescriptor Member in der letzten Beschreibung in der verknüpften Liste gibt die physische Adresse der NET_DMA_DESCRIPTOR Struktur an, die im nachfolgenden Aufruf der ProviderAppendDma--Funktion verwendet wird. Ein NetDMA 2.0-Anbietertreiber kann die Adresse in NextDescriptor- zwischenspeichern und diese Adresse als Anfang der verknüpften Liste für den nächsten Anfügevorgang verwenden.
 
Zum Ausführen des Startvorgangs muss der DMA-Anbieter die vorhandene DMA-Beschreibungsliste außer Acht lassen, falls vorhanden, nachdem die Verarbeitung für den aktuellen Deskriptor abgeschlossen wurde. Der DMA-Anbieter muss den NextDescriptor Member in der aktuellen NET_DMA_DESCRIPTOR-Struktur ignorieren und den Deskriptor laden, der ProviderStartDma- angibt.

Nachdem ProviderStartDma die anfängliche DMA-Übertragung gestartet hat, kann die NetDMA-Schnittstelle die ProviderAppendDma--Funktion aufrufen, um zusätzliche Daten an die Übertragung anzufügen.

NetDMA ruft ProviderStartDma- bei IRQL-<= DISPATCH_LEVEL auf.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt für NetDMA 2.0-Treiber in Windows Server 2008. Unterstützt für NetDMA 1.1-Treiber in Windows Server 2008. Unterstützt für NetDMA 1.0-Treiber in Windows Server 2008 und Windows Vista.
Zielplattform- Fenster
Header- netdma.h (enthalten Netdma.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

NET_DMA_DESCRIPTOR

ProviderAbortDma-

ProviderAllocateDmaChannel

ProviderAppendDma-

ProviderResetChannel