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 im 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 von DMA-Deskriptoren. Die entsprechende physische Adresse wird am 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 am DescriptorVirtualAddress-Parameter angegeben.

[in] DescriptorCount

Die Anzahl der DMA-Deskriptoren unter DescriptorVirtualAddress .

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

Rückgabewert

ProviderStartDma gibt einen der folgenden status Werte zurück:

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

Hinweise

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

Die Quelle der DMA-Übertragung ist eine verknüpfte Liste von DMA-Deskriptoren. Das NextDescriptor-Element der NET_DMA_DESCRIPTOR-Struktur am 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 im letzten Deskriptor in der verknüpften Liste gibt die physische Adresse der NET_DMA_DESCRIPTOR-Struktur an, die beim 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.
 
Um den Startvorgang auszuführen, muss der DMA-Anbieter die vorhandene DMA-Deskriptorliste außer Acht lassen, sofern vorhanden, nachdem er die Verarbeitung für den aktuellen Deskriptor abgeschlossen hat. Der DMA-Anbieter muss den NextDescriptor-Member in der aktuellen NET_DMA_DESCRIPTOR-Struktur ignorieren und den von ProviderStartDma angegebenen Deskriptor laden.

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 unter IRQL <= DISPATCH_LEVEL auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (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 Windows
Kopfzeile netdma.h (netdma.h einschließen)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel