| Previous | Next |
| ERROR_VOLMGR_NO_REGISTERED_USERS | ERROR_VOLMGR_NOTIFICATION_RESET |
ERROR_VOLMGR_NO_SUCH_USER
What this result says about the disk model: volmgr no such user
ERROR_VOLMGR_NO_SUCH_USER (0xC038002B) is emitted by the volmgr path when the caller tried to update or remove a notification registration identifier that is no longer present while diagnosing this result. The deciding object for it is volume-manager notification registration and pending wait request, so the first investigation belongs there rather than in a generic “disk failure” bucket.
Dynamic volumes are represented as packs containing disks and volumes; each volume has one or more plexes, and each plex is assembled from members and extents while diagnosing this result. Indices and counts are relative to the submitted layout generation, while configuration logs are replicated across participating dynamic disks. This object model determines which identifiers, counts and ownership state are meaningful.
Keep the first result attached to its request parameters and object generation. Cleanup failures or a later drive-letter change are secondary evidence, not replacements for the original boundary.
Capture the exact object generation
| Storage diagnostic field | Value |
|---|---|
| Owning object | volume-manager notification registration and pending wait request |
| Rejected invariant | the caller tried to update or remove a notification registration identifier that is no longer present |
| Identity and generation | registration ID, task number, pending IRP count, process lifetime, pack ID and the notification generation returned before the failure |
| Narrow experiment | register one consumer, issue exactly one asynchronous wait, complete or cancel it, and compare registration/task identifiers at each step |
| Closest comparison | ERROR_VOLMGR_NO_REGISTERED_USERS |
Keep this HRESULT as the primary result if rollback or cleanup reports another code; those later values describe recovery, not the first rejected invariant while diagnosing this result.
Prove the boundary in a test volume
- Before changing state for it, freeze the failing generation and save registration ID, task number, pending IRP count, process lifetime, pack ID and the notification generation returned before the failure.
- Exercise this exact comparison for it: register one consumer, issue exactly one asynchronous wait, complete or cancel it, and compare registration/task identifiers at each step while diagnosing this result.
- During the result comparison, keep image bytes, unrelated disks, provider policy and cluster topology fixed while diagnosing it.
- After the test, record the next return value and the durable object state; crossing the boundary should expose a later result rather than silently retrying.
Compare traces for ERROR_VOLMGR_NO_REGISTERED_USERS and it. The latter page covers a nearby storage boundary, whereas it rejects the caller tried to update or remove a notification registration identifier that is no longer present for it. A correct caller should be able to reproduce each case independently.
Mechanism-specific note
Notification registrations have two lifetimes: the registration itself and any outstanding asynchronous wait while diagnosing it. 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 while diagnosing it.
Safe recovery path
Repair notification ownership and sequencing: cancel stale waits, unregister only live IDs, then create one replacement registration after the previous generation is closed while diagnosing it. The result repair is incomplete until a fresh enumeration and new handle observe the corrected state.
- The controlled A/B case changes only the invariant responsible for it.
- No unrelated disk, cluster owner, tier policy or virtual-disk backing file is altered to hide it.
- Health, synchronization or job state reaches a terminal value consistent with the repaired the operation.
- Telemetry includes both symbolic names when it or
ERROR_VOLMGR_NO_REGISTERED_USERSoccurs again.
Do not use it as a reason to edit dynamic-disk sectors, VHDX metadata, RCT sidecars or snapshot support files directly. Unsupported edits can turn a recoverable state mismatch into persistent corruption while diagnosing it.
Technical references
- Microsoft: COM error codes for VOLMGR, VHD and SDIAG — defines the volmgr objects used to interpret it.
- Microsoft: Virtual Disk Service object model — primary API or object-model reference for the boundary.
- Microsoft: Pack object — use this source to verify volmgr state and parameters for it.
- Microsoft: Virtual Disk Service common return codes — documents the supported management path relevant to it.
Looking for a different code? Search another status or error code.