| Previous | Next |
| ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED | ERROR_VID_MMIO_RANGE_DESTROYED |
ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET
ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET is HRESULT 0xC0370020 in the VID memory-block property state area of the Windows virtualization stack. The built-in message names the immediate result; the useful custom context is the exact boundary: a memory-block property whose one-time set or reset transition has already occurred. Record the first returning operation and host-side event before a management layer retries or translates it.
Why this HRESULT is specific
The property is not freely mutable; the caller attempted to apply the transition more than once in the same object generation. Preserve the first successful setter and initialization path.
Hyper-V architecture documentation identifies VID as the component that provides partition, virtual-processor, and memory-management services., many ERROR_VID_* values describe internal host objects rather than a public API that administrators should call directly. Accordingly, diagnose this result through the named object/state, the VMMS or Worker event chain, and the operation that produced it; do not invent a user-mode VID call from the constant name.
Neighboring result: This is not a value-validation error. The state machine rejects a repeated transition even if the repeated value matches.
Records worth collecting
| Evidence | Why it changes the diagnosis |
|---|---|
| Property identity | Record property selector, requested value, and memory block. |
| First transition | Keep successful set/reset stack, timestamp, and owner. |
| Repeated caller | Capture duplicate initialization or retry path. |
| Object generation | Note reuse, restore, or wrapper reset assumptions. |
Preserve identifiers and counts without dumping guest secrets or unrelated memory. Useful this result timestamps include the last successful operation, first failure, any automatic retry, and the object-generation change that followed.
A reproducible test plan
- Centralize ownership of the one-time property transition.
- Do not retry a successful setter after a later unrelated failure.
- Recreate the object only through supported lifecycle if a different property state is required.
- Test partial initialization rollback around the setter.
Use a controlled partition or disposable VM when a mapping, lock, or teardown test can be destructive. During the result run, keep page units, GPA boundaries, parent object, handle generation, and release order visible.
Comparison matrix
Across these controls for it, preserve a memory-block property whose one-time set or reset transition has already occurred as the boundary under test.
| Control | Interpretation | Hold constant |
|---|---|---|
| Same request under lower host pressure — this result | If this result changes after controlled pressure is removed, quantify host/pool capacity; if not, focus on caller bookkeeping. | Do not modify guest disks or unrelated VM devices during the result comparison. |
| Smaller exact range — it | Reduce only page count or mapped extent. If it moves, range arithmetic, object limits, or reserve capacity is involved. | Keep the same block, GPA base, flags, and partition generation for it. |
| Balanced fresh lifecycle — it | Create, use, release, and destroy one object generation. A different it exposes leaked references, locks, handles, or mappings. | Preserve sizes and operation order while changing only generation. |
Misleading shortcuts
Restarting can release the exact lock, reference, mapping, or opaque handle behind it without fixing the lifecycle defect. Before recovering from it, preserve the object graph and acquire/release counts.
Verification after repair
Each memory-block generation performs the property transition at most once and retries resume after, rather than repeat, that step. Repeat the original operation under the original supported conditions and retain one deliberate negative control. A management command succeeding on a different object is not sufficient to close this incident.
Technical references
These sources define it and the public Hyper-V architecture surrounding the internal state. They do not create a public user-mode VID API for the named object.
- Microsoft Open Specifications: HRESULT values — used to interpret the boundary.
- Microsoft: WHvMapGpaRange — used to interpret the boundary.
- Microsoft: WHP memory data types — used to interpret the boundary.
- Microsoft: Hyper-V architecture — used to interpret the boundary.
Looking for a different code? Search another status or error code.
