| Previous | Next |
| ERROR_VOLMGR_PLEX_MISSING | ERROR_VOLMGR_PLEX_TYPE_INVALID |
ERROR_VOLMGR_PLEX_REGENERATING
Identify the owner before touching the layout: volmgr plex regenerating
The practical meaning of ERROR_VOLMGR_PLEX_REGENERATING (0xC038003D) is tied to volume plex descriptor, layout type and regeneration state: the plex is already being rebuilt from another active copy and rejects a competing maintenance 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.
Minimum diagnostic set
| Storage diagnostic field | Value |
|---|---|
| Closest comparison | ERROR_VOLMGR_PLEX_IN_SYNC |
| Owning object | volume plex descriptor, layout type and regeneration state |
| Rejected invariant | the plex is already being rebuilt from another active copy and rejects a competing maintenance request |
| Identity and generation | volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job |
| Narrow experiment | start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes |
Do not overwrite this result with a close, detach or rollback error. Preserve the causal order so the original storage contract remains visible.
Reproduce without destructive cleanup
- serialize the failing request and the enumeration from which its identifiers came.
- Preserve volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job while every handle is still valid.
- Repeat the operation using this controlled change: start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes.
- Close and reacquire the relevant objects, then run once more to test lifecycle correctness after this result.
The distinction from ERROR_VOLMGR_PLEX_IN_SYNC is operational. The plex is already being rebuilt from another active copy and rejects a competing maintenance 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.
Restore the contract
Wait for the owning job or transaction to reach a terminal state, then refresh all identifiers before issuing a single retry. Apply the change through the supported storage API, then close and reacquire affected objects before retrying.
- the first retry uses newly enumerated identifiers rather than cached handles.
- The durable metadata or provider state agrees with the success returned after it.
- A second run after close/reopen does not recreate the rejected condition.
- the nearby
ERROR_VOLMGR_PLEX_IN_SYNCpath remains separately testable and separately logged.
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.