| Previous | Next |
| ERROR_VID_QUEUE_FULL | ERROR_VID_INVALID_OBJECT_NAME |
ERROR_VID_HANDLER_NOT_PRESENT
ERROR_VID_HANDLER_NOT_PRESENT is HRESULT 0xC0370004 in the VID handler lookup area of the Windows virtualization stack. It applies to dispatch of a VID message for which no current handler is registered.
What the code establishes
The queue delivered or attempted to route a message whose message class has no live owner in this partition/worker generation. Investigate initialization ordering, premature unregister, and stale messages.
Neighboring result: DUPLICATE_HANDLER and TOO_MANY_HANDLERS fail during registration. HANDLER_NOT_PRESENT appears at lookup or dispatch after the expected registration is absent.
Evidence that should survive remediation
| Evidence | Why it changes the diagnosis |
|---|---|
| Message class | Record type, version, source, target, and queue sequence. |
| Registration timeline | Keep expected register time, unregister time, and dispatch time. |
| Owner generation | Identify VM worker, partition, or module generation that should own the callback. |
| Stale backlog | Determine whether the message predates a reset, migration, or handler replacement. |
Controlled diagnostic sequence
- Assert handler registration completes before producers can enqueue the message class.
- Drain or version queues across worker/partition replacement.
- Verify rollback does not unregister a handler owned by another successful path.
- Use one deliberately unknown message as a negative dispatch test.
Reproduce this condition with bounded producers and a fully instrumented consumer. Preserve message ordering, queue generation, handler ownership, target VP, and acknowledgement timestamps while changing only one concurrency condition.
Read the comparison tests
| Control | Interpretation | Hold constant |
|---|---|---|
| Controlled stall or burst | Deliberately slow the consumer or bound the producer rate. The threshold at which it appears identifies backpressure versus lifecycle failure. | Record queue depth, oldest-item age, and acknowledgement timing. |
| Single producer and consumer | If it disappears with serialized ownership, the queue, handler, acknowledgement, or delivery race is implicated. | Preserve message type, partition, target VP, and queue capacity. |
| Fresh channel generation | A new queue or handler generation changing it points to stale registration, backlog, or incomplete teardown. | Keep payload, producer order, and host build unchanged in the test. |
Avoid the wrong recovery
A handle observed is generation-bound. Keep its parent partition and object type beside the token; never serialize it, copy it to another partition, or reuse it after the terminal transition.
Acceptance test
The original class consistently resolves to the intended current-generation handler, while stale or unknown classes are rejected before state mutation.
Technical references
- Microsoft Open Specifications: HRESULT values — used to interpret this result.
- Microsoft TLFS: inter-partition communication — used to interpret this result.
- Microsoft TLFS: HV_MESSAGE — used to interpret this result.
- Microsoft: Hyper-V architecture — used to interpret this result.
Looking for a different code? Search another status or error code.
