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

Execute RDMSR and WRMSR instructions from C/C++ code

本文关键字:RDMSR WRMSR 指令 执行 代码 c++      更新时间:2023-10-16

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

__asm
{
    rdmsr
    and eax, 0x00
    or eax, 0x01
    wrmsr
}

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

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

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

注意:可以不编写内核模式驱动程序。参见R/W Everything

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

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