开发人员在开发支持Intel AMT功能的方案时,都会碰到这样的一个问题:客户机上运行的程序如何知道客户机是否支持Intel AMT功能?
一般的方法是: 1) 网络扫描;服务器端通过网络扫描的方法可以找到那些已经配置好了的Intel AMT机器,并获得其版本号,这个是不需要知道iAMT的密码的,然后告诉客户端程序;其间可以用UUID对应的方法来识别机器身份。
2)通过本地直接调用GeneralInfo接口提供的函数,获得iAMT版本号,但需要HECI驱动、LMS服务的支持,并且需要知道Intel AMT用户名和密码。
2)通过本地直接调用GeneralInfo接口提供的函数,获得iAMT版本号,但需要HECI驱动、LMS服务的支持,并且需要知道Intel AMT用户名和密码。
因为对于每台客户机,我们不能保证其iAMT一定就已经被配置好,HECI驱动和LMS本地服务一定安装正确,这个时候上面的方法就有局限性了。怎么样解
决这个问题呢? 目前我们想到的一个办法是查询是否有HECI硬件,来判断是否支持Intel AMT。
(严格意义上来说,有HECI硬件并不代表一定支持Intel AMT,因为OEM厂商可能在BIOS层面将Intel
AMT禁止,但大部分情况下是适用的)。
思路是这样的,调用windows提供的设备查询函数,查询PCI总线上的所有设备,一一对比其硬件ID,看是否有和我们收集的已知的HECI的硬件ID
相匹配,如果匹配,则判断其可能支持Intel AMT,并估计其支持的版本。
你可以从这里下载测试程序:CheckIAMTLocal.exe, 源代码也可以下载:CheckIAMTLocal_SOURCE_CODE.
你有什么好的想法和疑问,欢迎和我交流([email]duofeng.li@intel.com[/email]).
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/185412.html