Windows 如何访问英特尔芯片组的特定寄存器?

Windows 如何访问英特尔芯片组的特定寄存器?,windows,assembly,kernel,driver,intel,Windows,Assembly,Kernel,Driver,Intel,我想读取英特尔芯片组的“TSTR”寄存器(热传感器温度计读取寄存器)。 我发现这个功能正是我所需要的。 我还设置了一个内核驱动程序,因为该函数仅在内核模式下可用 但我不知道如何进入登记册。。。 在芯片组中,第857页规定寄存器的偏移地址为TBARB+03h 这个地址怎么用?有没有可以帮助我的教程 谢谢 据我所知,尝试做完全相同的事情时,\uu readmsr确实是访问寄存器的正确命令: 不过,我正在开发i5和英特尔的文档 建议像MC_RANK_VIRTUAL_TEMP条目这样的东西是寄存器,

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

但我不知道如何进入登记册。。。 在芯片组中,第857页规定寄存器的偏移地址为TBARB+03h

这个地址怎么用?有没有可以帮助我的教程


谢谢

据我所知,尝试做完全相同的事情时,\uu readmsr确实是访问寄存器的正确命令:


不过,我正在开发i5和英特尔的文档

建议像MC_RANK_VIRTUAL_TEMP条目这样的东西是寄存器,所以它应该可以工作,所以您可能走对了方向。。具体登记册见第272页。所以从技术上来说,这确实是答案,uu readmsr(1568)在我的例子中。
然而,我正在努力说服visual studio 2010在内核模式下构建它(它似乎不愿意这么做),我一直在得到特权指令错误。。当我解决了这个问题,整个程序开始运行时,我会写一篇关于一般过程的教程,但在此之前,我只敢给出一个理论上的答案。如果您的编译器倾向于听您所说的,只需添加/kernel编译器选项,因为您只是读取而不是编辑寄存器,这应该是安全的

编辑: 还有这篇文章,答案或多或少地暗示了我正在尝试做什么,虽然没有比目前更多,但请看一看:

据我所知,尝试做完全相同的事情时,\uu readmsr确实是访问寄存器的正确命令:


不过,我正在开发i5和英特尔的文档

建议像MC_RANK_VIRTUAL_TEMP条目这样的东西是寄存器,所以它应该可以工作,所以您可能走对了方向。。具体登记册见第272页。所以从技术上来说,这确实是答案,uu readmsr(1568)在我的例子中。
然而,我正在努力说服visual studio 2010在内核模式下构建它(它似乎不愿意这么做),我一直在得到特权指令错误。。当我解决了这个问题,整个程序开始运行时,我会写一篇关于一般过程的教程,但在此之前,我只敢给出一个理论上的答案。如果您的编译器倾向于听您所说的,只需添加/kernel编译器选项,因为您只是读取而不是编辑寄存器,这应该是安全的

编辑: 还有这篇文章,答案或多或少地暗示了我正在尝试做什么,虽然没有比目前更多,但请看一看:

此指令必须在特权级别0或实地址模式下执行;否则,将生成一般保护异常GP(0)

此指令必须在特权级别0或实地址模式下执行;否则,将生成一般保护异常GP(0)


看起来它实际上是一个PCI寄存器“这些热内存映射配置寄存器的基本内存在TBARB中指定(D31:F6:Offset 40h)。”十六进制的最后一位实际上是PCI设备配置空间中的一个偏移看起来它实际上是一个PCI寄存器“这些热内存映射配置寄存器的基本内存在TBARB中指定(D31:F6:Offset 40h)。”十六进制的最后一位实际上是PCI设备配置空间中的偏移量