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 bölümün konuk fiziksel adres alanından bayt sayısı WHV_READ_WRITE_GPA_RANGE_MAX_SIZE kadar okur.
Sözdizimi
// Guest physical address
typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;
//
// Maximum data size used by WHvReadGpaRange and WHvWriteGpaRange
//
#define WHV_READ_WRITE_GPA_RANGE_MAX_SIZE 16
typedef enum WHV_CACHE_TYPE {
WHvCacheTypeUncached = 0,
WHvCacheTypeWriteCombining = 1,
WHvCacheTypeWriteThrough = 4,
#if defined(_AMD64_)
WHvCacheTypeWriteProtected = 5,
#endif
WHvCacheTypeWriteBack = 6
} WHV_CACHE_TYPE;
typedef union WHV_INPUT_VTL
{
UINT8 AsUINT8;
struct
{
UINT8 TargetVtl : 4;
UINT8 UseTargetVtl : 1;
UINT8 Reserved : 3;
};
} WHV_INPUT_VTL;
//
// Control flags used by WHvReadGpaRange and WHvWriteGpaRange
//
typedef union WHV_ACCESS_GPA_CONTROLS
{
UINT64 AsUINT64;
struct
{
//
// Cache type for access
//
WHV_CACHE_TYPE CacheType;
//
// VTL whose GPA is to be accessed
//
WHV_INPUT_VTL InputVtl;
UINT8 Reserved;
UINT16 Reserved1;
};
} WHV_ACCESS_GPA_CONTROLS;
HRESULT
WINAPI
WHvReadGpaRange(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT32 VpIndex,
_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,
_In_ WHV_ACCESS_GPA_CONTROLS Controls,
_Out_writes_bytes_(DataSizeInBytes) PVOID Data,
_In_ UINT32 DataSizeInBytes
);
Parameters
Partition
Bölüm nesnesi için tanıtıcı.
VpIndex
Bağlamı erişim gerçekleştirilen sanal işlemcinin dizinini belirtir.
GuestAddress
Okumanın başladığı konuk fiziksel adresini belirtir.
Controls
Erişim için önbellek türünü ve hedef VTL'yi bir WHV_ACCESS_GPA_CONTROLS değer olarak belirtir.
Data
Konuk fiziksel adres aralığından okunan baytları alır.
DataSizeInBytes
Okunacak bayt sayısını belirtir. Bu değer sıfırdan büyük olmalı ve değerinden WHV_READ_WRITE_GPA_RANGE_MAX_SIZEbüyük olmamalıdır.
Dönüş Değeri
İşlev başarılı olursa, dönüş değeri olur S_OK.
işlevi aşağıdaki hata kodlarını döndürebilir:
-
E_INVALIDARG—DataSizeInBytesdeğerindenCacheTypebüyüktürWHV_READ_WRITE_GPA_RANGE_MAX_SIZE, inControlsgeçerli bir önbellek türü değildir,InputVtlin geçerli VTL'yeControlsbaşvurmaz veya içindekiControlsayrılmış bir alan ayarlanır. -
E_ACCESSDENIED— konuk fiziksel adres aralığı eşlenmez veya başka bir şekilde erişime izin verilmez.
Açıklamalar
İşlev, WHvReadGpaRange bir sanal işlemci bağlamında en fazla WHV_READ_WRITE_GPA_RANGE_MAX_SIZE (16) bayt konuk fiziksel belleği okur. Bu sınırlı erişim boyutu, işlevi toplu bellek aktarımı yerine yönerge işlenenlerine öykünme için uygun hale getirir. Daha büyük aktarımlar için, veya WHvMapGpaRange2 tarafından WHvMapGpaRange oluşturulan bir konak eşlemesi ile konuk fiziksel belleği geri yükleyin ve doğrudan erişin.
Okuma işlemi tarafından VpIndextanımlanan sanal işlemci bağlamında gerçekleştirildiğinden, içinde belirtilen Controlsönbellek türü ve VTL dahil olmak üzere bu işlemciye uygulanan bellek erişim semantiğini gözlemler. Hedeflenen sayfa henüz yerleşik değilse işlev sayfayı yerleşik hale getirir ve erişimi yeniden denenir.
Requirements
| Requirement | Değer |
|---|---|
| Desteklenen en düşük Windows | Windows 10, sürüm 20H2 (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 |