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_READPROCESS_VM_WRITE하고 PROCESS_VM_OPERATION 액세스해야 합니다.

SourceAddress

매핑의 원본인 메모리 영역의 Process주소 공간 내에서 페이지 정렬 주소를 지정합니다.

GuestAddress

VM의 실제 주소 공간에서 대상 주소를 지정합니다.

SizeInBytes

매핑할 바이트 수를 지정합니다.

Flags

매핑에 대한 액세스 플래그를 지정합니다.

반환 값

함수가 성공하면 반환 값은 .입니다 S_OK.

원본 지역 또는 게스트 실제 주소 범위가 페이지 정렬되지 않았거나, 크기가 0이거나, 오버플로되는 범위를 설명하는 경우 함수가 반환됩니다 E_INVALIDARG. 또한 이 함수는 페이지에 적용할 수 없는 액세스 권한의 값 또는 조합을 지정하는 경우에도 Flags 반환 E_INVALIDARG 됩니다.

Remarks

함수는 WHvMapGpaRange2 확장된 형식입니다 WHvMapGpaRange. 항상 호출 프로세스의 주소 공간을 매핑의 원본으로 사용하는 반면 WHvMapGpaRange 명시 WHvMapGpaRange2Process 핸들을 수락하고 해당 프로세스의 주소 공간을 사용합니다. 이렇게 하면 가상화가 다른 호스트 프로세스에서 소유한 메모리를 사용하여 파티션의 게스트 실제 메모리를 다시 스택할 수 있습니다.

파티션의 GPA 공간에서 범위에 대한 매핑을 만들면 원본 프로세스의 영역이 해당 범위에 대한 지원 메모리로 설정됩니다. 이 작업은 지정된 GPA 페이지에 대한 이전 매핑을 대체합니다.

만든 WHvMapGpaRange2매핑을 제거하려면 .를 호출합니다 WHvUnmapGpaRange.

Requirements

요구 사항 Value
지원되는 최소 Windows Windows 10, 버전 20H2(x64); Windows 11 버전 24H2, 빌드 26100.3915(Arm64)
Header WinHvPlatform.h
라이브러리 WinHvPlatform.lib
동적 링크 라이브러리 (DLL) WinHvPlatform.dll
아키텍처 x64, Arm64

참고하십시오