• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            missautumn's BLOG

            devote to innovation of technique

            Windows CE下開關無線的通用辦法

            最近在將應用程序從Windows Mobile遷移到Windows CE平臺的時候遇到了一個開關無線網絡的問題,經過自己的一番摸索找到了一個通用的解決辦法,以下是詳細的原理及過程,
            一、Windows Mobile下是怎么開關無線的
            其實開關無線離不開下面三個函數,
                    [DllImport("coredll.dll")]
                    protected static extern int GetDevicePower(string pvDevice, int Flags, ref DevicePowerStateEnum state);
                    [DllImport("coredll.dll")]
                    protected static extern int SetDevicePower(string pvDevice, int Flags, DevicePowerStateEnum state);
                    [DllImport("coredll.dll")]
                    protected static extern int DevicePowerNotify(string name, DevicePowerStateEnum state, int flags);
            最頭疼的是這邊的pvDevice參數到底應該寫什么呢?經過Google老師的指引,我終于搞清楚了pvDevice的格式,
            pvDevice = 設備類型GUID\設備名稱
                那無線設備類型GUID到底改寫什么呢,如果你你不介意Hard Code那你可以直接在你的代碼中寫{98C5250D-C29A-4985-AE5F-AFE5367E5006},如果你想在你的代碼中避免Hard Code那寫一個讀注冊表函數,去讀\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\State\Suspend\下的第一個子鍵就可以了。
                設備名稱怎么取呢?那當然還得讀組冊表,下面的SDIO86861就是我們要的設備名稱。
            1,判斷當前無線狀態
            GetDevicePower(@"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\SDIO86861",1,ref dps)
            檢查dps是否為D0.
            2,打開無線及關閉無線
            DevicePowerNotify(@"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\SDIO86861",DevicePowerStateEnum.D0,1);
            Sleep(50);
            SetDevicePower(@"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\SDIO86861",1,DevicePowerStateEnum.D0);
            二、Windows CE下為什么不能用Mobile的方式控制無線
            因為Windows CE的注冊表中State下面是沒有值的,所以只能想辦法到其他地方去取了 :(

            三、Windows CE下我們改怎么做
            我的Device是M8,內核是Windows CE6.0. 先看看MeiZu的注冊表項吧

            果然State下面什么值都沒有! :(
            之后郁悶了半天,又翻了半天的遠程注冊表,終于被我發現一個可疑的注冊表鍵[Mobile Device\HKEY_LOCAL_MACHINE\Comm\SWLD24SP1],這個子鍵的結構如下,

            夠可疑的吧,趕緊用代碼試試先!
            GetDevicePower(@"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\SWLD24SP1",1,ref dps),得到的dps為DevicePowerStateEnum.D0.  成功了!!
            之后在Mobile設備上驗證這個方法,結果也通過了.

            posted on 2009-07-14 17:27 william 閱讀(3819) 評論(8)  編輯 收藏 引用 所屬分類: C++Windows Mobile Development

            Feedback

            # re: Windows CE下開關無線的通用辦法 2009-07-14 20:58 樂蜂網

            好東西!謝謝  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2009-07-15 11:50 99讀書人

            不錯 哦  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2009-07-16 18:59 99網上書城

            分享好東西  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2010-04-13 11:34 阿道夫

            即使改了作者的網卡SWLD24SP1,這個方法試了行不通,還不能說是通用的  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2010-04-15 13:48 阿道夫

            試了很多次,在CE5.0上通不過,我的也是SDIO86861的網卡  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2010-04-15 13:51 阿道夫

            Mobile5.0上也不行的,使用WLP1:作為設備名稱可以通過  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法 2010-11-19 12:25 SDIO86861

            @阿道夫
            那你現在搞定沒? 我也是這個網卡  回復  更多評論   

            # re: Windows CE下開關無線的通用辦法[未登錄] 2011-02-24 13:48 riverqh

            先使用WZCEnumInterfaces獲取無線網卡列表(一般PDA也就只有一個無線網卡吧,那就拿第一個好了),然后前面固定加上無線網卡MiniPort的GUID {98C5250D-C29A-4985-AE5F-AFE5367E5006}\作為設備名稱傳遞到SetPower/GetPower就行了。  回復  更多評論   

            国产免费福利体检区久久| 欧美亚洲国产精品久久| 国产精品丝袜久久久久久不卡| 伊人久久免费视频| 亚洲AV日韩精品久久久久| 国产成人综合久久综合| 色99久久久久高潮综合影院 | 亚洲精品无码专区久久久| 久久国产精品久久精品国产| 伊人久久无码精品中文字幕| 亚洲综合精品香蕉久久网97 | 亚洲AV无码久久精品狠狠爱浪潮| 99久久国产亚洲高清观看2024 | 国产免费久久精品99re丫y| 97久久超碰国产精品2021| 久久妇女高潮几次MBA| 伊人色综合久久| 97精品久久天干天天天按摩| 中文字幕无码免费久久| 婷婷久久综合九色综合绿巨人| 久久久青草青青亚洲国产免观| 久久男人Av资源网站无码软件| 久久99热这里只有精品66| 久久AⅤ人妻少妇嫩草影院| 久久久久久狠狠丁香| 精品久久香蕉国产线看观看亚洲| 7777精品久久久大香线蕉| 久久久久久综合网天天| 精品久久久久成人码免费动漫| 亚洲日本va午夜中文字幕久久 | 久久最新免费视频| 久久久这里有精品中文字幕| 久久久久国产精品麻豆AR影院| 久久精品国产亚洲av瑜伽| 久久久久女教师免费一区| 合区精品久久久中文字幕一区 | 精品综合久久久久久888蜜芽| 亚洲综合伊人久久大杳蕉| 亚洲va久久久噜噜噜久久狠狠| 精品无码久久久久久午夜| 久久99国产精品二区不卡|