| Previous | Next |
| ERROR_VID_PARTITION_NAME_NOT_FOUND | ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT |
ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS
ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS is HRESULT 0xC037000B in the VID queue creation identity area of the Windows virtualization stack. It applies to creation of a VID message queue whose name or identity is already registered.
State and ownership model
The queue already exists in the current partition/worker generation. Determine whether the caller should attach to that queue, whether initialization ran twice, or whether teardown left an orphan.
Neighboring result: QUEUE_FULL concerns capacity of an existing queue; ALREADY_EXISTS concerns duplicate creation before normal message flow.
Capture before changing anything
| Evidence | Why it changes the diagnosis |
|---|---|
| Queue identity | Record name, handle if available, partition, direction, and message role. |
| Existing owner | Capture consumer thread/module and creation correlation ID. |
| Duplicate path | Keep second create stack and initialization phase. |
| Cleanup record | Compare queue create/close/delete counts across failures. |
Reduce the case safely
- Make queue creation single-owner and publish the handle only after success.
- Use generation-scoped names for replacement workers.
- Inject failures after creation to prove rollback removes the queue.
- Do not attach to an existing queue until message format and owner are verified.
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.
What comparison can tell you
| 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. |
Do not erase the evidence
Closure criteria
Only one queue is created for each intended channel, and lifecycle stress leaves no queue from an earlier generation.
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.