Поделиться через


Функция KeSaveExtendedProcessorState (wdm.h)

Подпрограмма KeSaveExtendedProcessorState сохраняет расширенные сведения о состоянии процессора.

Синтаксис

NTSTATUS KeSaveExtendedProcessorState(
  [in]  ULONG64      Mask,
  [out] PXSTATE_SAVE XStateSave
);

Параметры

[in] Mask

64-разрядная маска признаков. Биты в этой маске идентифицируют состояния функций расширенного процессора, которые требуется сохранить. Если бит маски равен одному, подпрограмма сохраняет состояние функции, определяемой этим битом. Если бит маски равен нулю, состояние соответствующего компонента не сохраняется. Эта маска не должна определять расширенные функции процессора, которые не включены в операционной системе. Чтобы получить маску включенных функций, вызовите подпрограмму RtlGetEnabledExtendedFeatures .

Вызывающий объект может задать для этого параметра побитовое ЗНАЧЕНИЕ ИЛИ одного или нескольких следующих битов флага XSTATE_MASK_XXX :

Значение Значение
XSTATE_MASK_LEGACY_FLOATING_POINT Расширение с плавающей запятой (x87/MMX).
XSTATE_MASK_LEGACY_SSE Расширение SIMD для потоковой передачи (SSE).
XSTATE_MASK_LEGACY Расширения x87/MMX и SSE.
XSTATE_MASK_GSSE Расширение Intel Sandy Bridge (ранее Gesher) SSE.
XSTATE_MASK_AVX512 Расширение AVX-512
XSTATE_MASK_MPX Расширение MPX
XSTATE_MASK_AMX_TILE_CONFIG Расширение AMX (конфигурация)
XSTATE_MASK_AMX_TILE_DATA Расширение AMX (данные)

[out] XStateSave

Указатель на буфер, выделенный вызывающим объектом, в который подпрограмма записывает XSTATE_SAVE структуру. Эта структура содержит сохраненные сведения о состоянии для расширенных функций процессора, указанных параметром Mask . Буфер должен быть достаточно большим, чтобы вместить эту структуру.

Возвращаемое значение

KeSaveExtendedProcessorState возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные возвращаемые значения ошибок:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES
Сбой операции выделения памяти.

Комментарии

На процессорах x86, поддерживающих инструкции XSAVE и XRSTOR, эти инструкции предоставляют гибкий механизм для сохранения и восстановления расширенных сведений о состоянии процессора. KeSaveExtendedProcessorState использует эти инструкции, если они доступны.

Чтобы восстановить расширенное состояние процессора, сохраненное KeSaveExtendedProcessorState, вызовите подпрограмму KeRestoreExtendedProcessorState .

Параметр Mask указывает расширенные функции процессора, состояние которых необходимо сохранить. Вызов KeRestoreExtendedProcessorState восстанавливает только расширенное состояние процессора, сохраненное вызовом KeSaveExtendedProcessorState , который сохранил состояние.

Код в режиме ядра должен сохранить состояние функции расширенного процессора, прежде чем использовать эту функцию, и восстановить состояние перед выходом.

Подпрограммы обслуживания прерываний (ISR) выполняются с жесткими ограничениями времени, которые обычно не позволяют им использовать расширенные функции процессора. Однако ISR может запланировать отложенный вызов процедуры (DPC), который использует одну или несколько расширенных функций процессора. Подпрограмма DPC должна сохранять и восстанавливать состояние расширенных функций, чтобы сохранить контекст прерванной программы, в пространстве обработки которой выполняется подпрограмма.

Подпрограммы KeSaveFloatingPointState и KeRestoreFloatingPointState сохраняют и восстанавливают только состояние с плавающей запятой (регистры x87/MMX) и состояние SSE.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях Windows.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

См. также раздел

KeRestoreExtendedProcessorState

KeRestoreFloatingPointState

KeSaveFloatingPointState

RtlGetEnabledExtendedFeatures

XSTATE_SAVE