| Previous | Next |
| ERROR_FLT_CONTEXT_ALREADY_DEFINED | ERROR_FLT_DISALLOW_FAST_IO |
ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST
Not every callback-data operation can be issued asynchronously
ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST is specifically documented for attempts to pass an IRP_MJ_CREATE request to FltPerformAsynchronousIo. Create processing establishes a file object and participates in name resolution, sharing checks, reparse handling, and security evaluation; it cannot use this generic asynchronous callback-data path.
The fix is not to wait on the same asynchronous request after submission. The initiating code must choose an API and execution model that supports create semantics, such as a Filter Manager create routine at an allowed IRQL. Separately, returning FLT_PREOP_SYNCHRONIZE for asynchronous reads or writes is also unsafe and can deadlock system threads.
Evidence to capture
- Record the callback data major function and the routine used to issue it.
- Verify whether the request was allocated by the filter or intercepted from an existing I/O path.
- Use the documented create APIs instead of converting
IRP_MJ_CREATEinto an asynchronous callback-data operation. - Keep operation completion and callback lifetime rules distinct from user-mode overlapped I/O.
References
- Microsoft: FltPerformAsynchronousIo restrictions
- Microsoft: synchronization limits for minifilter I/O
- Microsoft: callback-data operation categories
Looking for a different code? Search another status or error code.