KeRestoreFloatingPointState 函数 (wdm.h)

KeRestoreFloatingPointState 例程还原由前面对 KeSaveFloatingPointState 的调用保存的非易失性浮点上下文。

语法

NTSTATUS KeRestoreFloatingPointState(
  [in] PKFLOATING_SAVE FloatSave
);

参数

[in] FloatSave

指向在上述对 KeSaveFloatingPointState 的调用中传递的 KFLOATING_SAVE 结构的指针。

返回值

KeRestoreFloatingPointState 返回STATUS_SUCCESS。

注解

KeRestoreFloatingPointStateKeSaveFloatingPointState 的倒数。

调用 KeSaveFloatingPointState 的任何例程必须在该例程返回控件之前调用 KeRestoreFloatingPointState,并且该例程必须在与之前调用 KeSaveFloatingPointState 时相同的 IRQL 上运行。 无法满足上述任一条件都会导致系统 bug 检查。

内核模式驱动程序代码必须确保正确嵌套对 KeSaveFloatingPointStateKeRestoreFloatingPointState 的 调用。 这是必需的,以便在每个嵌套级别, KeRestoreFloatingPointState 调用还原的状态与相应的 KeSaveFloatingPointState 调用所保存的状态相同。 为了确保正确嵌套,内核模式驱动程序代码必须遵循以下规则:

  • 还原已保存状态的 KeRestoreFloatingPointState 调用必须在与保存状态的 KeSaveFloatingPointState 调用相同的 IRQL 上运行。
  • 如果一对 KeSaveFloatingPointStateKeRestoreFloatingPointState 调用嵌套在一对周围的 KeSaveFloatingPointStateKeRestoreFloatingPointState 调用中,则嵌套调用的 IRQL 不得低于周围调用的 IRQL。
  • 通常,调用方分配 的KFLOATING_SAVE 结构,该结构包含 由 KeSaveFloatingPointState 保存的状态驻留在堆栈上。 堆栈自然保留已保存状态信息的嵌套。 如果驱动程序代码将状态存储在堆栈以外的位置,驱动程序编写器必须特别注意保留 KeSaveFloatingPointStateKeRestoreFloatingPointState 调用的嵌套。
  • 还原已保存状态的 KeRestoreFloatingPointState 调用必须与保存该状态的 KeSaveFloatingPointState 调用在同一线程中运行。

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (请参阅备注部分)

另请参阅

KFLOATING_SAVE

KeSaveFloatingPointState