| Previous | Next |
| ERROR_VOLMGR_MEMBER_NOT_DETACHED | ERROR_VOLMGR_ALL_DISKS_FAILED |
ERROR_VOLMGR_MEMBER_REGENERATING
Locate the rejected storage invariant: volmgr member regenerating
The practical meaning of ERROR_VOLMGR_MEMBER_REGENERATING (0xC0380028) is tied to dynamic-volume plex member descriptor and its backing extents: the member already has an active regeneration job and cannot accept another state-changing request. The result does not, by itself, prove file-system corruption or physical-media failure while diagnosing this result.
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. 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.
Evidence to preserve before repair
| Storage diagnostic field | Value |
|---|---|
| Narrow experiment | start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes |
| Closest comparison | ERROR_VOLMGR_MEMBER_IN_SYNC |
| Owning object | dynamic-volume plex member descriptor and its backing extents |
| Rejected invariant | the member already has an active regeneration job and cannot accept another state-changing request |
| Identity and generation | pack ID, volume ID, plex index, member index, disk IDs, extent offsets, health state and regeneration percentage |
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.
One-variable reproduction
- Capture the API parameters and object map that led to this result; do not begin with cleanup.
- Build a passing control with the same disks or image copy and preserve pack ID, volume ID, plex index, member index, disk IDs, extent offsets, health state and regeneration percentage.
- Run the narrow transition described here: start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes.
- Compare resulting IDs, counts, health and ownership to prove the caller crossed the result invariant rather than suppressing it.
The distinction from ERROR_VOLMGR_MEMBER_IN_SYNC is operational. The decisive condition is the member already has an active regeneration job and cannot accept another state-changing request; log the neighboring code separately so capability, identity and state are not conflated while diagnosing this result.
Mechanism-specific note
Regeneration has its own asynchronous job lifetime. Capture the job or task identity, source copy, target member, progress and last error for it. Starting a second job can compete for the same extents and obscures whether the first operation is progressing, paused or blocked on media I/O for it.
Repair without rewriting unrelated metadata
Wait for the owning job or transaction to reach a terminal state, then refresh all identifiers before issuing a single retry. After correcting it, reopen the pack, volume, tier, snapshot or virtual disk so no cached generation participates in the validation run.
- 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 object corrected after it.
- The passing state survives the lifecycle transition relevant to it, such as reopen, remount, owner change or detach/attach.
- The application still distinguishes it from
ERROR_VOLMGR_MEMBER_IN_SYNCand has no unbounded retry loop.
Before responding to it with destructive cleanup, prove which object owns the failure. Changing every disk or provider at once prevents a meaningful regression test.
Technical references
- Microsoft: COM error codes for VOLMGR, VHD and SDIAG — use this source to verify volmgr state and parameters for it.
- Microsoft: Virtual Disk Service object model — documents the supported management path relevant to it.
- Microsoft: Pack object — defines the volmgr objects used to interpret it.
- Microsoft: Virtual Disk Service common return codes — primary API or object-model reference for the boundary.
Looking for a different code? Search another status or error code.
