| 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.
Keep the first result attached to its request parameters and object instance. Cleanup failures or a later drive-letter change are secondary evidence, not replacements for the original failure.
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.
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 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.
Mechanism-specific note
Regeneration has its own asynchronous job lifetime. Capture the job or task identity, source copy, target member, progress and last error. 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.
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 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_MEMBER_IN_SYNCand has no unbounded retry loop.
Technical references
- Microsoft: COM error codes for VOLMGR, VHD and SDIAG — use this source to verify volmgr state and parameters.
- Microsoft: Virtual Disk Service object model — documents the supported management path relevant to this HRESULT.
- Microsoft: Pack object — defines the volmgr objects used to interpret it.
- Microsoft: Virtual Disk Service common return codes — primary API or object-model reference.
Looking for a different code? Search another status or error code.
