| Previous | Next |
| ERROR_HV_INVALID_CPU_GROUP_STATE | ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE |
ERROR_HV_OPERATION_FAILED
ERROR_HV_OPERATION_FAILED is HRESULT 0xC0350071 in the generic hypervisor operation failure area of the Windows virtualization stack. It applies to a hypervisor request that failed without this HRESULT identifying a narrower public reason.
Where the result originates
This code is a terminal summary, so the diagnostic value normally lies in the earlier event, hypercall result, host state, or translated inner status. Preserve the first failure before management software retries or collapses it.
This result belongs to the hypervisor facility rather than the higher-level VM management UI. The TLFS and WHP documentation provide the surrounding partition, message, memory, and virtual-processor model, but the first low-level operation and any nested status remain the authoritative incident evidence.
Neighboring result: Do not stop at OPERATION_FAILED if the same event chain contains a specific memory, acknowledgement, buffer, partition, or VID code; the specific status defines the actionable boundary.
Build an incident record
| Evidence | Why it changes the diagnosis |
|---|---|
| Exact operation | Record the hypervisor/VID request, target partition or VP, and state expected by the caller. |
| Inner result chain | Preserve nested HRESULT, NTSTATUS, hypervisor status, and event IDs in order. |
| State snapshot | Capture partition, VP, memory mapping, and host-service state at first failure. |
| Reproduction boundary | Identify the smallest supported operation that returns the same code. |
Run narrow checks
- Disable automatic retries long enough to capture the first event chain.
- Repeat with one known-good partition or VP on the same host.
- Compare the same VM on another compatible host without modifying its disks.
- Escalate with traces if the result remains generic after the failing stage is isolated.
Test this result with one known event, one known idle interval, and one known-good transport path. During the comparison, keep session generation and reader ownership explicit so empty data is not confused with a dead connection.
Interpret three controls
| Control | Interpretation | Hold constant |
|---|---|---|
| Known diagnostic event | Trigger one controlled event. Its presence or absence distinguishes it empty data, liveness, and capture-configuration paths. | Keep the same target, transport, session generation, and reader. |
| Known-good transport path | Using the same debugger against a known-good target can localize it to target configuration versus physical/network transport. | Preserve debugger version and endpoint settings. |
| Idle versus disconnected interval | An intentional idle interval should not look identical to a broken link. Compare timestamps and keepalive activity around it. | Hold polling interval and timeout fixed in the test. |
Keep neighboring states separate
Do not equate it with a failed VM before separating an empty read, inactive physical transport, missing producer event, and a second reader that drained the channel. Keep that distinction explicit in the incident record.
Keep the hexadecimal result value and any nested hypervisor status. Higher layers can map distinct resource, buffer, message, or state failures to the same generic start or migration message.
Prove the correction
Closure requires the original operation to succeed and the first-failure chain to disappear; a later retry succeeding without explanation is not sufficient.
Technical references
- Microsoft Open Specifications: HRESULT values — used to interpret this result.
- Microsoft: Hyper-V TLFS — used to interpret this result.
- Microsoft: Hyper-V operational troubleshooting — used to interpret this result.
- Microsoft: Hyper-V event-log collection guidance — used to interpret this result.
Looking for a different code? Search another status or error code.