我需要控制 C 状态配置。具体来说,我可能想执行以下 asm 代码:
__asm
{
rdmsr
and eax, 0x00
or eax, 0x01
wrmsr
}
目前,我在 rdmsr
行遇到了这个异常:
Unhandled exception at 0x00e3139e in MessWithCStates.exe: 0xC0000096: Privileged instruction.
我如何(永久地)提升我的应用程序的权限,以便它可以执行上面的代码?我使用 VS 2010。
注意:无需编写内核模式驱动程序即可。请参阅R/W 一切。
最佳答案
很可能,您正在 Ring 3 内的 x86 处理器上运行此代码。您没有执行此命令的权限。时期。这是硬件限制。执行该指令的唯一方法是进入 Ring 0,而您的操作系统很可能不允许您这样做。您将需要编写内核模式驱动程序来完成此操作。
关于c++ - 从 C/C++ 代码执行 RDMSR 和 WRMSR 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875778/