FltReuseCallbackData function

The FltReuseCallbackData routine reinitializes a callback data structure so that it can be reused.

Syntax

VOID FLTAPI FltReuseCallbackData(
  PFLT_CALLBACK_DATA CallbackData
);

Parameters

CallbackData

Pointer to the callback data (FLT_CALLBACK_DATA) structure to be reused. This structure must have been allocated by a previous call to FltAllocateCallbackData. This parameter is required and cannot be NULL.

Return Value

None

Remarks

FltReuseCallbackData reinitializes a callback data (FLT_CALLBACK_DATA) structure so that it can be used in a new I/O operation. FltReuseCallbackData does not change the TargetInstance field or the TargetFileObject field of the callback data structure's I/O parameter block.

The FltReuseCallbackData routine frees any MDL chain associated with the supplied CallbackData object. A pointer to an MDL chain associated with a FLT_CALLBACK_DATA object will be invalid after a call to FltReuseCallbackData for that object.

Using FltReuseCallbackData to reuse a callback data structure is faster than freeing the structure and allocating a new one.

A minifilter driver should use FltReuseCallbackData only on a callback data structure that the minifilter driver previously allocated with FltAllocateCallbackData and used in a call to FltPerformSynchronousIo or FltPerformAsynchronousIo.

If the callback data structure was used for asynchronous I/O, the minifilter driver should not call FltReuseCallbackData until the CallbackRoutine specified in the call to FltPerformAsynchronousIo is called.

In particular, a minifilter driver should not use this routine for any callback data structures not allocated by the minifilter driver itself.

Requirements

   
Target Platform Universal
Header fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL "<= APC_LEVEL"

See Also

FLT_CALLBACK_DATA

FltAllocateCallbackData

FltFreeCallbackData

FltPerformAsynchronousIo

FltPerformSynchronousIo

FltReissueSynchronousIo