What does HRESULT 0xC0380022 (ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS) mean?

 
Could be also:
ConstantTypeOS
STATUS_VOLMGR_MAXIMUM_REGISTERED_USERSNTSTATUSWindows
Previous Next
ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID ERROR_VOLMGR_MEMBER_IN_SYNC

ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS

Locate the rejected storage invariant: volmgr maximum registered users

ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS (0xC0380022) is emitted by the volmgr path when the kernel volume manager has exhausted its notification-registration slots for this control interface. The deciding object is volume-manager notification registration and pending wait request, so the first investigation belongs there rather than in a generic “disk failure” bucket.

Evidence to preserve before repair

Storage diagnostic fieldValue
Identity and generationregistration ID, task number, pending IRP count, process lifetime, pack ID and the notification generation returned before the failure
Narrow experimentregister one consumer, issue exactly one asynchronous wait, complete or cancel it, and compare registration/task identifiers at each step
Closest comparisonERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS
Owning objectvolume-manager notification registration and pending wait request
Rejected invariantthe kernel volume manager has exhausted its notification-registration slots for this control interface

A management layer handling this result should report later recovery errors separately, because they answer a different question from the failed storage operation.

One-variable reproduction

  1. Associate this result with one caller, one transaction and one target UniqueId.
  2. Save the pre-call and post-call inventories, including registration ID, task number, pending IRP count, process lifetime, pack ID and the notification generation returned before the failure.
  3. Use this A/B case without touching unrelated storage: register one consumer, issue exactly one asynchronous wait, complete or cancel it, and compare registration/task identifiers at each step.
  4. Validate both the HRESULT and the on-disk or provider state after the relevant reopen, remount or attach cycle.

The distinction from ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS is operational. The kernel volume manager has exhausted its notification-registration slots for this control interface; log the neighboring code separately so capability, identity and state are not conflated.

Mechanism-specific note

Notification registrations have two lifetimes: the registration itself and any outstanding asynchronous wait. Log both identifiers and the cancellation path. A service restart, handle close or notification reset can invalidate the old generation even when the numeric task value is later reused, so never match completion by task number alone.

Repair without rewriting unrelated metadata

Repair notification ownership and sequencing: cancel stale waits, unregister only live IDs, then create one replacement registration after the previous generation is closed. Apply the change through the supported storage API, then close and reacquire affected objects before retrying.

  • The original request now reaches success or a documented later status with the intended layout and access mode.
  • A new enumeration reports internally consistent IDs, counts, geometry and ownership for the corrected object.
  • The passing state survives the relevant lifecycle transition, such as reopen, remount, owner change or detach/attach.
  • The application still distinguishes it from ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS and has no unbounded retry loop.

Technical references


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