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. |