不依赖于HECI驱动,如何判断客户机是否可能支持Intel AMT的参考代码

    开发人员在开发支持Intel AMT功能的方案时,都会碰到这样的一个问题:客户机上运行的程序如何知道客户机是否支持Intel AMT功能?

   一般的方法是: 1) 网络扫描;服务器端通过网络扫描的方法可以找到那些已经配置好了的Intel AMT机器,并获得其版本号,这个是不需要知道iAMT的密码的,然后告诉客户端程序;其间可以用UUID对应的方法来识别机器身份。
        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.

   你有什么好的想法和疑问,欢迎和我交流
For more complete information about compiler optimizations, see our Optimization Notice.