WHvRunVirtualProcessor

Spustí virtuální procesor v oddílu, který mu umožní spouštět kód hosta.

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

Parameters

Partition

Popisovač objektu oddílu

VpIndex

Určuje index spuštěného virtuálního procesoru.

ExitContext

Určuje výstupní vyrovnávací paměť, která přijímá kontextovou strukturu poskytující informace o důvodu, který způsobil WHvRunVirtualProcessor vrácení funkce.

ExitContextSizeInBytes

Určuje velikost vyrovnávací paměti, která přijímá výstupní kontext v bajtech.

Návratová hodnota

Pokud je funkce úspěšná, návratová hodnota je S_OK.

Remarks

Virtuální procesor se spustí (tj. povolí spuštění kódu hosta WHvRunVirtualProcessor ) voláním funkce. Volání blokuje synchronně, dokud buď virtuální procesor neprovede operaci, kterou musí zásobník virtualizace zpracovat (například přístup k paměti v prostoru GPA, který není namapovaný nebo není přístupný) nebo zásobník virtualizace explicitně požádá o ukončení funkce (například pro vložení přerušení virtuálního procesoru nebo změnu stavu virtuálního počítače).

Požadavky

Requirement Value
Minimální podporovaná Windows Windows 10 verze 1803 (x64); Windows 11, verze 24H2, build 26100.3915 (Arm64)
Header WinHvPlatform.h
Knihovna WinHvPlatform.lib
knihovna DLL WinHvPlatform.dll
Architektura x64, Arm64

Viz také