FltPerformSynchronousIo - NtDoc

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

VOID FLTAPI FltPerformSynchronousIo(
  [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-fltperformsynchronousio)

FltPerformSynchronousIo function

Description

A minifilter driver calls FltPerformSynchronousIo to initiate a synchronous I/O operation after calling FltAllocateCallbackData to allocate a callback data structure for the operation.

Parameters

CallbackData [in, out]

Pointer to a callback data (FLT_CALLBACK_DATA) structure allocated by a previous call to FltAllocateCallbackData. This parameter is required and cannot be NULL. The caller is responsible for freeing this structure when it is no longer needed by calling FltFreeCallbackData.

Return value

None

Remarks

A minifilter driver calls FltPerformSynchronousIo to initiate a synchronous I/O operation.

Minifilter drivers can only initiate IRP-based I/O operations. They cannot initiate fast I/O or file system filter (FSFilter) callback operations.

FltPerformSynchronousIo sends the I/O operation only to the minifilter driver instances attached below the initiating instance (specified in the Instance parameter to FltAllocateCallbackData), and the file system. Minifilter drivers attached above the specified instance do not receive the I/O operation.

Minifilter drivers should use FltPerformSynchronousIo only in cases where routines such as the following cannot be used:

FltClose

FltCreateFile

FltQueryInformationFile

FltQueryVolumeInformation

FltReadFile

FltSetInformationFile

FltSetVolumeInformation

FltTagFile

FltUntagFile

FltWriteFile

After FltPerformSynchronousIo returns, the caller can reissue the I/O operation by calling FltReissueSynchronousIo. Alternatively, the caller can free the callback data (FLT_CALLBACK_DATA) structure by calling FltFreeCallbackData or prepare it to be reused by calling FltReuseCallbackData.

See also

FLT_CALLBACK_DATA

FltAllocateCallbackData

FltClose

FltCreateFile

FltFreeCallbackData

FltPerformAsynchronousIo

FltQueryInformationFile

FltQueryVolumeInformation

FltReadFile

FltReissueSynchronousIo

FltReuseCallbackData

FltSetInformationFile

FltSetVolumeInformation

FltTagFile

FltUntagFile

FltWriteFile