WHvGetVirtualProcessorState

Recupera uma categoria de estado salvo de um processador virtual.

Sintaxe

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

Manipule para o objeto de partição.

VpIndex

Especifica o índice do processador virtual cujo estado é recuperado.

StateType

Especifica a categoria de estado a ser recuperada. Consulte a seção Comentários para obter o significado de cada valor.

Buffer

Recebe o estado solicitado. O formato do buffer depende StateTypede .

BufferSizeInBytes

Especifica o tamanho de Buffer, em bytes.

BytesWritten

Se não for NULL, receberá o número de bytes gravados em Buffer. Quando o buffer é muito pequeno, ele recebe o número de bytes necessários para manter o estado.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será S_OK.

Se Buffer for muito pequeno para conter o estado solicitado, o valor retornado será WHV_E_INSUFFICIENT_BUFFER. Nesse caso, BytesWritten recebe o número de bytes necessários. Se StateType não for um tipo de estado válido, o valor retornado será E_INVALIDARG.

Remarks

A WHvGetVirtualProcessorState função recupera uma categoria de estado do processador virtual identificada por StateType. Ele fornece uma interface única e com reconhecimento de arquitetura para salvar o estado do processador virtual e substitui as funções preteridas WHvGetVirtualProcessorXsaveState e WHvGetVirtualProcessorInterruptControllerState2 substituídas.

Tipos de estado comuns a ambas as arquiteturas

  • WHvVirtualProcessorStateTypeSynicMessagePage e WHvVirtualProcessorStateTypeSynicEventFlagPage recupere a mensagem SynIC (controlador de interrupção sintético) e as páginas de sinalizador de evento.
  • WHvVirtualProcessorStateTypeSynicTimerState recupera o estado do temporizador sintético SynIC.

Tipos de estado x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 recupera o estado APIC local.
  • WHvVirtualProcessorStateTypeXsaveState recupera o estado estendido do processador (xsave).
  • WHvVirtualProcessorStateTypeNestedState recupera o estado de virtualização aninhada.

Tipos de estado Arm64

  • WHvVirtualProcessorStateTypeInterruptControllerState recupera o estado GIC por processador.
  • WHvVirtualProcessorStateTypeGlobalInterruptState recupera o estado do controlador de interrupção em toda a partição.
  • WHvVirtualProcessorStateTypeSveState recupera o estado SVE (Extensão de Vetor Escalonável).

Para determinar o tamanho do buffer necessário, chame a função com um buffer muito pequeno e leia o valor retornado BytesWritten quando a função retornar WHV_E_INSUFFICIENT_BUFFERe chame a função novamente com um buffer desse tamanho.

Requisitos

Requirement Value
Suporte mínimo Windows Windows 10, versão 20H2 (x64); Windows 11, versão 24H2, build 26100.3915 (Arm64)
Header WinHvPlatform.h
Biblioteca WinHvPlatform.lib
DLL WinHvPlatform.dll
Arquitetura x64, Arm64

Consulte também