WHvGetVirtualProcessorState

Récupère une catégorie d’état enregistré à partir d’un processeur virtuel.

Syntaxe

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

Paramètres

Partition

Gérer l’objet de partition.

VpIndex

Spécifie l’index du processeur virtuel dont l’état est récupéré.

StateType

Spécifie la catégorie d’état à récupérer. Consultez la section Remarques pour connaître la signification de chaque valeur.

Buffer

Reçoit l’état demandé. Le format de la mémoire tampon dépend StateTypede .

BufferSizeInBytes

Spécifie la taille de Buffer, en octets.

BytesWritten

Si la valeur n’est pas NULL, reçoit le nombre d’octets écrits dans Buffer. Lorsque la mémoire tampon est trop petite, elle reçoit le nombre d’octets requis pour contenir l’état.

Valeur de retour

Si la fonction réussit, la valeur de retour est S_OK.

Si Buffer elle est trop petite pour contenir l’état demandé, la valeur de retour est WHV_E_INSUFFICIENT_BUFFER. Dans ce cas, BytesWritten reçoit le nombre d’octets requis. S’il StateType n’est pas un type d’état valide, la valeur de retour est E_INVALIDARG.

Remarks

La WHvGetVirtualProcessorState fonction récupère une catégorie d’état de processeur virtuel identifiée par StateType. Il fournit une interface unique prenant en charge l’architecture pour enregistrer l’état du processeur virtuel et remplace les fonctions déconseilléesWHvGetVirtualProcessorXsaveState.WHvGetVirtualProcessorInterruptControllerState2

Types d’état communs aux deux architectures

  • WHvVirtualProcessorStateTypeSynicMessagePage et WHvVirtualProcessorStateTypeSynicEventFlagPage récupérer les pages de message et d’indicateur d’événement du contrôleur d’interruption synthétique (SynIC).
  • WHvVirtualProcessorStateTypeSynicTimerState récupère l’état du minuteur synthétique SynIC.

Types d’état x64

  • WHvVirtualProcessorStateTypeInterruptControllerState2 récupère l’état APIC local.
  • WHvVirtualProcessorStateTypeXsaveState récupère l’état étendu du processeur (xsave).
  • WHvVirtualProcessorStateTypeNestedState récupère l’état de virtualisation imbriqué.

Types d’état Arm64

  • WHvVirtualProcessorStateTypeInterruptControllerState récupère l’état GIC par processeur.
  • WHvVirtualProcessorStateTypeGlobalInterruptState récupère l’état du contrôleur d’interruption à l’échelle de la partition.
  • WHvVirtualProcessorStateTypeSveState récupère l’état SVE (Scalable Vector Extension).

Pour déterminer la taille de mémoire tampon requise, appelez la fonction avec une mémoire tampon trop petite et lisez la valeur retournée BytesWritten lorsque la fonction retourne WHV_E_INSUFFICIENT_BUFFER, puis appelez à nouveau la fonction avec une mémoire tampon de cette taille.

Exigences

Requirement Valeur
Windows minimum pris en charge Windows 10, version 20H2 (x64) ; Windows 11, version 24H2, build 26100.3915 (Arm64)
Header WinHvPlatform.h
Bibliothèque WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Voir aussi