NDIS_PD_FLUSH_QUEUE Rückruffunktion (ndis.h)
Die PacketDirect-Plattform (PD) ruft die PDFlushQueue-Funktion eines PD-fähigen Miniporttreibers auf, um eine angegebene Warteschlange zu leeren, um sicherzustellen, dass alle Elemente, die sich noch nicht in einem vollständigen Zustand in der Warteschlange befinden, unmittelbar abgeschlossen werden.
Syntax
NDIS_PD_FLUSH_QUEUE NdisPdFlushQueue;
VOID() NdisPdFlushQueue(
[in, out] NDIS_PD_QUEUE *Queue
)
{...}
Parameter
[in, out] Queue
Die zu leerende Warteschlange. Weitere Informationen finden Sie in der NDIS_PD_QUEUE-Struktur .
Rückgabewert
Diese Rückruffunktion gibt keinen Wert zurück.
Hinweise
Der Aufrufer ist dafür verantwortlich, alle zuvor bereitgestellten Anforderungen zu warten und zu leeren, bevor die Warteschlange geschlossen wird. Der Aufrufer darf nach diesem Aufruf keine weiteren PD_BUFFER Strukturen in die Warteschlange posten. Der primäre Anwendungsfall für diese Routine ist das Leeren der Empfangswarteschlangen. Wenn kein eingehender Datenverkehr vorhanden ist, werden bereitgestellte Puffer unbegrenzt in der Empfangswarteschlange gespeichert, und diese müssen geleert werden, bevor die Warteschlange geschlossen werden kann. Das gleiche Problem besteht in der Praxis nicht für Übertragungswarteschlangen, da Übertragungsanforderungen nicht unbegrenzt gesendet werden. Anbieter müssen jedoch den Leerungsaufruf für Übertragungswarteschlangen berücksichtigen (dies kann kein Vorgang sein, wenn der Anbieter weiß, dass die ausstehende Übertragungsanforderung sehr bald abgeschlossen wird, was der typische Fall ist, mit Ausnahme der L2-Flusssteuerung).
Beispiele
Um eine PDFlushQueue-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. 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 Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine PDFlushQueue-Funktion mit dem Namen "MyPDFlushQueue" zu definieren, verwenden Sie den typ NDIS_PD_FLUSH_QUEUE , wie in diesem Codebeispiel gezeigt:
NDIS_PD_FLUSH_QUEUE MyPDFlushQueue;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyPDFlushQueue(
NDIS_PD_QUEUE* NdisPDQueue
)
{...}
Der NDIS_PD_FLUSH_QUEUE Funktionstyp ist in der Headerdatei Ntddndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den NDIS_PD_FLUSH_QUEUE 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) | Windows 10 |
Unterstützte Mindestversion (Server) | Windows Server 2016 |
Zielplattform | Windows |
Kopfzeile | ndis.h |
IRQL | <= DISPATCH_LEVEL |