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 | 英特尔桑迪桥 (前 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) |
库 | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |