Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esegue un processore virtuale in una partizione, consentendo l'esecuzione del codice guest.
Sintassi
// 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
);
Parameters
Partition
Handle per l'oggetto partizione.
VpIndex
Specifica l'indice del processore virtuale eseguito.
ExitContext
Specifica il buffer di output che riceve la struttura di contesto che fornisce le informazioni sul motivo per cui la WHvRunVirtualProcessor funzione ha restituito.
ExitContextSizeInBytes
Specifica le dimensioni del buffer che riceve il contesto di uscita, in byte.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è S_OK.
Remarks
Viene eseguito un processore virtuale ( ovvero abilitato per eseguire il codice guest) chiamando la WHvRunVirtualProcessor funzione . La chiamata si blocca in modo sincrono fino a quando il processore virtuale non esegue un'operazione che lo stack di virtualizzazione deve gestire (ad esempio, l'accesso alla memoria nello spazio Criteri di gruppo non mappato o non accessibile) o lo stack di virtualizzazione richiede esplicitamente un'uscita della funzione ,ad esempio per inserire un interrupt per il processore virtuale o per modificare lo stato della macchina virtuale.
Requisiti
| Requisito | Valore |
|---|---|
| Minimo Windows supportato | Windows 10 versione 1803 (x64); Windows 11, versione 24H2, build 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Libreria | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |