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. lua table remove元素的问题

    当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...

  2. Excle隐藏及展开列

    当excle文档类目比较多的时候我们希望看第一列和某一列的对应关系可以选择隐藏中间列. 选中要隐藏的列,然后右键-->隐藏即可 需要展开的时候,选中:被隐藏列的前一列和后一列,然后当鼠标在列头( ...

  3. 从原理上理解NodeJS的适用场景

    NodeJS是近年来比较火的服务端JS平台,这一方面得益于其在后端处理高并发的卓越性能,另一方面在nodeJS平台上的npm.grunt.express等强大的代码与项目管理应用崛起,几乎重新定义了前 ...

  4. 【ubuntu】屏幕超时关闭后不能唤醒

    根据 http://blog.csdn.net/longshenlmj/article/details/18081167修改了"启动laptop_mode模式"gedit 的文件 ...

  5. laravel 加中间件的方法 防止直接打开后台

    路由 routes.php Route::group(['middleware' => ['web','admin.login.login']], function () { //后台首页路由 ...

  6. python的类和对象——类成员番外篇

    学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...

  7. windows下面安装casperjs

    因为需要 就学习了一下casperjs,CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写.由于casperjs对PhantomJS的依赖性,所以需要 ...

  8. C++学习之:括号匹配与栈的使用

    #include <stack> using std::stack ; 变量定义: stack<T>  stackName ; 成员函数: 成员函数 功能 bool  empt ...

  9. I/O多路复用 SELECT POLL -- 内核实现

    等待队列 先补充个基础知识――等待队列 认识 定义 wait_queue_head_t wait_queue; 初始化 init_waitqueue_head(&wait_queue); 等待 ...

  10. 读javascript高级程序设计12-HTML5脚本编程

    一.跨文档消息传递(XDM) 1.发送消息 postMessage(msg,domain)用于发送跨文档消息.第一个参数是要传递的消息内容,第二个参数表示接收方来自哪个域.第二个参数有助于提高安全性, ...