FltCbdqRemoveNextIo-Funktion (fltkernel.h)

FltCbdqRemoveNextIo entfernt das nächste übereinstimmende Element in der Rückrufdatenwarteschlange eines Minifiltertreibers.

Syntax

PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
  [in, out]      PFLT_CALLBACK_DATA_QUEUE Cbdq,
  [in, optional] PVOID                    PeekContext
);

Parameter

[in, out] Cbdq

Zeiger auf eine abbruchsichere Rückrufdatenwarteschlange. Diese Warteschlange muss durch Aufrufen von FltCbdqInitialize initialisiert worden sein.

[in, optional] PeekContext

Zeiger auf vom Aufrufer definierte Informationen, die das übereinstimmende Element identifizieren. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

FltCbdqRemoveNextIo gibt einen Zeiger auf die Rückrufdatenstruktur (FLT_CALLBACK_DATA) für das Element zurück, das aus der Warteschlange entfernt wurde, oder NULL , wenn keine übereinstimmenden Elemente gefunden wurden. FltCbdqRemoveNextIo gibt nur Elemente für E/A-Vorgänge zurück, die noch nicht abgebrochen wurden.

Hinweise

FltCbdqRemoveNextIo entfernt das nächste übereinstimmende Element aus der Rückrufdatenwarteschlange eines Minifiltertreibers.

Minifiltertreiber können die FltCbdqXxx-Routinen verwenden, um eine Rückrufdatenwarteschlange für IRP-basierte E/A-Vorgänge zu implementieren. Mithilfe dieser Routinen können Minifiltertreiber ihre Warteschlangen abbruchsicher gestalten. Das System verarbeitet den E/A-Abbruch für die Minifiltertreiber transparent.

Die FltCbdqXxx-Routinen können nur für IRP-basierte E/A-Vorgänge verwendet werden. Verwenden Sie das Makro FLT_IS_IRP_OPERATION, um zu bestimmen, ob eine bestimmte Rückrufdatenstruktur (FLT_CALLBACK_DATA) einen IRP-basierten E/A-Vorgang darstellt.

Eine Rückrufdatenwarteschlange wird von FltCbdqInitialize initialisiert. FltCbdqRemoveNextIo verwendet die in der Dispatchtabelle der Warteschlange bereitgestellten Routinen, um die Warteschlange zu sperren und das nächste übereinstimmende Element aus der Warteschlange zu entfernen. Der Entfernungsvorgang selbst wird von der CbdqRemoveIo-Rückrufroutine des Minifiltertreibers ausgeführt.

FltCbdqRemoveNextIo verwendet die CbdqPeekNextIo-Rückrufroutine der Warteschlange, um die Warteschlange auf übereinstimmende Elemente zu überprüfen. Der PeekContext-Parameter wird an die Rückrufroutine CbdqPeekNextIo übergeben, um übereinstimmende Elemente zu durchlaufen. Die Bedeutung von PeekContext und die Kriterien für ein Element, das mit einem bestimmten PeekContext übereinstimmt, sind vollständig vom Minifiltertreiber abhängig.

Wenn die Warteschlange durch eine Drehsperre und nicht durch ein Mutex-Objekt oder eine Ressourcenvariable geschützt ist, kann der Aufrufer von FltCbdqRemoveNextIo unter IRQL <= DISPATCH_LEVEL ausgeführt werden. Wenn ein Mutex oder eine Ressource verwendet wird, muss der Aufrufer unter IRQL <= APC_LEVEL ausgeführt werden.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (fltkernel.h einschließen)
IRQL Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.

Weitere Informationen

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo