Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 |