Skip to content

Latest commit

 

History

History
103 lines (65 loc) · 4.22 KB

nf-fltkernel-fltcbdqdisable.md

File metadata and controls

103 lines (65 loc) · 4.22 KB
UID title description old-location tech.root ms.date keywords ms.keywords req.header req.include-header req.target-type req.target-min-winverclnt req.target-min-winversvr req.kmdf-ver req.umdf-ver req.ddi-compliance req.unicode-ansi req.idl req.max-support req.namespace req.assembly req.type-library req.lib req.dll req.irql targetos req.typenames f1_keywords topic_type api_type api_location api_name
NF:fltkernel.FltCbdqDisable
FltCbdqDisable function (fltkernel.h)
FltCbdqDisable disables a minifilter driver's callback data queue.
ifsk\fltcbdqdisable.htm
ifsk
04/16/2018
FltCbdqDisable function
FltApiRef_a_to_d_12682977-5b03-4656-ad7b-8f37bb8da66b.xml, FltCbdqDisable, FltCbdqDisable function [Installable File System Drivers], fltkernel/FltCbdqDisable, ifsk.fltcbdqdisable
fltkernel.h
Fltkernel.h
Universal
See Remarks section.
Windows
FltCbdqDisable
fltkernel/FltCbdqDisable
APIRef
kbSyntax
HeaderDef
fltkernel.h
FltCbdqDisable

FltCbdqDisable function

-description

FltCbdqDisable disables a minifilter driver's callback data queue.

-parameters

-param Cbdq [in, out]

Pointer to the callback data queue.

-returns

None

-remarks

FltCbdqDisable disables a callback data queue so that no more items can be added to it.

Minifilter drivers can use the FltCbdqXxx routines to implement a callback data queue for IRP-based I/O operations. By using these routines, minifilter drivers can make their queues cancel-safe; the system transparently handles I/O cancellation for the minifilter drivers.

The FltCbdqXxx routines can only be used for IRP-based I/O operations. To determine whether a given callback data structure represents an IRP-based I/O operation, use the FLT_IS_IRP_OPERATION macro.

A minifilter driver normally calls FltCbdqDisable during instance teardown or minifilter driver unload. After calling this routine, the minifilter driver should empty, or drain, the queue. This can be done by calling FltCbdqRemoveNextIo repeatedly until no more items remain in the queue.

See FltCbdqInitialize for details on how to create a callback data queue. Use FltCbdqInsertIo to add an I/O request to the queue. Use FltCbdqRemoveIo to remove a particular I/O request from the queue, or FltCbdqRemoveNextIo to remove the next available I/O request.

To reenable the queue after disabling it, call FltCbdqEnable.

If the queue is protected by a spin lock rather than a mutex object or resource variable, the caller of FltCbdqDisable can be running at IRQL <= DISPATCH_LEVEL. If a mutex or resource is used, the caller must be running at IRQL <= APC_LEVEL.

-see-also

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo

FltCbdqRemoveNextIo