gpt4 book ai didi

windows - 使用 KeSaveExtendedProcessorState 得到 BSOD

转载 作者:行者123 更新时间:2023-12-03 11:07:30 27 4
gpt4 key购买 nike

我用了KeSaveExtendedProcessorState/KeRestoreExtendedProcessorState在 Windows 7 64 位设备驱动程序中保存和恢复扩展处理器状态之前,我遇到了 KeSaveExtendedProcessorState 蓝屏死机,你能帮忙吗。

我用了RtlGetEnabledExtendedFeatures ((ULONG64)(-1)) 获取启用的扩展功能(返回值为0x3),并将其作为KeSaveExtendedProcessorState的第一个参数, 我用了 MmAllocateContiguousMemory (sizeof(XSTATE_SAVE), highAddress) 和 highAddress = 0xbfffffff 分配用于保存扩展状态的非分页内存,并在 KeSaveExtendedProcessorState 之前将 IRQL 提升到 DISPATCH_LEVEL。我收到以下消息的 BSOD:

0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

INVALID_EXTENDED_PROCESSOR_STATE (131)
Invalid combination of parameters was detected while saving or restoring
extended processor state.
Arguments:
Arg1: 0000000000000000, Invalid feature mask was passed or extended processor state is
not enabled.
Arg2: 0000000000800000, Nonzero if extended state is enabled.
Arg3: 0000000000000003, The low 32 bits of the feature mask.
Arg4: 0000000000000000, The high 32 bits of the feature mask.

我错过了什么?

谢谢。

问候,大卫

最佳答案

现在帮助您编程为时已晚,但您错过了 KeSaveExtendedProcessorState 在 64 位 Windows 7 中的实现——不是 32 位,也不是 Windows 8 及更高版本——要求处理器支持扩展处理器状态,这你的没有。无论如何,它都将 XSTATE_MASK_LEGACY 的两个位都视为 Mask 参数中的无效。

你错过这个的代价正是你的错误检查。不需要“多一点代码”。当然,您并不是唯一错过它的人。 Microsoft 在文档中也遗漏了它,但它对 Microsoft 的代价比零还小。

十年后,在我评估该功能是否值得我费心记录时,我想知道是否有任何真实世界的程序员被抓到过。因此,Stack Overflow 表明它最终有利于答案。

关于windows - 使用 KeSaveExtendedProcessorState 得到 BSOD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com