Freigeben über


DMA_APPEND_HANDLER Rückruffunktion (netdma.h)

Hinweis Die NetDMA-Schnittstelle wird in Windows 8 und höher nicht unterstützt.

Die ProviderAppendDma-Funktion fügt eine verknüpfte Liste von DMA-Deskriptoren an den letzten Deskriptor eines DMA-Kanals an.

Syntax

DMA_APPEND_HANDLER DmaAppendHandler;

NTSTATUS DmaAppendHandler(
  [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

ProviderAppendDma gibt einen der folgenden status Werte zurück:

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

Hinweise

Die NetDMA-Schnittstelle ruft die ProviderAppendDma-Funktion eines DMA-Anbietertreibers auf, um eine verknüpfte Liste von DMA-Deskriptoren nach dem letzten Deskriptor in einem DMA-Kanal anzufügen. Die NetDMA-Schnittstelle kann ProviderAppendDma beliebig oft aufrufen, nachdem eine DMA-Übertragung gestartet wurde. Die NetDMA-Schnittstelle muss jedoch die ProviderStartDma-Funktion aufrufen, nachdem der Kanal zurückgesetzt oder abgebrochen wurde oder nachdem der DMA-Kanal zuerst zugewiesen wurde.

Hinweis In NetDMA 2.0 und höheren Versionen ist die verknüpfte Liste der Deskriptoren nicht NULL-beendet. Das NextDescriptor-Element 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.
 
Die NetDMA-Schnittstelle legt das NextDescriptor-Member des letzten Deskriptors auf den Anfang der neuen Deskriptorenkette fest, bevor ProviderAppendDma aufgerufen wird.

Wenn der aktuelle Deskriptor in einer aktiven Übertragung der letzte Deskriptor ist, muss die DMA-Engine den letzten Deskriptor erneut lesen. Das NextDescriptor-Element in der letzten NET_DMA_DESCRIPTOR-Struktur sollte eine neue Adresse haben, und die DMA-Engine sollte mit dem nächsten Deskriptor fortfahren. Wenn der aktuelle Deskriptor nicht der letzte Deskriptor ist, kann die DMA-Engine die Verarbeitung von DMA-Deskriptoren ohne zusätzliche Aufgaben fortsetzen.

NetDMA ruft ProviderAppendDma 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 (include Netdma.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma