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

发布于 2024-11-04 21:07:31 字数 390 浏览 3 评论 0原文

我需要控制 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淑女气质 2024-11-11 21:07:31

您可能正在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文