天天看點

如何程式設計實作iAMT無線功能的禁用和開啟

  Intel AMT 2.5和4.0版本中引入了對無線的支援,也就是說通過無線接口同樣可以進行遠端的管理。IAMT 4.0更是将無線管理的功能擴充到了系統關機或休眠狀态,也就是Sx狀态,原來的2.5隻支援S0電源狀态下的無線遠端管理。預設情況下,iAMT的無線 管理功能是關閉的,這個通過WebUI的“Wireless Setting”菜單項可以看到,Wireless Management功能預設情況下是Diabled,如下圖所示。

<a href="http://softwareblogs-zho.intel.com/wordpress/wp-content/uploads/2008/05/webui-wireless-management-disable-01.PNG"></a>

        有的開發人員在開發的時候一般都會碰到這樣一個問題:無線的配置是通過iAMT的"Wireless Configuration Interface"裡面提供的函數來增加和删除的,還包括擷取無線的Capabilities,也就是上面圖所示的"Band mode capabilities";但是卻怎麼也找不到将Wireless Management Eanble的函數。 到底這個功能的函數在哪裡呢?該怎麼調用呢?

        其實這個功能是關于network interfaces的,iAMT在其"Network Administration Interface"裡面提供了相關函數:SetNetworkInterface。這個函數在SDK的NetworkAdminstration的 Sample中有調用,可以參考一下。其中InterfaceHandle為0是表示的是有線接口,為1就是設定無線接口;參數 InterfaceDescriptor中的LinkPolicy就決定了iAMT的無線功能在什麼樣的情況下Enable。 LinkPolicy的結構是這樣的:

    typedef enum&lt;uint8&gt; _LinkPolicyType

    {

        AVAILABLE_ON_AC_S0 = 0x01,

        AVAILABLE_ON_AC_SX = 0x0E,

        AVAILABLE_ON_DC_S0 = 0x10,

        AVAILABLE_ON_DC_SX = 0xE0

    } LinkPolicyType ;

      具體每個參數的解釋,大家可以參考SDK中的文檔。很明顯,LinkPolicy這個參數應該是上面這幾個枚舉值的疊加。開始我随便疊加了一 個,比如0x1E,用程式調用試了一下,結果是 PT_STATUS_INVALID_PARAMETER 錯誤,看來是參數不對。仔細想了一下,結合WebUI上面的三個選項(參考上面的圖),看來應該是隻有三個參數是可行的:

    1) 0x00 表示Wireless Management是Disable的;

    2) 0x11  表示Wireless Management在AC(交流電,接電源)和DC(直流電,接電池)情況下且機器開機時是Enable的;

    3) 0x1F 表示Wireless Management在AC情況下任何時候,以及DC情況下的開機時時Enable。

        Intel AMT目前是不支援DC情況的關機時iAMT無線也工作,因為那樣很快就會把筆記本電池的電耗幹淨的。

        另外,還需要注意一點的是,上面這個函數設定後,需要調用CommitChanges函數,相應的設定才會生效,并且CommitChangs函數是SecurityAdministrationService裡面的,調用時候注意修改URL。

本文轉自Intel_ISN 51CTO部落格,原文連結:http://blog.51cto.com/intelisn/131471,如需轉載請自行聯系原作者