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


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

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

Синтаксис

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

Параметры

[in] Mask

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

Вызывающий параметр может задать битовое значение OR одного или нескольких следующих битов 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 может запланировать отложенный вызов процедуры (DPC), использующий одну или несколько расширенных функций процессора. Подпрограмма DPC должна сохранять и восстанавливать состояние расширенных функций, чтобы сохранить контекст прерванной программы, в которой адресное пространство процесса выполняется подпрограммой.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows 7 и более поздних версиях Windows.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

См. также

KeRestoreExtendedProcessorState

KeRestoreFloatingPointState

KeSaveFloatingPointState

RtlGetEnabledExtendedFeatures

XSTATE_SAVE