c++ - 从 C/C++ 代码执行 RDMSR 和 WRMSR 指令

标签 c++ c cpu masm cpu-registers

我需要控制 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,而您的操作系统很可能不允许您这样做。您将需要编写内核模式驱动程序来完成此操作。

编辑:http://faydoc.tripod.com/cpu/rdmsr.htm有更多信息。

关于c++ - 从 C/C++ 代码执行 RDMSR 和 WRMSR 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875778/

相关文章:

c++ - 了解点相对于直线的相对位置的最佳方法是什么?

c - fgets() 麻烦。为 if/else 语句获取用户输入时

c - C 语言的温度转换器程序无法运行。执行一些代码后停止(运行时错误)

iphone - UIView动画使用90%CPU

c++ - 如何使用GetNumaProximityNode (Win7+)?

c++ - 如何引用 LLVM 迭代器?

c++ - 具有给定容错性的容器中存在的 find_if 数字

c - C 可以用多种浮点格式求值吗?

Php CPU 周期基准测试

c++ - 我自定义使用 std::unordered_map 的性能非常慢