FltCompletePendedPreOperation function

FltCompletePendedPreOperation resumes processing for an I/O operation that was pended in a minifilter driver's preoperation callback (PFLT_PRE_OPERATION_CALLBACK) routine.

Syntax

VOID FLTAPI FltCompletePendedPreOperation(
  PFLT_CALLBACK_DATA        CallbackData,
  FLT_PREOP_CALLBACK_STATUS CallbackStatus,
  PVOID                     Context
);

Parameters

CallbackData

TBD

CallbackStatus

The status value that the minifilter driver is returning for this I/O operation. Cannot be FLT_PREOP_PENDING, FLT_PREOP_SYNCHRONIZE, or FLT_PREOP_DISALLOW_FASTIO. Must be one of the following FLT_PREOP_CALLBACK_STATUS values. For more information about the effect of these values, see the Remarks section of the reference entry for PFLT_PRE_OPERATION_CALLBACK.

FLT_PREOP_COMPLETE

The minifilter driver is completing the I/O operation. The Filter Manager does not send the I/O operation to any minifilter drivers below the caller or to the file system. The Filter Manager only calls the postoperation callback (PFLT_POST_OPERATION_CALLBACK) routines of the minifilter drivers above the caller.

FLT_PREOP_SUCCESS_NO_CALLBACK

The minifilter driver is returning control of the I/O operation to the Filter Manager. The Filter Manager does not call the corresponding postoperation callback, if one exists, during I/O completion.

FLT_PREOP_SUCCESS_WITH_CALLBACK

The minifilter driver is returning control of the I/O operation to the Filter Manager. The Filter Manager calls the corresponding postoperation callback during I/O completion.

Context

If FLT_PREOP_SUCCESS_WITH_CALLBACK is specified for CallbackStatus, this parameter is an optional context pointer to be passed to the corresponding postoperation callback routine. If FLT_PREOP_COMPLETE or FLT_PREOP_SUCCESS_NO_CALLBACK is specified for CallbackStatus, this parameter must be NULL.

Return Value

None

Remarks

When a minifilter driver's preoperation callback (PFLT_PRE_OPERATION_CALLBACK) routine posts an I/O operation to a work queue and returns FLT_PREOP_PENDING, the Filter Manager stops processing the operation. When the operation is eventually dequeued and processed, the minifilter driver must call FltCompletePendedPreOperation to return the operation to the Filter Manager, which then resumes processing as directed by the CallbackStatus specified by the minifilter driver.

If the CallbackStatus parameter is FLT_PREOP_COMPLETE, FltCompletePendedPreOperation can be called at IRQL <= DISPATCH_LEVEL. Otherwise, callers of FltCompletePendedPreOperation must be running at IRQL <= APC_LEVEL.

Requirements

   
Target Platform Universal
Header fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
IRQL See Remarks section.

See Also

FLT_CALLBACK_DATA

FltCbdqInitialize

FltCompletePendedPostOperation

FltQueueDeferredIoWorkItem

PFLT_PRE_OPERATION_CALLBACK