从 C/C++ 执行 RDMSR 和 WRMSR 指令代码
我需要控制 C 状态配置。具体来说,我可能想执行以下 asm 代码:
__asm
{
rdmsr
and eax, 0x00
or eax, 0x01
wrmsr
}
目前,我在 rdmsr 行上遇到了此异常:
Unhandled exception at 0x00e3139e in MessWithCStates.exe: 0xC0000096: Privileged instruction.
如何(永久)提升我的应用程序的权限,以便它可以执行上面的代码?我使用 VS 2010。
注意:无需编写内核模式驱动程序也是可以的。请参阅读/写所有内容。
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 app 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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能正在 Ring 3 内的 x86 处理器上运行此代码。您没有执行此命令的权限。时期。这是硬件限制。执行该指令的唯一方法是进入 Ring 0,并且您的操作系统很可能不允许您这样做。您将需要编写一个内核模式驱动程序来完成此任务。
编辑:http://faydoc.tripod.com/cpu/rdmsr。 htm 有更多信息。
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.