Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uruchamia procesor wirtualny w partycji, umożliwiając mu wykonywanie kodu gościa.
Składnia
// 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
Dojście do obiektu partycji.
VpIndex
Określa indeks wykonywanego procesora wirtualnego.
ExitContext
Określa bufor wyjściowy, który odbiera strukturę kontekstu, podając informacje o przyczynie, która spowodowała WHvRunVirtualProcessor zwrócenie funkcji.
ExitContextSizeInBytes
Określa rozmiar buforu, który odbiera kontekst zakończenia w bajtach.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość to S_OK.
Remarks
Procesor wirtualny jest uruchamiany (czyli włączony do wykonywania kodu gościa WHvRunVirtualProcessor ) przez wywołanie funkcji. Wywołanie blokuje synchronicznie, dopóki procesor wirtualny nie wykona operacji, którą musi obsłużyć stos wirtualizacji (na przykład uzyskiwanie dostępu do pamięci w przestrzeni gpA, która nie jest mapowana lub niedostępna) albo stos wirtualizacji jawnie żąda zakończenia funkcji (na przykład w celu wstrzyknięcia przerwania procesora wirtualnego lub zmiany stanu maszyny wirtualnej).
Requirements
| Requirement | Value |
|---|---|
| Minimalna obsługiwana Windows | Windows 10, wersja 1803 (x64); Windows 11, wersja 24H2, kompilacja 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Biblioteka | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |