none
WinCE 5.0 無法使用 GetSystemPowerStatusEX RRS feed

  • 問題

  • CE5.0 的SDK  Winbase.h 裡面雖然有 SYSTEM_POWER_STATUS_EX 這個 struct type define ,但是卻沒有定義GetSystemPowerStatusEX 這個function, 在4.2的Winbase.h 卻兩者都有,請問 CE5.0 是不支援此function嗎?(我想得知現在使用的是否為AC電源) 

    2009年3月13日 上午 02:08

解答

  • 如果你的 Target Device 沒有 support Battery API ,那就沒辦法了
    但假如有的話, 可以考慮 直接從該 platform 產生 出一個 SDK  來 support. (這是比較理想的方式)


    不然也可以直接 在 code 裡頭宣告 GetSystemPowerStatusEx function prototype, 但 stub libary - coredll.lib 可能還是要從你的 target platform 的 building enviroment 拿過來.

    不然就是用 late binding 的方式: LoadLibary(L"coredll.dll") 然後再用 GetProcAddress (L"GetSystemPowerStatusEx") 來取得 entry point.
    • 已提議為解答 JocoboNY 2009年3月13日 上午 05:58
    • 已標示為解答 bauannModerator 2009年3月17日 下午 12:36
    2009年3月13日 上午 05:58

所有回覆

  • 首先你的 SDK 是怎麼來的?
    根據 CE 5.0 的 souce tree (PB 5.0) $(_WINCEROOT)\PUBLIC\COMMON\SDK\inc\winbase.h (一般 app 用的 SDK 也都是從 OS 的 source tree enroll 出來的)
    GetSystemPowerStatusEx 這個 function 還是有, 不過是被 @CESYSGEN IF COREDLL_BATTERY 給包起來, 意思就是說 header file 的內容會因為 OS configuration 而改變 (被 filter 掉), 所以很有可能你原來的 target platform 就沒有 include battery API 進去, 所以 generate 出來的 SDK 也自然不會有.

    所以總之 CE 5 還是 support 這個 API, 只是用來 generate 你手上這份 SDK 的 OS config 沒有包含.
    這種情況就算你把 prototype 補上去, link 時還是會錯, 因為該 platform 的 coredll.dll 跟本沒有 該 API.

    解絕辦法應該要從 OS Image 下手, 先讓該 OS image support Battery API 然後再 generate SDK 就會 ok 了.
    2009年3月13日 上午 03:47
  •  多謝這位大哥,您講的我大概聽的懂,可是我使用的SDK 是使用 微軟提供的 WinCE 5.0 STANDARD 的SDK.

    從這邊下載的
    http://www.microsoft.com/downloads/thankyou.aspx?familyId=fa1a3d66-3f61-4ddc-9510-ae450e2318c3&displayLang=en

    2009年3月13日 上午 05:39
  • 如果你的 Target Device 沒有 support Battery API ,那就沒辦法了
    但假如有的話, 可以考慮 直接從該 platform 產生 出一個 SDK  來 support. (這是比較理想的方式)


    不然也可以直接 在 code 裡頭宣告 GetSystemPowerStatusEx function prototype, 但 stub libary - coredll.lib 可能還是要從你的 target platform 的 building enviroment 拿過來.

    不然就是用 late binding 的方式: LoadLibary(L"coredll.dll") 然後再用 GetProcAddress (L"GetSystemPowerStatusEx") 來取得 entry point.
    • 已提議為解答 JocoboNY 2009年3月13日 上午 05:58
    • 已標示為解答 bauannModerator 2009年3月17日 下午 12:36
    2009年3月13日 上午 05:58