Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Извлекает категорию сохраненного состояния из виртуального процессора.
Синтаксис
// 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
Дескриптор объекта секции.
VpIndex
Задает индекс виртуального процессора, состояние которого извлекается.
StateType
Указывает категорию состояния, извлекаемого. Дополнительные сведения о значении каждого значения см. в разделе "Примечания".
Buffer
Получает запрошенное состояние. Формат буфера зависит от StateType.
BufferSizeInBytes
Задает размер Bufferв байтах.
BytesWritten
Если значение не равно NULL, получает количество байтов, записанных Bufferв . Если буфер слишком мал, он получает количество байтов, необходимых для хранения состояния.
Возвращаемое значение
Если функция выполнена успешно, возвращается S_OKзначение.
Если Buffer слишком мало, чтобы содержать запрошенное состояние, возвращается WHV_E_INSUFFICIENT_BUFFERзначение. В этом случае BytesWritten получает необходимое количество байтов. Если StateType недопустимый тип состояния, возвращается E_INVALIDARGвозвращаемое значение.
Remarks
Функция WHvGetVirtualProcessorState извлекает категорию состояния виртуального процессора, определяемого StateType. Он предоставляет единый интерфейс с поддержкой архитектуры для сохранения состояния виртуального процессора и заменяет устаревшие WHvGetVirtualProcessorXsaveState и WHvGetVirtualProcessorInterruptControllerState2 функции.
Типы состояний, общие для обеих архитектур
-
WHvVirtualProcessorStateTypeSynicMessagePageиWHvVirtualProcessorStateTypeSynicEventFlagPageизвлеките сообщения с искусственным контроллером прерываний (SynIC) и страницы флагов событий. -
WHvVirtualProcessorStateTypeSynicTimerStateизвлекает состояние искусственного таймера SynIC.
Типы состояний x64
-
WHvVirtualProcessorStateTypeInterruptControllerState2извлекает локальное состояние APIC. -
WHvVirtualProcessorStateTypeXsaveStateизвлекает расширенное состояние процессора (xsave). -
WHvVirtualProcessorStateTypeNestedStateполучает состояние вложенной виртуализации.
Типы состояний Arm64
-
WHvVirtualProcessorStateTypeInterruptControllerStateполучает состояние GIC для каждого процессора. -
WHvVirtualProcessorStateTypeGlobalInterruptStateизвлекает состояние контроллера прерываний на уровне секции. -
WHvVirtualProcessorStateTypeSveStateполучает состояние масштабируемого векторного расширения (SVE).
Чтобы определить требуемый размер буфера, вызовите функцию с буфером, который слишком мал и считывает значение, возвращаемое BytesWritten при возврате WHV_E_INSUFFICIENT_BUFFERфункции, а затем снова вызовите функцию с буфером этого размера.
Требования
| Requirement | Ценность |
|---|---|
| Минимальный поддерживаемый Windows | Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Библиотека | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |