The FltReuseCallbackData routine reinitializes a callback data structure so that it can be reused.
- CallbackData [in, out]
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.
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.
Build date: 11/16/2013