| Previous | Next |
| ERROR_VID_MESSAGE_QUEUE_CLOSED | ERROR_VID_STOP_PENDING |
ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED
ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED is HRESULT 0xC037001B in the VID virtual-processor capacity area of the Windows virtualization stack. It applies to adding another virtual processor to a partition that already reached its supported or configured maximum.
Why this result is specific
The requested VP index/count exceeds a partition, host, or configuration limit. Separate a simple count error from host capability and from a stale VP that teardown did not release.
Neighboring result: INVALID_PROCESSOR_STATE concerns an existing VP state; LIMIT_EXCEEDED occurs while growing the VP set.
Records worth collecting
| Evidence | Why it changes the diagnosis |
|---|---|
| Requested VP | Record index, current count, configured count, and host capability. |
| Partition properties | Keep processor count and feature settings applied before setup. |
| Existing VP inventory | Capture created/deleted VPs and generations. |
| Host topology | Record logical processors, NUMA layout, and policy limits. |
A reproducible test plan
- Query capability and validate count before creating VPs.
- Use contiguous valid VP indexes required by the API.
- Delete VPs and partition resources symmetrically on rollback.
- Test maximum supported count and one beyond it.
Reduce the reproducer to one partition and as few VPs as possible. In the diagnostic trace, instrument each run, exit, cancel, stop, reset, and delete transition so an asynchronous completion is not mistaken for an immediate state change.
Comparison matrix
| Control | Interpretation | Hold constant |
|---|---|---|
| Clean partition generation | A fresh partition changing it points to stale VP state, pending exits, or incomplete deletion rather than guest code. | Use identical VP indexes, registers, and run sequence in the result comparison. |
| Instrumented run/stop race | Control run, cancel, intercept completion, stop, reset, and delete order. The first illegal transition explains it. | Keep one VP and one deterministic exit reason until ordering is proven. |
| One VP versus target count | If it appears only as processors are added, record the first failing index and capability/configuration limit. | Keep partition properties and host topology fixed. |
Misleading shortcuts
Repeated start/stop commands can obscure the first illegal VP transition behind it. Preserve run-thread, exit reason, pending intercept, cancellation, and state-completion order.
Verification after repair
The configured VP count is created and run reliably at the supported limit, and excess requests fail before partial creation.
Technical references
- Microsoft Open Specifications: HRESULT values — used to interpret this result.
- Microsoft: WHvCreateVirtualProcessor — used to interpret this result.
- Microsoft: WHvRunVirtualProcessor — used to interpret this result.
- Microsoft: WHvCancelRunVirtualProcessor — used to interpret this result.
Looking for a different code? Search another status or error code.
