Freigeben über


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 FltCbdqInitializeinitialisiert worden sein.

[in, optional] PeekContext

Zeiger auf aufruferdefinierte Informationen, die das übereinstimmende Element identifizieren. Dieser Parameter ist optional und kann NULL-werden.

Rückgabewert

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

Bemerkungen

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 machen; 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. Um festzustellen, ob eine bestimmte Rückrufdatenstruktur (FLT_CALLBACK_DATA) einen IRP-basierten E/A-Vorgang darstellt, verwenden Sie das FLT_IS_IRP_OPERATION Makro.

Eine Rückrufdatenwarteschlange wird durch FltCbdqInitializeinitialisiert. FltCbdqRemoveNextIo verwendet die in der Verteilertabelle der Warteschlange bereitgestellten Routinen, um die Warteschlange zu sperren und das nächste übereinstimmende Element aus der Warteschlange zu entfernen. Der Entfernungsvorgang selbst erfolgt durch die CbdqRemoveIo Rückrufroutine des Minifiltertreibers.

FltCbdqRemoveNextIo verwendet die CbdqPeekNextIo Rückrufroutine, um die Warteschlange nach übereinstimmenden Elementen zu scannen. Der PeekContext Parameter wird an die CbdqPeekNextIo Rückrufroutine übergeben, um übereinstimmende Elemente zu durchlaufen. Die Bedeutung von PeekContext und die Kriterien für ein Element, das einem bestimmten PeekContext- entsprechen, sind vollständig vom Minifiltertreiber abhängig.

Wenn die Warteschlange durch eine Spin-Lock-geschützt ist, anstatt ein mutex-Objekt oder Ressourcenvariablen, kann der Aufrufer von FltCbdqRemoveNextIo unter IRQL <= DISPATCH_LEVEL ausgeführt werden. Wenn ein Mutex oder eine Ressource verwendet wird, muss der Aufrufer bei IRQL <= APC_LEVEL ausgeführt werden.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
IRQL- Siehe Abschnitt "Hinweise".

Siehe auch

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo