| Previous | Next |
| VDS_E_SHRINK_SIZE_TOO_BIG | VDS_E_VOLUME_HIDDEN |
VDS_E_UNRECOVERABLE_PROVIDER_ERROR
VDS_E_UNRECOVERABLE_PROVIDER_ERROR is the failure HRESULT 0x80042575 (signed decimal -2147211915, unsigned decimal 2147755381). Its severity bit is set, the facility field is 4 (FACILITY_ITF), and the facility-specific code field is 0x2575.
A provider is unrecoverable within the current VDS service session
Microsoft defines this code as an unrecoverable provider error and states that the service must be shut down to regain full functionality. The provider has crossed a recovery boundary that cannot be repaired safely while the current VDS process continues using it.
Where the failure boundary lies
This result combines a provider-scoped origin with a service-session consequence. VDS_E_PROVIDER_INTERNAL_ERROR can describe a serious provider failure without mandating shutdown. VDS_E_UNRECOVERABLE_ERROR is service-wide and does not specifically attribute the source to a provider. This code sits between those concepts: a provider failed fatally, and VDS must restart to restore a complete management environment.
Likely causes to separate
- The provider’s internal object graph or cache cannot be rebuilt safely in the active process.
- Communication with a storage subsystem failed in a way that leaves provider state indeterminate.
- A provider component detected memory corruption, an incompatible binary interface, or a nonrecoverable initialization transition.
- A vendor provider cannot unload or reinitialize cleanly after a firmware, controller, or subsystem failure.
Evidence worth preserving
- Preserve provider and VDS event logs before service shutdown, including the provider GUID and any vendor-specific error payload.
- Record all objects owned by the provider and which operation first exposed the fatal state.
- Capture service-control events and whether shutdown occurred automatically or must be initiated by the management application or administrator.
- Collect subsystem health, controller status, path state, firmware, provider version, and recent update history.
Diagnostic sequence
- Stop sending work to the affected provider and invalidate all interfaces obtained from the current VDS session.
- Assess whether other providers remain temporarily usable, but do not assume “partial functionality” is appropriate for destructive automation.
- After shutdown and restart, reenumerate provider objects and compare persistent IDs with the pre-failure inventory.
- If the same provider fails during initialization or first query, isolate or update that provider rather than looping service restarts.
Retry and recovery
The minimum contract-level recovery is a VDS service shutdown followed by a clean initialization. Depending on the cause, the provider’s subsystem, management agent, or host may also need recovery. The original operation should not be replayed until the provider inventory is coherent and any partial storage changes have been reconciled.
What this HRESULT does not establish
A service restart is necessary according to the code’s contract but may be insufficient. The HRESULT does not guarantee that hardware state is healthy, nor does it prove that every provider is damaged.
Practical example
A vendor hardware provider loses synchronization with an array during a configuration transaction and can no longer reconcile its object cache. VDS returns VDS_E_UNRECOVERABLE_PROVIDER_ERROR. The application drains work, records the provider identity, restarts VDS, and refuses further changes when the provider fails again during enumeration.
Guidance for software and telemetry
Treat the current VDS connection as poisoned. Products should surface an administrator-visible provider identity and avoid automatic endless service restart, which can erase the timing and logs needed to diagnose the first fatal transition.
Official Microsoft references
- Microsoft: Virtual Disk Service common return codes
- Microsoft: MS-VDS protocol error codes
- Microsoft: VDS provider object
- Microsoft: IVdsHwProvider::Reenumerate
- Microsoft: IVdsHwProvider::Refresh
Looking for a different code? Search another status or error code.