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

Lut*_*ław 5 c c++ cpu masm cpu-registers

我需要控制 C-State 配置。具体来说,我可能想执行以下 asm 代码:

__asm
{
    rdmsr
    and eax, 0x00
    or eax, 0x01
    wrmsr
}
Run Code Online (Sandbox Code Playgroud)

目前,我在rdmsr网上得到了这个异常:

MessWithCStates.exe 中 0x00e3139e 处的未处理异常:0xC0000096:特权指令。

我如何(永久)提升我的应用程序的权限,以便它可以执行上面的代码?我使用 VS 2010。

注意:无需编写内核模式驱动程序也是可能的。请参阅R/W 一切

小智 4

您可能正在 Ring 3 内的 x86 处理器上运行此代码。您没有执行此命令的权限。时期。这是硬件限制。执行该指令的唯一方法是进入 Ring 0,并且您的操作系统很可能不允许您这样做。您将需要编写一个内核模式驱动程序来完成此任务。

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