Freigeben über


PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE Rückruffunktion (ndis.h)

Die Funktion ProtocolSendNetBufferListsComplete schließt einen Sendevorgang ab, den der Protokolltreiber mit einem Aufruf des NdisSendNetBufferLists-Funktion .

Hinweis Sie müssen die Funktion mit dem PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolSendNetBufferListsComplete;

void ProtocolSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Parameter

[in] ProtocolBindingContext

Ein Handle für einen Kontextbereich, den der Protokolltreiber zugeordnet hat, um Zustandsinformationen zu einer Bindung zu verwalten. Dieses Handle wurde in einem vorherigen Aufruf von NdisOpenAdapterEx an NDIS übergeben.

[in] NetBufferList

Ein Zeiger auf eine Liste NET_BUFFER_LIST Strukturen, die der Protokolltreiber in einem vorherigen Aufruf von NdisSendNetBufferLists bereitgestellt hat.

[in] SendCompleteFlags

NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Um alle Flags zu löschen, legen Sie diesen Member auf 0 fest. Diese Funktion unterstützt das NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL Flag, das; wenn festgelegt, gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Flag finden Sie unter Dispatch IRQL Tracking.

Rückgabewert

Keine

Bemerkungen

ProtocolSendNetBufferListsComplete ist eine erforderliche Funktion für Protokolltreiber. ProtocolSendNetBufferListsComplete führt die zum Abschließen eines Sendevorgangs erforderliche Nachverarbeitung aus. Beispielsweise kann der Protokolltreiber die Clients benachrichtigen, die das Protokoll zum Senden der Netzwerkdaten angefordert haben, dass der Sendevorgang abgeschlossen ist.

NDIS ruft ProtocolSendNetBufferListsComplete auf, nachdem der zugrunde liegende Miniporttreiber die NdisMSendNetBufferListsComplete-Funktion . Der Abschluss eines Sendevorgangs bedeutet in der Regel, dass der zugrunde liegende Miniporttreiber die angegebenen Netzwerkdaten übertragen hat. Ein Miniporttreiber kann jedoch angeben, dass ein Sendevorgang abgeschlossen ist, sobald die Netzwerkdaten an seine NIC übertragen werden.

Wenn NDIS ProtocolSendNetBufferListsComplete aufruft, erhält der Protokolltreiber den Besitz aller Ressourcen zurück, die dem NET_BUFFER_LIST Strukturen zugeordnet sind, die durch den NetBufferLists-Parameter angegeben werden.

NDIS übermittelt immer vom Protokoll bereitgestellte Netzwerkdaten an den zugrunde liegenden Miniporttreiber in der protokollbestimmten Reihenfolge, die an NdisSendNetBufferLists übergeben wird. Der zugrunde liegende Treiber kann die Sendeanforderungen jedoch in beliebiger Reihenfolge ausführen. Das heißt, Protokolltreiber können sich auf NDIS verlassen, um Netzwerkdaten in FIFO-Reihenfolge an den zugrunde liegenden Treiber zu übermitteln. Protokolltreiber können sich jedoch nicht auf den zugrunde liegenden Treiber verlassen, um NdisMSendNetBufferListsComplete in derselben Reihenfolge aufzurufen.

NDIS ruft ProtocolSendNetBufferListsComplete bei IRQL<= DISPATCH_LEVEL auf.

Beispiele

Um eine ProtocolSendNetBufferListsComplete-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine ProtocolSendNetBufferListsComplete-Funktion mit dem Namen "MySendNetBufferListsComplete" zu definieren, verwenden Sie den typ PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE , wie in diesem Codebeispiel gezeigt:

PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  ProtocolBindingContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

Der PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE Funktionstyp wird in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NET_BUFFER

NET_BUFFER_LIST

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

NdisSendNetBufferLists