What does HRESULT 0x801F001B (ERROR_FLT_ALREADY_ENLISTED) mean?

 
Previous Next
ERROR_FLT_VOLUME_ALREADY_MOUNTED ERROR_FLT_CONTEXT_ALREADY_LINKED

ERROR_FLT_ALREADY_ENLISTED

Enlistment is one relationship per instance and transaction

ERROR_FLT_ALREADY_ENLISTED is returned by FltEnlistInTransaction when the caller is already enlisted in that transaction. Enlistment asks Filter Manager to deliver selected transaction notifications—such as prepare, commit, finalize, or rollback—to the minifilter’s registered transaction callback using its transaction context.

Repeated enlistment is not how a filter expands its notification mask after the fact. The driver should establish one transaction context, select the complete required mask, and make concurrent paths converge on that state. A race can otherwise allocate multiple contexts and attempt duplicate enlistment while filesystem operations for the same transaction arrive on different threads.

Transaction-state checks

  • Use a single per-transaction initialization path protected by the context set race rules.
  • Register TransactionNotificationCallback before attempting enlistment.
  • Choose commit and rollback notifications according to the state the filter must reconcile.
  • Release the losing context and reuse the installed transaction context after a duplicate attempt.

References


Looking for a different code? Search another status or error code.