IoCsqRemoveIrp-Funktion (wdm.h)
Die IoCsqRemoveIrp Routine entfernt ein bestimmtes IRP aus der Warteschlange.
Syntax
PIRP IoCsqRemoveIrp(
[in, out] PIO_CSQ Csq,
[in, out] PIO_CSQ_IRP_CONTEXT Context
);
Parameter
[in, out] Csq
Zeiger auf die IO_CSQ Struktur für die abbruchsichere IRP-Warteschlange des Treibers. Diese Struktur muss durch IoCsqInitialize oder IoCsqInitializeEx-initialisiert worden sein.
[in, out] Context
Zeigen Sie auf die IO_CSQ_IRP_CONTEXT Struktur, die das zu entfernende IRP identifiziert. Die IO_CSQ_IRP_CONTEXT Struktur wird durch IoCsqInsertIrp oder IoCsqInsertIrpEx initialisiert, wenn das IRP zum ersten Mal in die Warteschlange eingefügt wird.
Rückgabewert
Diese Routine gibt einen Zeiger auf das IRP zurück, das aus der Warteschlange entfernt wurde, oder NULL-, wenn diese IRP abgebrochen wurde.
Bemerkungen
IoCsqRemoveIrp verwendet die Dispatch-Routinen der Warteschlange, um das IRP zu entfernen. Die IoCsqRemoveIrp Routine:
- Ruft die CsqAcquireLock Routine der Warteschlange auf, um die Warteschlange zu sperren.
- Verwendet den IrpContext Parameter, um zu bestimmen, welches IRP entfernt werden soll, und ruft die CsqRemoveIrp Routine der Warteschlange auf, um diese IRP zu entfernen.
- Ruft die CsqReleaseLock Routine der Warteschlange auf, um die Warteschlange zu entsperren.
Beachten Sie, dass IoCsqXxx Routinen die DriverContext[3] Mitglied des IRP verwenden, um IRP-Kontextinformationen zu enthalten. Treiber, die diese Routinen verwenden, um IRPs in die Warteschlange zu stellen, müssen dieses Mitglied nicht verwenden.
Aufrufer von IoCsqRemoveIrp- müssen bei einem IRQL-<= DISPATCH_LEVEL ausgeführt werden. Die Rückrufroutinen des Treibers müssen bei diesem IRQL ordnungsgemäß funktionieren.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows XP und höheren Versionen von Windows. Treiber, die auch in Windows 2000 und Windows 98/Me funktionieren müssen, können stattdessen mit "Csq.lib" verknüpft werden, um die Routine zu verwenden. |
Zielplattform- | Universal |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise") |