Execute RDMSR and WRMSR instructions from C/C++ code
I need to control C-State configuration. Specifically, I'd probably like to execute the following asm code:
__asm
{
rdmsr
and eax, 0x00
or eax, 0x01
wrmsr
}
Currently, I got this exception on rdmsr
line:
Unhandled exception at 0x00e3139e in MessWithCStates.exe: 0xC0000096: Privileged instruction.
How can I (permanently) elevate priviliges of my a开发者_开发知识库pp so it could execute the code above? I use VS 2010.
NOTE: It is possible without writing a kernel-mode driver. See R/W Everything.
Chances are, you are running this code on an x86 processor within Ring 3. You do not have the privileges to execute this command. Period. This is a hardware limitation. The only way to execute that instruction is to go into Ring 0 and chances are, your OS won't let you do that. You will need to write a kernel-mode driver to accomplish this.
Edit: http://faydoc.tripod.com/cpu/rdmsr.htm has more info.
精彩评论