WHvGetVirtualProcessorState

Recupera uma categoria de estado guardado 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

Handle para o objeto de partição.

VpIndex

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

StateType

Especifica a categoria de estado a recuperar. Consulte a secção de Observações para o significado de cada valor.

Buffer

Recebe o estado solicitado. O formato do buffer depende de StateType.

BufferSizeInBytes

Especifica o tamanho de Buffer, em bytes.

BytesWritten

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

Valor de retorno

Se a função tiver sucesso, o valor de retorno é S_OK.

Se Buffer for demasiado pequeno para conter o estado solicitado, o valor de retorno é WHV_E_INSUFFICIENT_BUFFER. Neste caso, BytesWritten recebe o número de bytes necessários. Se StateType não for um tipo de estado válido, o valor de retorno é E_INVALIDARG.

Remarks

A WHvGetVirtualProcessorState função recupera uma categoria de estado virtual do processador identificada por StateType. Fornece uma interface única, consciente da arquitetura, para guardar o estado virtual do processador e substitui as funções obsoletas WHvGetVirtualProcessorXsaveStateWHvGetVirtualProcessorInterruptControllerState2 .

Tipos de estados comuns a ambas as arquiteturas

  • WHvVirtualProcessorStateTypeSynicMessagePage e WHvVirtualProcessorStateTypeSynicEventFlagPage recuperar as páginas de mensagem e de flag de evento do controlador sintético de interrupções (SynIC).
  • WHvVirtualProcessorStateTypeSynicTimerState recupera o estado do temporizador sintético SynIC.

Tipos de estado x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 recupera o estado local da APIC.
  • WHvVirtualProcessorStateTypeXsaveState Recupera o estado Processador Estendido (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ções em toda a partição.
  • WHvVirtualProcessorStateTypeSveState recupera o estado de Extensão Vetorial Escalável (SVE).

Para determinar o tamanho do buffer necessário, chame a função com um buffer demasiado pequeno e leia o valor devolvido BytesWritten quando a função retorna WHV_E_INSUFFICIENT_BUFFER, depois chame novamente a função com um buffer desse tamanho.

Requirements

Requirement Value
Windows mínimo suportado 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

Ver também