| Previous | Next |
| ERROR_VOLMGR_PLEX_NOT_RAID5 | ERROR_VOLMGR_STRUCTURE_SIZE_INVALID |
ERROR_VOLMGR_PLEX_NOT_SIMPLE
Read the code at the owning storage layer: volmgr plex not simple
Windows returns ERROR_VOLMGR_PLEX_NOT_SIMPLE, value 0xC0380040, at the volmgr boundary. It means that the operation requires one simple plex and cannot be applied to a spanned, striped, mirrored or parity layout for it. Preserve the exact handle and generation of volume plex descriptor, layout type and regeneration state before any rescan changes the evidence.
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.
Diagnosis of this result should begin with the object model and generation current at the failure. A later successful enumeration may describe a replacement object and cannot retroactively validate the rejected request while diagnosing it.
Build a trustworthy incident record
| Storage diagnostic field | Value |
|---|---|
| Identity and generation | volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job |
| Narrow experiment | repeat the operation on simple, spanned and striped test plexes while preserving volume size and disk health |
| Closest comparison | This result_SPANNED |
| Owning object | volume plex descriptor, layout type and regeneration state |
| Rejected invariant | the operation requires one simple plex and cannot be applied to a spanned, striped, mirrored or parity layout |
Do not overwrite this result with a close, detach or rollback error. Preserve the causal order so the original storage contract remains visible while diagnosing it.
Controlled comparison
- Associate this result with one caller, one transaction and one target UniqueId.
- Save the pre-call and post-call inventories, including volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job while diagnosing it.
- Use this A/B case for it without touching unrelated storage: repeat the operation on simple, spanned and striped test plexes while preserving volume size and disk health.
- Validate both the HRESULT and the on-disk or provider state after the relevant reopen, remount or attach cycle for it.
Compare traces for ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED and it. The latter page covers a nearby storage boundary, whereas it rejects the operation requires one simple plex and cannot be applied to a spanned, striped, mirrored or parity layout for it. A correct caller should be able to reproduce each case independently while diagnosing it.
Mechanism-specific note
Simple, spanned, striped and parity plexes expose different address mappings for it. Preserve the type and the extent-to-disk order. An operation that edits linear extent boundaries cannot safely be applied to a striped or parity mapping even when the total byte length is identical while diagnosing it.
Completion criteria
Select an operation compatible with the actual plex type and keep at least one active data copy throughout detach, repair or regeneration for it. Keep the correction scoped to the owning object and avoid rewriting adjacent metadata merely to make the call return success for it.
- 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 the condition.
- the nearby
ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNEDpath remains separately testable and separately logged.
A reboot, blanket disk conversion or deletion of storage metadata is not a justified first response to it; it changes multiple invariants and can erase the evidence needed to identify the defect.
Technical references
- Microsoft: COM error codes for VOLMGR, VHD and SDIAG — primary API or object-model reference for the boundary.
- Microsoft: Virtual Disk Service object model — use this source to verify volmgr state and parameters for it.
- Microsoft: Pack object — documents the supported management path relevant to it.
- Microsoft: Virtual Disk Service common return codes — defines the volmgr objects used to interpret it.
Looking for a different code? Search another status or error code.
