| Previous | Next |
| ERROR_VHD_INVALID_FILE_SIZE | ERROR_VIRTDISK_NOT_VIRTUAL_DISK |
ERROR_VIRTDISK_PROVIDER_NOT_FOUND
Identify the owner before touching the layout: virtdisk provider not found
ERROR_VIRTDISK_PROVIDER_NOT_FOUND (0xC03A0014) is emitted by the virtdisk path when the Virtual Disk API cannot select a provider that recognizes the requested device type, vendor and image format. The deciding object for this HRESULT is Virtual Disk API provider, image format and host-disk state, so the first investigation belongs there rather than in a generic “disk failure” bucket.
The Virtual Disk API chooses a format provider from VIRTUAL_STORAGE_TYPE, opens an image with explicit access rights and can attach it as a disk while diagnosing this result. Provider selection, backing-chain integrity, host-file attributes, sector geometry and operating-system ownership are independent validation stages while diagnosing it. This object model determines which identifiers, counts and ownership state are meaningful.
The standard message identifies the immediate condition, but this result also requires the producer API, object topology and attempted state transition. Capture them before an automatic refresh advances the storage generation.
Minimum diagnostic set
| Storage diagnostic field | Value |
|---|---|
| Closest comparison | ERROR_VIRTDISK_NOT_VIRTUAL_DISK |
| Owning object | Virtual Disk API provider, image format and host-disk state |
| Rejected invariant | the Virtual Disk API cannot select a provider that recognizes the requested device type, vendor and image format |
| Identity and generation | image path, VIRTUAL_STORAGE_TYPE, provider/vendor IDs, VHD/VHDX/VHD Set identifiers, host sector sizes, attach flags, ownership and online/read-only state |
| Narrow experiment | open the same image with an explicit matching VIRTUAL_STORAGE_TYPE and with the original type/vendor tuple |
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.
Reproduce without destructive cleanup
- serialize the failing request and the enumeration from which its identifiers came.
- Preserve image path, VIRTUAL_STORAGE_TYPE, provider/vendor IDs, VHD/VHDX/VHD Set identifiers, host sector sizes, attach flags, ownership and online/read-only state while every handle is still valid.
- Repeat the operation using this controlled change: open the same image with an explicit matching VIRTUAL_STORAGE_TYPE and with the original type/vendor tuple.
- Close and reacquire the relevant objects, then run once more to test lifecycle correctness after this result.
Compare traces for ERROR_VIRTDISK_NOT_VIRTUAL_DISK and it. The latter page covers a nearby storage boundary, whereas it rejects the Virtual Disk API cannot select a provider that recognizes the requested device type, vendor and image format for this HRESULT. A correct caller should be able to reproduce each case independently.
Mechanism-specific note
Provider selection uses device type, vendor ID and image format for this HRESULT. Capture the exact VIRTUAL_STORAGE_TYPE and whether the caller asked Windows to infer it for this HRESULT. A filename extension is only a hint; renamed files, unsupported formats and an incorrect vendor tuple can all fail before image metadata is parsed.
Restore the contract
Correct the provider, image format, backing-file chain, host geometry or disk ownership identified by the failing call, then reopen the image to obtain a new handle before retrying. After correcting it, reopen the pack, volume, tier, snapshot or virtual disk so no cached generation participates in the validation run for this HRESULT.
- the first retry uses newly enumerated identifiers rather than cached handles while diagnosing it.
- 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_VIRTDISK_NOT_VIRTUAL_DISKpath 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: Virtual Disk API — defines the virtdisk objects used to interpret it.
- Microsoft: OpenVirtualDisk — primary API or object-model reference for the boundary.
- Microsoft: AttachVirtualDisk — use this source to verify virtdisk state and parameters for this HRESULT.
- Microsoft: GetVirtualDiskInformation — documents the supported management path relevant to it.
Looking for a different code? Search another status or error code.