KeSaveExtendedProcessorState 函数 (wdm.h)

KeSaveExtendedProcessorState 例程保存扩展处理器状态信息。

语法

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

参数

[in] Mask

64 位功能掩码。 此掩码中的位标识要保存的扩展处理器功能状态。 如果掩码位为 1,则例程将保存此位标识的功能的状态。 如果掩码位为零,则不保存相应功能的状态。 此掩码不得识别操作系统未启用的扩展处理器功能。 若要获取已启用功能的掩码,请调用 RtlGetEnabledExtendedFeatures 例程。

调用方可以将此参数设置为以下一个或多个 XSTATE_MASK_XXX 标志位的按位 OR:

含义
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
内存分配操作失败。

注解

在支持 XSAVE 和 XRSTOR 指令的基于 x86 的处理器上,这些指令提供了一种灵活的机制来保存和还原扩展的处理器状态信息。 KeSaveExtendedProcessorState 使用这些说明(如果可用)。

若要还原 KeSaveExtendedProcessorState 保存的扩展处理器状态,请调用 KeRestoreExtendedProcessorState 例程。

Mask 参数指定其状态要保存的扩展处理器功能。 KeRestoreExtendedProcessorState 调用仅还原由保存状态的 KeSaveExtendedProcessorState 调用保存的扩展处理器状态。

内核模式代码必须先保存扩展处理器功能的状态,然后才能使用该功能,并且必须在退出之前还原状态。

中断服务例程 (ISR) 在严重时间限制下运行,通常阻止它们使用扩展处理器功能。 但是,ISR 可以计划延迟过程调用 (使用一个或多个扩展处理器功能的 DPC) 。 DPC 例程必须保存和还原扩展功能的状态,以保留其进程地址空间中运行例程的中断程序的上下文。

KeSaveFloatingPointStateKeRestoreFloatingPointState 例程仅保存和还原浮点状态, (x87/MMX 寄存器) 和 SSE 状态。

要求

要求
最低受支持的客户端 在 Windows 7 和更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

另请参阅

KeRestoreExtendedProcessorState

KeRestoreFloatingPointState

KeSaveFloatingPointState

RtlGetEnabledExtendedFeatures

XSTATE_SAVE