WHvTranslateGva

Bir konuk sanal adresini, sanal işlemci için konuk fiziksel adresine çevirir.

Sözdizimi

// Flags used by WHvTranslateGva
typedef enum WHV_TRANSLATE_GVA_FLAGS
{
    WHvTranslateGvaFlagNone             = 0x00000000,
    WHvTranslateGvaFlagValidateRead     = 0x00000001,
    WHvTranslateGvaFlagValidateWrite    = 0x00000002,
    WHvTranslateGvaFlagValidateExecute  = 0x00000004,
    WHvTranslateGvaFlagPrivilegeExempt  = 0x00000008,
    WHvTranslateGvaFlagSetPageTableBits = 0x00000010
} WHV_TRANSLATE_GVA_FLAGS;

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

// Result of an attempt to translate a guest virtual address
typedef enum WHV_TRANSLATE_GVA_RESULT_CODE
{
    WHvTranslateGvaResultSuccess                 = 0,

    // Translation failures
    WHvTranslateGvaResultPageNotPresent          = 1,
    WHvTranslateGvaResultPrivilegeViolation      = 2,
    WHvTranslateGvaResultInvalidPageTableFlags   = 3,

    // GPA access failures
    WHvTranslateGvaResultGpaUnmapped             = 4,
    WHvTranslateGvaResultGpaNoReadAccess         = 5,
    WHvTranslateGvaResultGpaNoWriteAccess        = 6,
    WHvTranslateGvaResultGpaIllegalOverlayAccess = 7,
    WHvTranslateGvaResultIntercept               = 8
} WHV_TRANSLATE_GVA_RESULT_CODE;

// Output buffer of WHvTranslateGva
typedef struct WHV_TRANSLATE_GVA_RESULT
{
    WHV_TRANSLATE_GVA_RESULT_CODE ResultCode;
    UINT32 Reserved;
} WHV_TRANSLATE_GVA_RESULT;

HRESULT
WINAPI
WHvTranslateGva(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT32 VpIndex,
    _In_ WHV_GUEST_VIRTUAL_ADDRESS Gva,
    _In_ WHV_TRANSLATE_GVA_FLAGS TranslateFlags,
    _Out_ WHV_TRANSLATE_GVA_RESULT* TranslationResult,
    _Out_ WHV_GUEST_PHYSICAL_ADDRESS* Gpa
    );

Parameters

Partition

Bölüm nesnesi için tanıtıcı.

VpIndex

Sanal adresin çevrildiği sanal işlemcinin dizinini belirtir.

Gva

Çevrilen sanal adresi belirtir.

TranslateFlags

Çeviri için bayrakları belirtir.

TranslationResult

Çevirinin sonucunu alır.

Gpa

Çeviri başarılı olursa fiziksel adresi alır.

Dönüş Değeri

İşlev başarılı olursa, dönüş değeri olur S_OK. Başarılı bir dönüş yalnızca çıkış parametresinin TranslationResult geçerli olduğunu gösterir; çevirinin kendisi, bu yapının üyesinde ResultCode döndürülür.

Açıklamalar

Bir bölümdeki bir sanal işlemci tarafından kullanılan bir sanal adresin çevrilmesi, sanallaştırma yığınının bir G/Ç işlemi için işlemci yönergesine öykünmesini sağlar ve bölümün GPA alanında yönergenin bellek işlenenlerini okumak ve yazmak için çevirinin sonuçlarını kullanır.

Hiper yönetici, sanal işlemci için şu anda etkin olan sayfa tablosunu yürüyerek çeviri gerçekleştirir. Sayfa tablosu erişilebilir değilse çeviri başarısız olabilir; bu durumda sanallaştırma yığını tarafından sanal işlemciye uygun bir sayfa hatası eklenmelidir.

Requirements

Requirement Değer
Desteklenen en düşük Windows Windows 10, sürüm 1803 (x64); Windows 11, sürüm 24H2, derleme 26100.3915 (Arm64)
Header WinHvPlatform.h
Kütüphane WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Ayrıca bakınız