PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE Rückruffunktion (ndis.h)
Die ProtocolSendNetBufferListsComplete--Funktion schließt einen Sendevorgang ab, den der Protokolltreiber mit einem Aufruf an den 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 beizubehalten. Dieses Handle wurde in einem vorherigen Aufruf von NdisOpenAdapterExan NDIS übergeben.
[in] NetBufferList
Ein Zeiger auf eine Liste von NET_BUFFER_LIST Strukturen, die der Protokolltreiber in einem vorherigen Aufruf von NdisSendNetBufferListsangegeben hat.
[in] SendCompleteFlags
NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Um alle Flags zu löschen, legen Sie dieses Element auf Null fest. Diese Funktion unterstützt die NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL Kennzeichnung, die; wenn festgelegt, gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Kennzeichen finden Sie unter IRQL Tracking.
Rückgabewert
Nichts
Bemerkungen
ProtocolSendNetBufferListsComplete ist eine erforderliche Funktion für Protokolltreiber. ProtocolSendNetBufferListsComplete führt die Postverarbeitung aus, die zum Abschließen eines Sendevorgangs erforderlich ist. Beispielsweise kann der Protokolltreiber die Clients benachrichtigen, die das Protokoll angefordert haben, um die Netzwerkdaten zu senden, die der Sendevorgang abgeschlossen ist.
NDIS ruft ProtocolSendNetBufferListsComplete auf, nachdem der zugrunde liegende Miniporttreiber den NdisMSendNetBufferListsComplete-Funktion. Der Abschluss eines Sendevorgangs impliziert in der Regel, dass der zugrunde liegende Miniporttreiber die angegebenen Netzwerkdaten übertragen hat. Ein Miniporttreiber kann jedoch angeben, dass ein Sendevorgang abgeschlossen wurde, sobald er die Netzwerkdaten an seine NIC überträgt.
Wenn NDIS ProtocolSendNetBufferListsCompleteaufruft, erhält der Protokolltreiber den Besitz aller Ressourcen zurück, die den NET_BUFFER_LIST Strukturen zugeordnet sind, die durch den NetBufferLists Parameter angegeben werden.
NDIS sendet immer vom Protokoll bereitgestellte Netzwerkdaten an den zugrunde liegenden Miniporttreiber in der protokollbestimmten Reihenfolge, wie an NdisSendNetBufferListsübergeben. Der zugrunde liegende Treiber kann jedoch die Sendeanforderungen in beliebiger Reihenfolge ausführen. Das heißt, Protokolltreiber können sich auf NDIS verlassen, um Netzwerkdaten in FIFO 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 für
Um eine ProtocolSendNetBufferListsComplete--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine ProtocolSendNetBufferListsComplete--Funktion zu definieren, die den Namen "MySendNetBufferListsComplete" hat, verwenden Sie den PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE Typ, wie im folgenden 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 Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt in NDIS 6.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | <= DISPATCH_LEVEL |