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.
Exécute un processeur virtuel dans une partition, ce qui lui permet d’exécuter du code invité.
Syntaxe
// Exit reasons
typedef enum WHV_RUN_VP_EXIT_REASON
{
WHvRunVpExitReasonNone = 0x00000000,
// Standard exits caused by operations of the virtual processor
WHvRunVpExitReasonMemoryAccess = 0x00000001,
WHvRunVpExitReasonX64IoPortAccess = 0x00000002,
WHvRunVpExitReasonUnrecoverableException = 0x00000004,
WHvRunVpExitReasonInvalidVpRegisterValue = 0x00000005,
WHvRunVpExitReasonUnsupportedFeature = 0x00000006,
WHvRunVpExitReasonX64InterruptWindow = 0x00000007,
WHvRunVpExitReasonX64Halt = 0x00000008,
WHvRunVpExitReasonX64ApicEoi = 0x00000009,
// Additional exits that can be configured through partition properties
WHvRunVpExitReasonX64MsrAccess = 0x00001000,
WHvRunVpExitReasonX64Cpuid = 0x00001001,
WHvRunVpExitReasonException = 0x00001002,
WHvRunVpExitReasonX64Rdtsc = 0x00001003,
// Exits caused by the host
WHvRunVpExitReasonCanceled = 0x00002001
} WHV_RUN_VP_EXIT_REASON;
// WHvRunVirtualProcessor output buffer
typedef struct WHV_RUN_VP_EXIT_CONTEXT
{
WHV_RUN_VP_EXIT_REASON ExitReason;
UINT32 Reserved;
WHV_VP_EXIT_CONTEXT VpContext;
union
{
WHV_MEMORY_ACCESS_CONTEXT MemoryAccess;
WHV_X64_IO_PORT_ACCESS_CONTEXT IoPortAccess;
WHV_X64_MSR_ACCESS_CONTEXT MsrAccess;
WHV_X64_CPUID_ACCESS_CONTEXT CpuidAccess;
WHV_VP_EXCEPTION_CONTEXT VpException;
WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT InterruptWindow;
WHV_X64_UNSUPPORTED_FEATURE_CONTEXT UnsupportedFeature;
WHV_RUN_VP_CANCELED_CONTEXT CancelReason;
WHV_X64_APIC_EOI_CONTEXT ApicEoi;
WHV_X64_RDTSC_CONTEXT ReadTsc;
};
} WHV_RUN_VP_EXIT_CONTEXT;
HRESULT
WINAPI
WHvRunVirtualProcessor(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT32 VpIndex,
_Out_writes_bytes_(ExitContextSizeInBytes) VOID* ExitContext,
_In_ UINT32 ExitContextSizeInBytes
);
Paramètres
Partition
Gérer l’objet de partition.
VpIndex
Spécifie l’index du processeur virtuel exécuté.
ExitContext
Spécifie la mémoire tampon de sortie qui reçoit la structure de contexte fournissant les informations sur la raison qui a provoqué le retour de la WHvRunVirtualProcessor fonction.
ExitContextSizeInBytes
Spécifie la taille de la mémoire tampon qui reçoit le contexte de sortie, en octets.
Valeur de retour
Si la fonction réussit, la valeur de retour est S_OK.
Remarks
Un processeur virtuel est exécuté (c’est-à-dire activé pour exécuter du code invité) en appelant la WHvRunVirtualProcessor fonction. L’appel se bloque de manière synchrone jusqu’à ce que le processeur virtuel effectue une opération que la pile de virtualisation doit gérer (par exemple, l’accès à la mémoire dans l’espace GPA qui n’est pas mappé ou non accessible) ou que la pile de virtualisation demande explicitement une sortie de la fonction (par exemple, pour injecter une interruption pour le processeur virtuel ou pour modifier l’état de la machine virtuelle).
Exigences
| Requirement | Valeur |
|---|---|
| Windows minimum pris en charge | Windows 10, version 1803 (x64) ; Windows 11, version 24H2, build 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Bibliothèque | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |