You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在HIGH_LEVEL IRQL下使用FXSAVE/FXRSTOR管理浮点状态是否安全?

关于HIGH_LEVEL IRQL下直接使用FXSAVE/FXRSTOR管理浮点状态的正确性确认

我在运行于HIGH_LEVEL IRQL的内核例程中需要管理浮点状态,但KeSaveExtendedProcessorState和KeRestoreExtendedProcessorState无法在此IRQL级别使用,因此尝试直接调用FXSAVE和FXRSTOR指令来实现。

当前实现

汇编过程定义

SaveFxState PROC
    ; Save the floating point state
    mov rax, rcx
    fxsave [rax]
    ret
SaveFxState ENDP

RestoreFxState PROC
    ; Restore the floating point state
    mov rax, rcx
    fxrstor [rax]
    ret
RestoreFxState ENDP

C++外部声明

extern "C" {
    void SaveFxState(void* saveArea);
    void RestoreFxState(void* saveArea);
}

使用方式

FXSAVE_FORMAT g_FxSaveArea;

SaveFxState(&g_FxSaveArea);

// 执行浮点运算操作

RestoreFxState(&g_FxSaveArea);

能否有人确认这种在HIGH_LEVEL IRQL下管理浮点状态的方法是否正确且安全?希望得到相关见解或改进建议。


内容的提问来源于stack exchange,提问作者daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:54:55