파티션의 게스트 실제 주소 공간 범위를 호출자 프로세스의 메모리에 매핑합니다.
문법
// Guest physical or virtual address
typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;
typedef UINT64 WHV_GUEST_VIRTUAL_ADDRESS;
// Flags used by WHvMapGpaRange
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
WHvMapGpaRange(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ VOID* SourceAddress,
_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,
_In_ UINT64 SizeInBytes,
_In_ WHV_MAP_GPA_RANGE_FLAGS Flags
);
Parameters
Partition
파티션 개체에 대한 핸들입니다.
SourceAddress
매핑의 원본인 호출자 프로세스에서 메모리 영역의 페이지 정렬 주소를 지정합니다.
GuestAddress
VM의 실제 주소 공간에서 대상 주소를 지정합니다.
SizeInBytes
매핑할 바이트 수를 지정합니다.
Flags
매핑에 대한 액세스 플래그를 지정합니다.
반환 값
함수가 성공하면 반환 값은 .입니다 S_OK.
Remarks
파티션의 GPA 공간에서 범위에 대한 매핑을 만들면 호출자 프로세스의 영역이 해당 범위에 대한 지원 메모리로 설정됩니다. 이 작업은 지정된 GPA 페이지에 대한 이전 매핑을 대체합니다.
Requirements
| 요구 사항 | Value |
|---|---|
| 지원되는 최소 Windows | Windows 10, 버전 1803(x64); Windows 11 버전 24H2, 빌드 26100.3915(Arm64) |
| Header | WinHvPlatform.h |
| 라이브러리 | WinHvPlatform.lib |
| 동적 링크 라이브러리 (DLL) | WinHvPlatform.dll |
| 아키텍처 | x64, Arm64 |