Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt einen virtuellen Prozessor in einer Partition aus, sodass er Gastcode ausführen kann.
Syntax
// 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
);
Parameter
Partition
Behandeln sie das Partitionsobjekt.
VpIndex
Gibt den Index des virtuellen Prozessors an, der ausgeführt wird.
ExitContext
Gibt den Ausgabepuffer an, der die Kontextstruktur empfängt, die die Informationen zu dem Grund bereitstellt, aus dem die WHvRunVirtualProcessor Funktion zurückgegeben wurde.
ExitContextSizeInBytes
Gibt die Größe des Puffers an, der den Ausgangskontext in Byte empfängt.
Rückgabewert
Wenn die Funktion erfolgreich ist, lautet S_OKder Rückgabewert .
Remarks
Ein virtueller Prozessor wird ausgeführt (d. h. zum Ausführen von Gastcode aktiviert), indem die WHvRunVirtualProcessor Funktion aufgerufen wird. Der Aufruf wird synchron blockiert, bis der virtuelle Prozessor einen Vorgang ausführt, den der Virtualisierungsstapel verarbeiten muss (z. B. den Zugriff auf den Arbeitsspeicher im GPA-Raum, der nicht zugeordnet ist oder nicht zugänglich ist), oder der Virtualisierungsstapel fordert explizit einen Exit der Funktion an (z. B. zum Einfügen eines Interrupts für den virtuellen Prozessor oder zum Ändern des Zustands der VM).
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützte Windows | Windows 10, Version 1803 (x64); Windows 11, Version 24H2, Build 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Bibliothek | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |