Expand Minimize

FltCbdqDisable callback function

FltCbdqDisable disables a minifilter driver's callback data queue.

Syntax


VOID FltCbdqDisable(
  _Inout_  PFLT_CALLBACK_DATA_QUEUE Cbdq
);

Parameters

Cbdq [in, out]

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

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

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft