WHvGetVirtualProcessorState

Načte kategorii uloženého stavu z virtuálního procesoru.

Syntaxe

// 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

Popisovač objektu oddílu

VpIndex

Určuje index virtuálního procesoru, jehož stav se načte.

StateType

Určuje kategorii stavu, který se má načíst. Význam jednotlivých hodnot najdete v části Poznámky.

Buffer

Přijme požadovaný stav. Formát vyrovnávací paměti závisí na StateType.

BufferSizeInBytes

Určuje velikost Bufferv bajtech.

BytesWritten

Pokud není null, obdrží počet bajtů zapsaných do Buffer. Pokud je vyrovnávací paměť příliš malá, obdrží počet bajtů potřebných k uložení stavu.

Návratová hodnota

Pokud je funkce úspěšná, návratová hodnota je S_OK.

Pokud Buffer je pro požadovaný stav příliš malý, je vrácená hodnota WHV_E_INSUFFICIENT_BUFFER. V tomto případě BytesWritten obdrží požadovaný počet bajtů. Pokud StateType není platný typ stavu, je vrácená hodnota E_INVALIDARG.

Remarks

Funkce WHvGetVirtualProcessorState načte kategorii stavu virtuálního procesoru identifikovaného funkcí StateType. Poskytuje jedno rozhraní s podporou architektury pro ukládání stavu virtuálního procesoru a nahrazuje zastaralé WHvGetVirtualProcessorXsaveState funkce a WHvGetVirtualProcessorInterruptControllerState2 funkce.

Typy stavů společné pro obě architektury

  • WHvVirtualProcessorStateTypeSynicMessagePage a WHvVirtualProcessorStateTypeSynicEventFlagPage načtěte syntetickou zprávu kontroleru přerušení (SynIC) a stránky příznaku událostí.
  • WHvVirtualProcessorStateTypeSynicTimerState načte stav syntetického časovače SynIC.

Typy stavů x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 načte místní stav APIC.
  • WHvVirtualProcessorStateTypeXsaveState načte stav rozšířeného procesoru (xsave).
  • WHvVirtualProcessorStateTypeNestedState načte vnořený stav virtualizace.

Typy stavů Arm64

  • WHvVirtualProcessorStateTypeInterruptControllerState načte stav GIC pro jednotlivé procesory.
  • WHvVirtualProcessorStateTypeGlobalInterruptState načte stav kontroleru přerušení na úrovni oddílu.
  • WHvVirtualProcessorStateTypeSveState načte stav SVE (Scalable Vector Extension).

Chcete-li určit požadovanou velikost vyrovnávací paměti, zavolejte funkci s vyrovnávací pamětí, která je příliš malá a přečte hodnotu vrácenou při BytesWritten vrácení WHV_E_INSUFFICIENT_BUFFERfunkce , a pak znovu zavolejte funkci s vyrovnávací pamětí této velikosti.

Požadavky

Requirement Value
Minimální podporovaná Windows Windows 10 verze 20H2 (x64); Windows 11, verze 24H2, build 26100.3915 (Arm64)
Header WinHvPlatform.h
Knihovna WinHvPlatform.lib
knihovna DLL WinHvPlatform.dll
Architektura x64, Arm64

Viz také