FltReuseCallbackData - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// fltkernel.h

VOID FLTAPI FltReuseCallbackData(
  [in, out] PFLT_CALLBACK_DATA CallbackData
);

View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-fltkernel-fltreusecallbackdata)

FltReuseCallbackData function

Description

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

Parameters

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.

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.

See also

FLT_CALLBACK_DATA

FltAllocateCallbackData

FltFreeCallbackData

FltPerformAsynchronousIo

FltPerformSynchronousIo

FltReissueSynchronousIo