WHvMapGpaRange2

Сопоставляет диапазон гостевого физического адресного пространства секции с памятью в указанном процессе узла.

Синтаксис

// Guest physical address
typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;

// Flags used by WHvMapGpaRange/WHvMapGpaRange2
typedef enum WHV_MAP_GPA_RANGE_FLAGS
{
    WHvMapGpaRangeFlagNone             = 0x00000000,
    WHvMapGpaRangeFlagRead             = 0x00000001,
    WHvMapGpaRangeFlagWrite            = 0x00000002,
    WHvMapGpaRangeFlagExecute          = 0x00000004,
    WHvMapGpaRangeFlagTrackDirtyPages  = 0x00000008,

} WHV_MAP_GPA_RANGE_FLAGS;

// Enables bitwise operators on the WHV_MAP_GPA_RANGE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_MAP_GPA_RANGE_FLAGS);

HRESULT
WINAPI
WHvMapGpaRange2(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ HANDLE Process,
    _In_ VOID* SourceAddress,
    _In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,
    _In_ UINT64 SizeInBytes,
    _In_ WHV_MAP_GPA_RANGE_FLAGS Flags
    );

Parameters

Partition

Дескриптор объекта секции.

Process

Дескриптор процесса узла, адресное пространство которого содержит область памяти, определяемую по SourceAddress. Дескриптор должен предоставить PROCESS_VM_READи PROCESS_VM_WRITEPROCESS_VM_OPERATION получить доступ к процессу.

SourceAddress

Задает адрес, выровненный по страницам, в адресном пространстве процесса, определяемого Processв области памяти, которая является источником сопоставления.

GuestAddress

Указывает целевой адрес в физическом адресном пространстве виртуальной машины.

SizeInBytes

Указывает число байтов, которые необходимо сопоставить.

Flags

Указывает флаги доступа для сопоставления.

Возвращаемое значение

Если функция выполнена успешно, возвращается S_OKзначение.

Если исходный регион или диапазон гостевых физических адресов не выровнен по страницам, имеет нулевой размер или описывает диапазон переполнения, функция возвращается E_INVALIDARG. Функция также возвращает значение E_INVALIDARGFlags или сочетание разрешений доступа, которые нельзя применить к странице.

Remarks

Функция WHvMapGpaRange2 — это расширенная форма WHvMapGpaRange. WHvMapGpaRange В то время как всегда использует адресное пространство вызывающего процесса в качестве источника сопоставления, WHvMapGpaRange2 принимает явный дескриптор Process и использует адресное пространство этого процесса. Это позволяет стеку виртуализации вернуть гостевую физическую память секции с памятью, принадлежащей другому процессу узла.

Создание сопоставления для диапазона в пространстве GPA секции задает регион в исходном процессе в качестве резервной памяти для этого диапазона. Операция заменяет все предыдущие сопоставления для указанных страниц GPA.

Чтобы удалить сопоставление, созданное с помощью WHvMapGpaRange2вызова WHvUnmapGpaRange.

Требования

Requirement Ценность
Минимальный поддерживаемый Windows Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64)
Header WinHvPlatform.h
Библиотека WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

См. также