Функция 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, если вызов выполнен успешно. Возможные возвращаемые значения ошибок:
Код возврата | Описание |
---|---|
|
Сбой операции выделения памяти. |
Комментарии
На процессорах 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 |