| Previous | Next |
| ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE | ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE |
ERROR_VID_PAGE_RANGE_OVERFLOW
ERROR_VID_PAGE_RANGE_OVERFLOW is HRESULT 0xC0370013 in the VID GPA range arithmetic area of the Windows virtualization stack. It applies to calculation of a page range within a VID memory block or guest-physical extent.
What the code establishes
The requested start plus page count exceeds the valid memory-block range or overflows the range representation. Preserve both page and byte forms to expose unit and arithmetic errors.
Neighboring result: RESERVE_PAGE_SET_TOO_SMALL is capacity of a reserve set; PAGE_RANGE_OVERFLOW is invalid range arithmetic relative to the memory block.
Evidence that should survive remediation
| Evidence | Why it changes the diagnosis |
|---|---|
| Range tuple | Record block page count, start page, requested pages, and computed end. |
| Unit conversion | Keep page size, byte offset, alignment, and checked multiplication results. |
| Integer widths | Record 32/64-bit types and language-binding conversions. |
| Boundary cases | Test zero, last valid page, exact-end range, and one-page overflow. |
Controlled diagnostic sequence
- Use checked addition before comparing end against block size.
- Normalize all values to pages or bytes once, not repeatedly.
- Reject negative/signed-to-unsigned conversions at the API boundary.
- Fuzz range calculations near UINT32 and UINT64 limits.
Use a controlled partition or disposable VM when a mapping, lock, or teardown test can be destructive. During the test run, keep page units, GPA boundaries, parent object, handle generation, and release order visible.
Read the comparison tests
| Control | Interpretation | Hold constant |
|---|---|---|
| Same request under lower host pressure | 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 | 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. |
| Balanced fresh lifecycle | Create, use, release, and destroy one object instance. If a different result appears after recreation, investigate leaked references, locks, handles, or mappings. | Preserve sizes and operation order while changing only generation. |
Avoid the wrong recovery
Acceptance test
All in-range boundaries succeed, every out-of-range request fails deterministically, and arithmetic sanitizers report no overflow.
Technical references
- Microsoft Open Specifications: HRESULT values — used to interpret this result.
- Microsoft: WHvMapGpaRange — used to interpret this result.
- Microsoft: WHP memory data types — 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.
