keSaveExtendedProcessorState 函数 (wdm.h)

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

语法

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

参数

[in] Mask

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

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

Value 含义
XSTATE_MASK_LEGACY_FLOATING_POINT
浮点扩展 (x87/MMX) 。
XSTATE_MASK_LEGACY_SSE
流式处理 SIMD 扩展 (SSE) 。
XSTATE_MASK_LEGACY
x87/MMX 和 SSE 扩展。
XSTATE_MASK_GSSE
Intel Bridge (Gesher) SSE 扩展。

[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