WHvGetVirtualProcessorState

Ruft eine Kategorie des gespeicherten Zustands von einem virtuellen Prozessor ab.

Syntax

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

Parameter

Partition

Behandeln sie das Partitionsobjekt.

VpIndex

Gibt den Index des virtuellen Prozessors an, dessen Status abgerufen wird.

StateType

Gibt die Kategorie des abzurufenden Zustands an. Die Bedeutung der einzelnen Werte finden Sie im Abschnitt "Hinweise".

Buffer

Empfängt den angeforderten Zustand. Das Format des Puffers hängt von StateType.

BufferSizeInBytes

Gibt die Größe von Buffer, in Byte an.

BytesWritten

Wenn kein NULL-Wert vorhanden ist, wird die Anzahl der Bytes empfangen, die in Buffer. Wenn der Puffer zu klein ist, empfängt er die Anzahl der Bytes, die zum Speichern des Zustands erforderlich sind.

Rückgabewert

Wenn die Funktion erfolgreich ist, lautet S_OKder Rückgabewert .

Wenn Buffer der angeforderte Zustand zu klein ist, lautet WHV_E_INSUFFICIENT_BUFFERder Rückgabewert . In diesem Fall BytesWritten erhält die Anzahl der erforderlichen Bytes. Wenn StateType es sich nicht um einen gültigen Zustandstyp handelt, lautet E_INVALIDARGder Rückgabewert .

Remarks

Die WHvGetVirtualProcessorState Funktion ruft eine Kategorie des virtuellen Prozessorzustands ab, der durch StateType. Sie stellt eine einzelne, architekturfähige Schnittstelle zum Speichern des Zustands virtueller Prozessoren bereit und ersetzt die veralteten WHvGetVirtualProcessorXsaveState Und WHvGetVirtualProcessorInterruptControllerState2 Funktionen.

Zustandstypen, die für beide Architekturen gemeinsam sind

  • WHvVirtualProcessorStateTypeSynicMessagePage und WHvVirtualProcessorStateTypeSynicEventFlagPage rufen Sie die SynIC-Meldungs- und Ereigniskennzeichnungsseiten (Synthetic Interrupt Controller) ab.
  • WHvVirtualProcessorStateTypeSynicTimerState Ruft den SynIC-Zeitgeberzustand ab.

x64-Statustypen

  • WHvVirtualProcessorStateTypeInterruptControllerState2 ruft den lokalen APIC-Status ab.
  • WHvVirtualProcessorStateTypeXsaveState ruft den erweiterten Prozessorstatus (xsave) ab.
  • WHvVirtualProcessorStateTypeNestedState ruft den geschachtelten Virtualisierungsstatus ab.

Arm64-Zustandstypen

  • WHvVirtualProcessorStateTypeInterruptControllerState Ruft den GIC-Zustand pro Prozessor ab.
  • WHvVirtualProcessorStateTypeGlobalInterruptState ruft den partitionsweiten Interrupt-Controllerzustand ab.
  • WHvVirtualProcessorStateTypeSveState ruft den SVE-Zustand (Scalable Vector Extension) ab.

Um die erforderliche Puffergröße zu ermitteln, rufen Sie die Funktion mit einem Puffer auf, der zu klein ist, und lesen Sie den wert, der beim BytesWritten Zurückgeben WHV_E_INSUFFICIENT_BUFFERder Funktion zurückgegeben wird, und rufen Sie die Funktion dann erneut mit einem Puffer dieser Größe auf.

Anforderungen

Anforderung Wert
Mindestens unterstützte Windows Windows 10, Version 20H2 (x64); Windows 11, Version 24H2, Build 26100.3915 (Arm64)
Header WinHvPlatform.h
Bibliothek WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Siehe auch