FltCbdqDisable function (fltkernel.h)

FltCbdqDisable disables a minifilter driver's callback data queue.

Syntax

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

Parameters

[in, out] Cbdq

Pointer to the callback data queue.

Return value

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.

Requirements

Requirement Value
Target Platform Universal
Header fltkernel.h (include Fltkernel.h)
IRQL See Remarks section.

See also

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo

FltCbdqRemoveNextIo