从C/ c++代码执行RDMSR和WRMSR指令
Execute RDMSR and WRMSR instructions from C/C++ code
我需要控制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有更多信息