| Previous | Next |
| ERROR_FLT_INVALID_NAME_REQUEST | ERROR_FLT_NOT_INITIALIZED |
ERROR_FLT_NOT_SAFE_TO_POST_OPERATION
Deferred post-processing is constrained by I/O context
ERROR_FLT_NOT_SAFE_TO_POST_OPERATION means the current completion cannot safely be moved to a worker thread using the requested Filter Manager mechanism. Post-operation callbacks may run at elevated IRQL or in contexts that hold filesystem resources; blindly queuing and waiting can invert lock order or block a thread required to complete the same I/O.
FltDoCompletionProcessingWhenSafe is intended to invoke a safe callback immediately when possible or arrange worker-thread execution when Filter Manager can do so without the known deadlock conditions. It must not be called while the callback is draining, and only IRP-based operations can be retained with FLT_POSTOP_MORE_PROCESSING_REQUIRED.
Design choices after this result
- Check the operation type, current IRQL, and post-operation flags before requesting deferred work.
- Keep the unsafe callback limited to capturing referenced state needed by later processing.
- Do not wait synchronously for a worker that may depend on completion of the current I/O.
- Provide a fallback that finishes the operation without optional deferred processing when safety cannot be established.
References
- Microsoft: FltDoCompletionProcessingWhenSafe
- Microsoft: post-operation callback constraints
- Microsoft Open Specifications: STATUS_FLT_NOT_SAFE_TO_POST_OPERATION
Looking for a different code? Search another status or error code.