WHvGetVirtualProcessorState

Recupera una categoria di stato salvato da un processore virtuale.

Sintassi

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

Handle per l'oggetto partizione.

VpIndex

Specifica l'indice del processore virtuale il cui stato viene recuperato.

StateType

Specifica la categoria di stato da recuperare. Vedere la sezione Osservazioni per il significato di ogni valore.

Buffer

Riceve lo stato richiesto. Il formato del buffer dipende da StateType.

BufferSizeInBytes

Specifica le dimensioni di Buffer, in byte.

BytesWritten

Se non NULL, riceve il numero di byte scritti in Buffer. Quando il buffer è troppo piccolo, riceve il numero di byte necessari per contenere lo stato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è S_OK.

Se Buffer è troppo piccolo per contenere lo stato richiesto, il valore restituito è WHV_E_INSUFFICIENT_BUFFER. In questo caso, BytesWritten riceve il numero di byte necessari. Se StateType non è un tipo di stato valido, il valore restituito è E_INVALIDARG.

Remarks

La WHvGetVirtualProcessorState funzione recupera una categoria di stato del processore virtuale identificato da StateType. Fornisce un'unica interfaccia compatibile con l'architettura per il salvataggio dello stato del processore virtuale e sostituisce le funzioni e WHvGetVirtualProcessorInterruptControllerState2 deprecateWHvGetVirtualProcessorXsaveState.

Tipi di stato comuni a entrambe le architetture

  • WHvVirtualProcessorStateTypeSynicMessagePage e WHvVirtualProcessorStateTypeSynicEventFlagPage recuperano il messaggio synIC (Synthetic Interrupt Controller) e le pagine del flag di evento.
  • WHvVirtualProcessorStateTypeSynicTimerState recupera lo stato del timer sintetico SynIC.

Tipi di stato x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 recupera lo stato APIC locale.
  • WHvVirtualProcessorStateTypeXsaveState recupera lo stato esteso del processore (xsave).
  • WHvVirtualProcessorStateTypeNestedState recupera lo stato di virtualizzazione annidato.

Tipi di stato Arm64

  • WHvVirtualProcessorStateTypeInterruptControllerState recupera lo stato GIC per processore.
  • WHvVirtualProcessorStateTypeGlobalInterruptState recupera lo stato del controller interrupt a livello di partizione.
  • WHvVirtualProcessorStateTypeSveState recupera lo stato SVE (Scalable Vector Extension).

Per determinare le dimensioni del buffer necessarie, chiamare la funzione con un buffer troppo piccolo e leggere il valore restituito in BytesWritten quando la funzione restituisce WHV_E_INSUFFICIENT_BUFFER, quindi chiamare di nuovo la funzione con un buffer di tale dimensione.

Requisiti

Requisito Valore
Minimo Windows supportato Windows 10 versione 20H2 (x64); Windows 11, versione 24H2, build 26100.3915 (Arm64)
Header WinHvPlatform.h
Libreria WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Vedere anche