Freigeben über


FltCbdqDisable-Funktion (fltkernel.h)

FltCbdqDisable deaktiviert die Rückrufdatenwarteschlange eines Minifiltertreibers.

Syntax

VOID FLTAPI FltCbdqDisable(
  [in, out] PFLT_CALLBACK_DATA_QUEUE Cbdq
);

Parameter

[in, out] Cbdq

Zeiger auf die Rückrufdatenwarteschlange.

Rückgabewert

Nichts

Bemerkungen

FltCbdqDisable deaktiviert eine Rückrufdatenwarteschlange, sodass keine weiteren Elemente hinzugefügt werden können.

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 einen IRP-basierten E/A-Vorgang darstellt, verwenden Sie das FLT_IS_IRP_OPERATION Makro.

Ein Minifiltertreiber ruft normalerweise FltCbdqDisable- während des Entladens der Instanz auf. Nach dem Aufrufen dieser Routine sollte der Minifiltertreiber die Warteschlange leeren oder entwässern. Dazu können Sie FltCbdqRemoveNextIo wiederholt aufrufen, bis keine weiteren Elemente in der Warteschlange verbleiben.

Ausführliche Informationen zum Erstellen einer Rückrufdatenwarteschlange finden Sie unter FltCbdqInitialize. Verwenden Sie FltCbdqInsertIo-, um der Warteschlange eine E/A-Anforderung hinzuzufügen. Verwenden Sie FltCbdqRemoveIo, um eine bestimmte E/A-Anforderung aus der Warteschlange zu entfernen, oder FltCbdqRemoveNextIo, um die nächste verfügbare E/A-Anforderung zu entfernen.

Rufen Sie FltCbdqEnableauf, um die Warteschlange nach dem Deaktivieren erneut zu aktivieren.

Wenn die Warteschlange durch eine Drehsperre geschützt ist, anstelle eines Mutex-Objekts oder Ressourcenvariablen, kann der Aufrufer FltCbdqDisable- 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_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo

FltCbdqRemoveNextIo