Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die PacketDirect(PD)-Plattform ruft die PDFlushQueue-Funktion eines PDFlushQueue-Treibers 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 Warteschlange, die geleert werden soll. Weitere Informationen finden Sie in der NDIS_PD_QUEUE Struktur.
Rückgabewert
Diese Rückruffunktion gibt keinen Wert zurück.
Bemerkungen
Der Anrufer ist dafür verantwortlich, auf alle zuvor bereitgestellten Anforderungen zu warten und abzulassen, bevor die Warteschlange geschlossen wird. Der Anrufer darf nach diesem Anruf keine weiteren PD_BUFFER Strukturen in der Warteschleife posten. Der primäre Anwendungsfall für diese Routine besteht darin, die Empfangswarteschlangen zu leeren – wenn kein eingehender Datenverkehr vorhanden ist, werden gepostete Puffer auf unbestimmte Zeit in der Empfangswarteschlange platziert, und diese müssen entwässert werden, indem sie geleert werden, bevor die Warteschlange geschlossen werden kann. Das gleiche Problem ist für Übertragungswarteschlangen in der Praxis nicht vorhanden, da Übertragungsanforderungen nicht unbegrenzt eingestiftet werden. Anbieter müssen jedoch den leeren Anruf für Übertragungswarteschleifen berücksichtigen (dies kann ein No-Operation sein, wenn der Anbieter weiß, dass die ausstehende Übermittlungsanforderung sehr bald abgeschlossen wird, was der typische Fall mit Ausnahme der L2-Flusssteuerung ist).
beispiele für
Um eine PDFlushQueue--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration angeben, 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.Wenn Sie beispielsweise eine PDFlushQueue--Funktion mit dem Namen "MyPDFlushQueue" definieren möchten, verwenden Sie den NDIS_PD_FLUSH_QUEUE Typ, 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 wird in der Headerdatei Ntddndis.h 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 NDIS_PD_FLUSH_QUEUE 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- | Windows 10 |
| mindestens unterstützte Server- | Windows Server 2016 |
| Zielplattform- | Fenster |
| Header- | ndis.h |
| IRQL- | <= DISPATCH_LEVEL |