IO_CSQ_REMOVE_IRP Rückruffunktion (wdm.h)
Die CsqRemoveIrp-Routine wird vom System verwendet, um die angegebene IRP aus einer vom Treiber implementierten, abbruchsicheren IRP-Warteschlange zu entfernen.
Syntax
IO_CSQ_REMOVE_IRP IoCsqRemoveIrp;
void IoCsqRemoveIrp(
[in] PIO_CSQ Csq,
[in] PIRP Irp
)
{...}
Parameter
[in] Csq
Zeiger auf die IO_CSQ-Struktur für die abbruchsichere IRP-Warteschlange.
[in] Irp
Zeiger auf die IRP, die aus der IRP-Warteschlange entfernt werden soll.
Rückgabewert
Keine
Bemerkungen
Der Treiber gibt die CsqRemoveIrp-Routine für eine abbruchsichere IRP-Warteschlange an, wenn die IO_CSQ-Struktur der Warteschlange initialisiert wird. Der Treiber gibt die Routine als CsqRemoveIrp-Parameter von IoCsqInitialize oder IoCsqInitializeEx an, wenn IO_CSQ initialisiert wird. Weitere Informationen finden Sie unter Cancel-Safe IRP-Warteschlangen.
Die Routinen IoCsqRemoveIrp und IoCsqRemoveNextIrp rufen die CsqRemoveIrp-Routine der abbruchsicheren IRP-Warteschlange auf, um die angegebene IRP aus der Warteschlange zu entfernen. Das System verwendet auch CsqRemoveIrp , um einen abgebrochenen IRP aus der Warteschlange zu entfernen.
Beispiele
Um eine CsqRemoveIrp-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückrufroutine identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen 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 CsqRemoveIrp-Rückrufroutine mit dem Namen MyCsqRemoveIrp
zu definieren, verwenden Sie den typ IO_CSQ_REMOVE_IRP, wie in diesem Codebeispiel gezeigt:
IO_CSQ_REMOVE_IRP MyCsqRemoveIrp;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyCsqRemoveIrp(
PIO_CSQ Csq,
PIRP Irp
)
{
// Function body
}
Der IO_CSQ_REMOVE_IRP Funktionstyp ist in der Wdm.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie die _Use_decl_annotations_
Anmerkung ihrer Funktionsdefinition hinzu. Die _Use_decl_annotations_
Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den IO_CSQ_REMOVE_IRP 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 WDM-Treiber. Informationen zu _Use_decl_annotations_
finden Sie unter Verhalten von Funktionen mit Anmerkungen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |