WHvGetVirtualProcessorState

Lekéri a mentett állapot egy kategóriáját egy virtuális processzorból.

Szemantika

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

A partícióobjektum kezelése.

VpIndex

Annak a virtuális processzornak az indexét adja meg, amelynek az állapotát lekéri.

StateType

Meghatározza a lekérendő állapotkategóriát. Az egyes értékek jelentését a Megjegyzések szakaszban találja.

Buffer

Megkapja a kért állapotot. A puffer formátuma a következőtől StateTypefügg: .

BufferSizeInBytes

A bájtban megadott méretet Bufferadja meg.

BytesWritten

Ha nem null értékű, akkor a rendszer a beírt bájtok számát kapja meg Buffer. Ha a puffer túl kicsi, megkapja az állapot tárolásához szükséges bájtok számát.

Visszaadott érték

Ha a függvény sikeres, a visszatérési érték az S_OK.

Ha Buffer túl kicsi ahhoz, hogy a kért állapotot tartalmazza, a visszatérési érték .WHV_E_INSUFFICIENT_BUFFER Ebben az esetben BytesWritten megkapja a szükséges bájtok számát. Ha StateType nem érvényes állapottípus, a visszatérési érték a következő E_INVALIDARG.

Remarks

A WHvGetVirtualProcessorState függvény lekéri a virtuális processzor állapotának egy olyan kategóriáját, amelyet a StateTyperendszer azonosít. Egyetlen, architektúrabarát felületet biztosít a virtuális processzor állapotának mentéséhez, és felülírja az elavult WHvGetVirtualProcessorXsaveState és WHvGetVirtualProcessorInterruptControllerState2 a függvényeket.

Mindkét architektúrában gyakori állapottípusok

  • WHvVirtualProcessorStateTypeSynicMessagePage és WHvVirtualProcessorStateTypeSynicEventFlagPage kérje le a szintetikus megszakításvezérlő (SynIC) üzenetét és eseményjelző lapjait.
  • WHvVirtualProcessorStateTypeSynicTimerState lekéri a SynIC szintetikus időzítő állapotát.

x64-állapottípusok

  • WHvVirtualProcessorStateTypeInterruptControllerState2 lekéri a helyi APIC-állapotot.
  • WHvVirtualProcessorStateTypeXsaveState lekéri a processzor kiterjesztett (xsave) állapotát.
  • WHvVirtualProcessorStateTypeNestedState beolvassa a beágyazott virtualizálási állapotot.

Arm64-állapottípusok

  • WHvVirtualProcessorStateTypeInterruptControllerState lekéri a processzoronkénti GIC-állapotot.
  • WHvVirtualProcessorStateTypeGlobalInterruptState A partíciószintű megszakításvezérlő állapotát kéri le.
  • WHvVirtualProcessorStateTypeSveState lekéri a méretezhető vektorkiterjesztés (SVE) állapotát.

A szükséges pufferméret meghatározásához hívja meg a függvényt egy túl kicsi pufferrel, és olvassa be a függvény visszatérésekor WHV_E_INSUFFICIENT_BUFFERvisszaadott BytesWritten értéket, majd hívja újra a függvényt egy ilyen méretű pufferrel.

Requirements

Requirement Érték
Minimálisan támogatott Windows Windows 10, 20H2-es verzió (x64); Windows 11, 24H2-es verzió, 26100.3915-ös build (Arm64)
Header WinHvPlatform.h
Könyvtár WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Lásd még