PFLT_COMPLETED_ASYNC_IO_CALLBACK callback function (fltkernel.h)

A minifilter driver that initiates an asynchronous I/O operation can specify a routine of type PFLT_COMPLETED_ASYNC_IO_CALLBACK routine to be called when the operation is completed.

Syntax

PFLT_COMPLETED_ASYNC_IO_CALLBACK PfltCompletedAsyncIoCallback;

void PfltCompletedAsyncIoCallback(
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] PFLT_CONTEXT Context
)
{...}

Parameters

[in] CallbackData

Pointer to the callback data structure for the I/O operation.

[in] Context

Context pointer that the minifilter driver passed as a parameter to FltPerformAsynchronousIo, FltReadFile, or FltWriteFile.

Return value

None

Remarks

When a minifilter driver calls FltPerformAsynchronousIo, FltReadFile or FltWriteFile to initiate an asynchronous I/O operation, the minifilter driver can optionally specify a callback routine to be called when the I/O operation is completed. This is done by specifying a routine of type PFLT_COMPLETED_ASYNC_IO_CALLBACK for the CallbackRoutine parameter.

When the I/O operation is completed, this callback routine is called in an arbitrary thread context, at IRQL <= DISPATCH_LEVEL.

Because the PFLT_COMPLETED_ASYNC_IO_CALLBACK routine can be called at IRQL DISPATCH_LEVEL, it is subject to the following constraints:

  • It cannot safely call any kernel-mode routines that require a lower IRQL.
  • Any data structures used in this routine must be allocated from nonpaged pool.
  • It cannot be made pageable.
  • It cannot acquire resources, mutexes, or fast mutexes. However, it can acquire spin locks.

Requirements

Requirement Value
Target Platform Desktop
Header fltkernel.h (include Fltkernel.h)
IRQL See Remarks section.

See also

FLT_CALLBACK_DATA

FltPerformAsynchronousIo

FltReadFile

FltWriteFile