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 .
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 |