IoCsqRemoveNextIrp-Funktion (wdm.h)
Die IoCsqRemoveNextIrp-Routine entfernt den nächsten übereinstimmenden IRP in der Warteschlange.
Syntax
PIRP IoCsqRemoveNextIrp(
[in, out] PIO_CSQ Csq,
[in, optional] PVOID PeekContext
);
Parameter
[in, out] Csq
Zeiger auf die Verteilungstabelle des Treibers für abbruchsichere IRP-Warteschlangen. Die Dispatchtabelle muss von IoCsqInitialize initialisiert werden.
[in, optional] PeekContext
Ein Zeiger auf einen vom Treiber definierten Kontextwert. IoCsqRemoveNextIrp übergibt diesen Parameter an die CsqPeekNextIrp-Routine des Treibers. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
Diese Routine gibt einen Zeiger auf den nächsten übereinstimmenden IRP in der Warteschlange zurück, oder NULL , wenn keine IRPs mehr verfügbar sind. Die Routine gibt nur IRPs zurück, die noch nicht abgebrochen wurden.
Hinweise
IoCsqRemoveNextIrp verwendet die Dispatchroutinen der Warteschlange, um die IRP zu entfernen. Die IoCsqRemoveNextIrp-Routine :
- Ruft die CsqAcquireLock-Routine der Warteschlange auf, um die Warteschlange zu sperren.
- Ruft die CsqPeekNextIrp-Routine der Warteschlange auf, um den nächsten übereinstimmenden IRP in der Warteschlange zu finden. IoCsqRemoveNextIrp übergibt den Wert des PeekContext-Parameters als PeekContext-Parameter von CsqPeekNextIrp. CsqPeekNextIrp gibt einen Zeiger auf die nächste übereinstimmende IRP oder NULL zurück, wenn kein übereinstimmender IRP vorhanden ist.
- Wenn der Rückgabewert von CsqPeekNextIrp ungleich NULL ist, ruft IoCsqRemoveNextIrp die CsqRemoveIrp-Routine der Warteschlange auf, um das IRP zu entfernen.
- Ruft die CsqReleaseLock-Routine der Warteschlange auf, um die Warteschlange zu entsperren.
Beachten Sie, dass IoCsqXxx-Routinen das DriverContext[3]-Element 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 IoCsqRemoveNextIrp müssen unter einem IRQL <= DISPATCH_LEVEL ausgeführt werden. Die Rückrufroutinen des Treibers müssen in diesem IRQL ordnungsgemäß funktionieren.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows XP und höheren Versionen von Windows. Treiber, die auch unter Windows 2000 und Windows 98/Me funktionieren müssen, können stattdessen einen Link zu Csq.lib herstellen, um die Routine zu verwenden. |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise") |