Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
-
WHvVirtualProcessorStateTypeSynicMessagePageeWHvVirtualProcessorStateTypeSynicEventFlagPagerecuperar as páginas de mensagem e de flag de evento do controlador sintético de interrupções (SynIC). -
WHvVirtualProcessorStateTypeSynicTimerStaterecupera o estado do temporizador sintético SynIC.
Tipos de estado x64
-
WHvVirtualProcessorStateTypeInterruptControllerState2recupera o estado local da APIC. -
WHvVirtualProcessorStateTypeXsaveStateRecupera o estado Processador Estendido (Xsave). -
WHvVirtualProcessorStateTypeNestedStaterecupera o estado de virtualização aninhada.
Tipos de estado Arm64
-
WHvVirtualProcessorStateTypeInterruptControllerStaterecupera o estado GIC por processador. -
WHvVirtualProcessorStateTypeGlobalInterruptStaterecupera o estado do controlador de interrupções em toda a partição. -
WHvVirtualProcessorStateTypeSveStaterecupera 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 |