Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
-
WHvVirtualProcessorStateTypeSynicMessagePageetWHvVirtualProcessorStateTypeSynicEventFlagPagerécupérer les pages de message et d’indicateur d’événement du contrôleur d’interruption synthétique (SynIC). -
WHvVirtualProcessorStateTypeSynicTimerStaterécupère l’état du minuteur synthétique SynIC.
Types d’état x64
-
WHvVirtualProcessorStateTypeInterruptControllerState2récupère l’état APIC local. -
WHvVirtualProcessorStateTypeXsaveStaterécupère l’état étendu du processeur (xsave). -
WHvVirtualProcessorStateTypeNestedStaterécupère l’état de virtualisation imbriqué.
Types d’état Arm64
-
WHvVirtualProcessorStateTypeInterruptControllerStaterécupère l’état GIC par processeur. -
WHvVirtualProcessorStateTypeGlobalInterruptStaterécupère l’état du contrôleur d’interruption à l’échelle de la partition. -
WHvVirtualProcessorStateTypeSveStateré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 |