WHvGetVirtualProcessorState

Recupera una categoría de estado guardado de un procesador virtual.

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

Parameters

Partition

Identificador del objeto de partición.

VpIndex

Especifica el índice del procesador virtual cuyo estado se recupera.

StateType

Especifica la categoría de estado que se va a recuperar. Consulte la sección Comentarios para obtener el significado de cada valor.

Buffer

Recibe el estado solicitado. El formato del búfer depende StateTypede .

BufferSizeInBytes

Especifica el tamaño de Buffer, en bytes.

BytesWritten

Si no es NULL, recibe el número de bytes escritos en Buffer. Cuando el búfer es demasiado pequeño, recibe el número de bytes necesarios para contener el estado.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es S_OK.

Si Buffer es demasiado pequeño para contener el estado solicitado, el valor devuelto es WHV_E_INSUFFICIENT_BUFFER. En este caso, BytesWritten recibe el número de bytes necesarios. Si StateType no es un tipo de estado válido, el valor devuelto es E_INVALIDARG.

Remarks

La WHvGetVirtualProcessorState función recupera una categoría de estado de procesador virtual identificado por StateType. Proporciona una única interfaz compatible con la arquitectura para guardar el estado del procesador virtual y reemplaza las funciones y WHvGetVirtualProcessorInterruptControllerState2 en desusoWHvGetVirtualProcessorXsaveState.

Tipos de estado comunes a ambas arquitecturas

  • WHvVirtualProcessorStateTypeSynicMessagePage y WHvVirtualProcessorStateTypeSynicEventFlagPage recuperan las páginas de mensajes y marcas de eventos del controlador de interrupción sintética (SynIC).
  • WHvVirtualProcessorStateTypeSynicTimerState recupera el estado del temporizador sintético de SynIC.

Tipos de estado x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 recupera el estado APIC local.
  • WHvVirtualProcessorStateTypeXsaveState recupera el estado extendido del procesador (xsave).
  • WHvVirtualProcessorStateTypeNestedState recupera el estado de virtualización anidada.

Tipos de estado Arm64

  • WHvVirtualProcessorStateTypeInterruptControllerState recupera el estado GIC por procesador.
  • WHvVirtualProcessorStateTypeGlobalInterruptState recupera el estado del controlador de interrupción en toda la partición.
  • WHvVirtualProcessorStateTypeSveState recupera el estado extensión de vector escalable (SVE).

Para determinar el tamaño de búfer necesario, llame a la función con un búfer demasiado pequeño y lea el valor devuelto en BytesWritten cuando la función devuelve WHV_E_INSUFFICIENT_BUFFERy llame a la función de nuevo con un búfer de ese tamaño.

Requisitos

Requirement Value
Windows mínima admitidas Windows 10, versión 20H2 (x64); Windows 11, versión 24H2, compilación 26100.3915 (Arm64)
Header WinHvPlatform.h
Biblioteca WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Consulte también