1

我想读取我的英特尔芯片组的“TSTR”寄存器(热传感器温度计读取寄存器)。我发现__readmsr函数是我所需要的。我还设置了内核驱动程序,因为该功能仅在内核模式下可用。

但我不知道如何访问寄存器......在芯片组的数据表中,第 857 页上说明寄存器的偏移地址是TBARB+03h

我怎样才能使用这个地址?那里有可以帮助我的教程吗?

谢谢!

4

2 回答 2

1

据我所知,尝试做同样的事情, __readmsr 确实是访问寄存器的正确命令:

http://msdn.microsoft.com/en-us/library/y55zyfdx%28v=VS.100%29.aspx

但是我正在研究 i5,以及英特尔的文档
http://www.intel.com/content/www/us/en/intelligent-systems/piketon/core-i7-800-i5-700-desktop-datasheet-vol -2.html
建议像 MC_RANK_VIRTUAL_TEMP 条目之类的东西是寄存器,所以它应该可以工作,所以你可能走在正确的轨道上.. 特定的寄存器在第 272 页。所以从技术上讲,这确实是答案,__readmsr(1568) 在我的情况。
但是我正在努力说服 Visual Studio 2010 在内核模式下构建它,这似乎不太情愿,我不断收到特权指令错误。当我解决这个问题并且整个程序正常工作时,我会写一个教程一般的过程,但在那之前我只敢给出理论上的答案。如果您的编译器倾向于听您说的话,只需添加 /kernel 编译器选项,因为您只是在读取而不是编辑寄存器,它应该是安全的。

编辑:也有这篇文章,答案或多或少暗示了我正在尝试做的事情,虽然没有比我到目前为止更多,但还是看看:
如何访问 CPU 的热传感器?

于 2014-07-09T09:59:06.240 回答
0

“该指令必须在特权级 0 或实地址模式下执行;否则,将产生一般保护异常 #GP(0)。”

http://faydoc.tripod.com/cpu/rdmsr.htm

于 2017-03-13T18:59:16.953 回答