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.
Pobiera kategorię zapisanego stanu z procesora wirtualnego.
Składnia
// WHvGetVirtualProcessorState and WHvSetVirtualProcessorState types.
#if defined(_AMD64_)
typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000000,
WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000001,
WHvVirtualProcessorStateTypeSynicTimerState = 0x00000002,
WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
WHvVirtualProcessorStateTypeXsaveState = 0x00001001,
WHvVirtualProcessorStateTypeNestedState = 0x00001002,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
#elif defined (_ARM64_)
#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN (1ui32 << 31)
#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP (1ui32 << 30)
typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
WHvVirtualProcessorStateTypeInterruptControllerState = 0x00000000 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000002 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000003 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicTimerState = 0x00000004,
WHvVirtualProcessorStateTypeGlobalInterruptState = 0x00000006 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP,
WHvVirtualProcessorStateTypeSveState = 0x00000007 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
#endif
HRESULT
WINAPI
WHvGetVirtualProcessorState(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT32 VpIndex,
_In_ WHV_VIRTUAL_PROCESSOR_STATE_TYPE StateType,
_Out_writes_bytes_to_(BufferSizeInBytes, *BytesWritten) VOID* Buffer,
_In_ UINT32 BufferSizeInBytes,
_Out_opt_ UINT32* BytesWritten
);
Parameters
Partition
Dojście do obiektu partycji.
VpIndex
Określa indeks procesora wirtualnego, którego stan jest pobierany.
StateType
Określa kategorię stanu do pobrania. Zobacz sekcję Uwagi, aby poznać znaczenie każdej wartości.
Buffer
Odbiera żądany stan. Format buforu zależy StateTypeod .
BufferSizeInBytes
Określa rozmiar Buffer, w bajtach.
BytesWritten
Jeśli wartość nie ma wartości NULL, otrzymuje liczbę bajtów zapisanych w pliku Buffer. Gdy bufor jest za mały, otrzymuje liczbę bajtów wymaganych do przechowywania stanu.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość to S_OK.
Jeśli Buffer jest za mały, aby zawierać żądany stan, zwracana wartość to WHV_E_INSUFFICIENT_BUFFER. W takim przypadku BytesWritten otrzymuje wymaganą liczbę bajtów. Jeśli StateType nie jest prawidłowym typem stanu, zwracana wartość to E_INVALIDARG.
Remarks
Funkcja WHvGetVirtualProcessorState pobiera kategorię stanu procesora wirtualnego zidentyfikowaną przez StateTypeelement . Zapewnia on jeden, obsługujący architekturę interfejs do zapisywania stanu procesora wirtualnego i zastępuje przestarzałe WHvGetVirtualProcessorXsaveState funkcje i WHvGetVirtualProcessorInterruptControllerState2 .
Typy stanów wspólne dla obu architektur
-
WHvVirtualProcessorStateTypeSynicMessagePageiWHvVirtualProcessorStateTypeSynicEventFlagPagepobierz syntetyczny komunikat kontrolera przerwań (SynIC) i strony flagi zdarzenia. -
WHvVirtualProcessorStateTypeSynicTimerStatepobiera syntetyczny stan czasomierza SynIC.
Typy stanów x64
-
WHvVirtualProcessorStateTypeInterruptControllerState2pobiera lokalny stan APIC. -
WHvVirtualProcessorStateTypeXsaveStatepobiera stan rozszerzonego procesora (xsave). -
WHvVirtualProcessorStateTypeNestedStatepobiera stan wirtualizacji zagnieżdżonej.
Typy stanów Arm64
-
WHvVirtualProcessorStateTypeInterruptControllerStatepobiera stan GIC dla procesora. -
WHvVirtualProcessorStateTypeGlobalInterruptStatepobiera stan kontrolera przerwań dla całej partycji. -
WHvVirtualProcessorStateTypeSveStatepobiera stan Skalowalne rozszerzenie wektorów (SVE).
Aby określić wymagany rozmiar buforu, wywołaj funkcję z buforem, który jest zbyt mały, i odczytaj wartość zwracaną, BytesWritten gdy funkcja zwróci WHV_E_INSUFFICIENT_BUFFERwartość , a następnie wywołaj funkcję ponownie z buforem tego rozmiaru.
Requirements
| Requirement | Value |
|---|---|
| Minimalna obsługiwana Windows | Windows 10, wersja 20H2 (x64); Windows 11, wersja 24H2, kompilacja 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Biblioteka | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |