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。 可能的错误返回值包括以下内容:
返回代码 | 说明 |
---|---|
|
内存分配操作失败。 |
注解
在支持 XSAVE 和 XRSTOR 指令的基于 x86 的处理器上,这些指令提供了一种灵活的机制来保存和还原扩展的处理器状态信息。 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) |
Library | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |