WHvGetVirtualProcessorState

Sanal işlemciden kaydedilmiş durum kategorisini alır.

Sözdizimi

// WHvGetVirtualProcessorState and WHvSetVirtualProcessorState types.
#if defined(_AMD64_)

typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
    WHvVirtualProcessorStateTypeSynicMessagePage          = 0x00000000,
    WHvVirtualProcessorStateTypeSynicEventFlagPage        = 0x00000001,
    WHvVirtualProcessorStateTypeSynicTimerState           = 0x00000002,

    WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
    WHvVirtualProcessorStateTypeXsaveState                = 0x00001001,
    WHvVirtualProcessorStateTypeNestedState               = 0x00001002,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;

#elif defined (_ARM64_)

#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN    (1ui32 << 31)
#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP (1ui32 << 30)

typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
    WHvVirtualProcessorStateTypeInterruptControllerState  = 0x00000000 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,

    WHvVirtualProcessorStateTypeSynicMessagePage          = 0x00000002 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
    WHvVirtualProcessorStateTypeSynicEventFlagPage        = 0x00000003 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
    WHvVirtualProcessorStateTypeSynicTimerState           = 0x00000004,

    WHvVirtualProcessorStateTypeGlobalInterruptState      = 0x00000006 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP,
    WHvVirtualProcessorStateTypeSveState                  = 0x00000007 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;

#endif

HRESULT
WINAPI
WHvGetVirtualProcessorState(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT32 VpIndex,
    _In_ WHV_VIRTUAL_PROCESSOR_STATE_TYPE StateType,
    _Out_writes_bytes_to_(BufferSizeInBytes, *BytesWritten) VOID* Buffer,
    _In_ UINT32 BufferSizeInBytes,
    _Out_opt_ UINT32* BytesWritten
    );

Parameters

Partition

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

VpIndex

Durumu alınan sanal işlemcinin dizinini belirtir.

StateType

Alınacak durum kategorisini belirtir. Her değerin anlamı için Açıklamalar bölümüne bakın.

Buffer

İstenen durumu alır. Arabellek biçimine bağlıdır StateType.

BufferSizeInBytes

Bufferboyutunu bayt cinsinden belirtir.

BytesWritten

NULL değilse, öğesine Bufferyazılan bayt sayısını alır. Arabellek çok küçük olduğunda, durumu tutmak için gereken bayt sayısını alır.

Dönüş Değeri

İşlev başarılı olursa, dönüş değeri olur S_OK.

İstenen durumu içeremeyecek kadar küçükse Buffer , dönüş değeri olur WHV_E_INSUFFICIENT_BUFFER. Bu durumda, BytesWritten gereken bayt sayısını alır. Geçerli bir durum türü değilse StateType , dönüş değeri olur E_INVALIDARG.

Açıklamalar

işlevi tarafından WHvGetVirtualProcessorStateStateTypetanımlanan bir sanal işlemci durumu kategorisi alır. Sanal işlemci durumunu kaydetmek için mimariye duyarlı tek bir arabirim sağlar ve kullanım dışı ve WHvGetVirtualProcessorXsaveStateWHvGetVirtualProcessorInterruptControllerState2 işlevlerin yerini alır.

Her iki mimaride de ortak olan durum türleri

  • WHvVirtualProcessorStateTypeSynicMessagePage ve WHvVirtualProcessorStateTypeSynicEventFlagPage yapay kesme denetleyicisi (SynIC) iletisini ve olay bayrağı sayfalarını alın.
  • WHvVirtualProcessorStateTypeSynicTimerState SynIC yapay zamanlayıcı durumunu alır.

x64 durum türleri

  • WHvVirtualProcessorStateTypeInterruptControllerState2 yerel APIC durumunu alır.
  • WHvVirtualProcessorStateTypeXsaveState genişletilmiş işlemci (xsave) durumunu alır.
  • WHvVirtualProcessorStateTypeNestedState iç içe sanallaştırma durumunu alır.

Arm64 durum türleri

  • WHvVirtualProcessorStateTypeInterruptControllerState işlemci başına GIC durumunu alır.
  • WHvVirtualProcessorStateTypeGlobalInterruptState bölüm genelinde kesme denetleyicisi durumunu alır.
  • WHvVirtualProcessorStateTypeSveState Ölçeklenebilir Vektör Uzantısı (SVE) durumunu alır.

Gerekli arabellek boyutunu belirlemek için, işlevi çok küçük bir arabellekle çağırın ve işlevi döndürdüğünde BytesWrittenWHV_E_INSUFFICIENT_BUFFERdöndürülen değeri okuyun ve ardından bu boyutta bir arabellekle işlevi yeniden çağırın.

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

Ayrıca bakınız