WinCE的WiFi开关要依赖于WiFi模块的休眠功能还有模块厂商提供的驱动里面有支持电源管理功能。这里面用的是SDIO86861模块,WinCE5的系统,S3C2416的CPU。

头文件要包括:
#include <winioctl.h>
#include <ntddndis.h>
#include <nuiouser.h>
#include <pm.h>

关键部分代码:

BOOL CDevCtrlDlg::OpenWiFiDriver(BOOL b_OpenDriver)
{
    if(b_OpenDriver)
    {
        //Delete Register
        reg.Create(HKEY_LOCAL_MACHINE, _T("Comm\\NdisPower"));
        reg.DeleteValue(_T("SDIO86861"));
        Sleep();

        //Power Up SDIO86861
        DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\SDIO86861"), D0, POWER_NAME);
        SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\SDIO86861"), POWER_NAME, D0);
#if 0   //这里面因为电源开启之后驱动会自动把网卡开启,所以下面的操作可以不用。// Open NetworkCard
        WCHAR Name[]=_T("SDIO86861\0"); 

        HANDLE m_hFileHandle = CreateFile(_T(, , NULL,OPEN_EXISTING,  FILE_ATTRIBUTE_NORMAL, (HANDLE) INVALID_HANDLE_VALUE);
        if( m_hFileHandle == INVALID_HANDLE_VALUE )
        {
            RETAILMSG(, (TEXT("Failed To CreateFile NDS0!\r\n")));
            return FALSE;
        }
        else
        {
            RETAILMSG(, (TEXT("Succeed To CreateFile NDS0!\r\n")));
            //return TRUE;
        }

        BOOL SDIO86861Control=DeviceIoControl( m_hFileHandle, IOCTL_NDIS_BIND_ADAPTER, Name, , NULL, NULL );
        if(SDIO86861Control==TRUE)
        {
            RETAILMSG(, (TEXT("Succeed To Control SDIO86861!\r\n")));
            CloseHandle( m_hFileHandle );
            return TRUE;

        }
        else
        {
            RETAILMSG(, (TEXT("Failed To Control SDIO86861!\r\n")));
            CloseHandle( m_hFileHandle );
            return FALSE;
        }
#endif
        return TRUE;
    }
    else
    {
        //Power Down SDIO86861
        DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\SDIO86861"), D4, POWER_NAME);
        SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\SDIO86861"), POWER_NAME, D4);

        //Close NetworkCard
        WCHAR Name[]=_T("SDIO86861\0");
        HANDLE m_hFileHandle = CreateFile(_T(, , NULL,OPEN_EXISTING,  FILE_ATTRIBUTE_NORMAL, (HANDLE) INVALID_HANDLE_VALUE);
        if( m_hFileHandle == INVALID_HANDLE_VALUE )
        {            RETAILMSG(, (TEXT("Failed To CreateFile NDS0!\r\n")));
             return FALSE;
        }
        else
        {            RETAILMSG(, (TEXT("Succeed To CreateFile NDS0!\r\n")));
        }

        BOOL SDIO86861Control=DeviceIoControl( m_hFileHandle, IOCTL_NDIS_UNBIND_ADAPTER, Name, , NULL, NULL );
        if(SDIO86861Control==TRUE)
        {            RETAILMSG(, (TEXT("Succeed To Control SDIO86861!\r\n")));
             CloseHandle( m_hFileHandle );
        }
        else
        {
             RETAILMSG(, (TEXT("Failed To Control SDIO86861!\r\n")));
             CloseHandle( m_hFileHandle );
             return FALSE;
        }     //写注册表,此注册表用于WiFi休眠唤醒之后是否启动WiFi
        //[HKEY_LOCAL_MACHINE\Comm\NdisPower]
        //"SDIO86861"=dword:00000004
        reg.Create(HKEY_LOCAL_MACHINE, _T("Comm\\NdisPower"));
        reg.SetDW(TEXT();
        return TRUE;
    }

    return FALSE;
}

CE5 WiFi开关的更多相关文章

  1. win8 wifi开关显示关闭,且设置里面wifi开关显示灰色的解决办法

    只要从华硕官网下载驱动,电源管理驱动,安装下面显示的几个软件即可,然后重启电脑,即可看见wifi热点,另外设置里面的wifi开关也将显示正常(刚开始安装了个驱动人生根本没用,最后在华硕官网下载了个电源 ...

  2. 联想电脑 Wifi开关开不了

    "VirtualBox Host-Only Network" 没有有效的IP配置  未修复 自己电脑显示 控制面板>网络和Internet>网络连接 VirtualBo ...

  3. Android 监听 WiFi 开关状态

    Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...

  4. 逗比的wifi开关

    笔记本会出现网卡开机不能用的现象.具体表现为:网卡没有禁用,但是搜索不到无线信号.适配器选项框里面选中无线网卡,然后诊断这个链接提示启用无线功能.然后我点击应用此修复就能搜索到无线信号了.问题是,电脑 ...

  5. 【Python】wifi开关测试

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os import time def find_device(): os.system('adb ki ...

  6. Arduino IDE搭建ESP8266开发环境,文件下载过慢解决方法 | ESP-01制作WiFi开关教程,改造宿舍灯

    1. Arduino IDE配置ESP8266环境 参考:https://www.jianshu.com/p/cb0274d612b5 首先从 Arduino 官网 下载最新版本的 Arduino I ...

  7. 然当装入Ubuntu双系统时,会出现无线硬件开关关闭的问题,当然也就无法连网

    rfkill list all 会出现如下提示 0:ideapad_wlan: Wireless LAN      Soft blocked: no      Hard blocked:yes     ...

  8. Android快捷开关实现(转)

    在Android源码中,提供的快捷开关相对是比较少的,Android4.0系统默认提供的桌面快捷开关AppWidget上只有5种开关(分别是Wifi开关.蓝牙开关.GPS开关.同步开关.亮度设置开关) ...

  9. 【全面完美方案】iPhone 4S WiFi变灰 DIY修复方式

    这是我在一位台湾网友usaretama发表的一篇帖子中看到的,原帖我发表在维维网 如果你有WiFi开关变灰不能切换.WiFi遇到搜不到AP或搜到了连不上,那您就要注意这篇了. 家人的 iPhone 4 ...

随机推荐

  1. Ubuntu anzhuang

    zhongwenshurubuzhidaozenmeqiehuan anhzuang Flash  apt-get install flashplugin-installer

  2. 解决Jenkins打不开浏览器问题

    参考:http://blog.csdn.net/achang21/article/details/45096003 1.控制面板禁用掉jenkins服务 2.java -jar jenkins.war ...

  3. mac os 中类似于Linux的yum工具,或ubuntu的apt-get工具Homebrew

    Linux下的yum用着真省心! mac下的相类似的软件是Homebrew 使用前需要先安装它, ruby -e "$(curl -fsSL https://raw.githubuserco ...

  4. linux 基本命令操作

    1.ls 命令 ls -a  列出所有文件,包括隐藏文件 ls -l  列出文件详细信息 ls -r 列出所有文件包括文件夹 查询具体文件可以在命令后面加  |grep 要匹配的字符串,方便我们查找, ...

  5. linux 下mysql的启动 、调试、排错

    Linux 下 MySQL 启动与关闭 说明 一.启动 1.1  MySQL 进程 可以用ps 命令查看进程: [root@rac2 ~]# ps -ef|grep mysql root     21 ...

  6. java内存泄露的理解与解决(转)

    Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记 ...

  7. Angular - ng-repeat高级用法

    ng-repeat高级用法: 遍历数组:    <li ng-repeat="item in array">{{item}}</li> 遍历对象:    k ...

  8. C++ / CLI 调用 C++ /Native 随记

    C# 封装 原生C++ 方法:1.C++ CLR(托管)  调用 C++(原生)2.C#调用C++ CLR ,  注意各个平台编译版本需一致.3.C# 默认编绎生成版本是 any cpu , 需修改成 ...

  9. Windows 下java环境变量的配置(Windows7 ,8,8.1,10)

    Windows 下java环境变量的配置 在“系统”面板的左上角选择“高级系统设置”,在弹出的系统属性中选择”高级“项,然后点击右下角的“环境变量(N)...”,就此进入JAVA环境变量的配置. 如果 ...

  10. html a 链接标签title属性换行鼠标悬停提示内容的换行效果

    鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的.如何换行呢? 这里DIVCSS5总结介绍两种换行方法为大 ...