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. iOS - iOS 适配

    前言 什么是适配: 适应.兼容各种不同的情况. iOS 开发中,适配的常见种类: 1)系统适配, 针对不同版本的操作系统进行适配. 2)屏幕适配,针对不同大小的屏幕尺寸进行适配. iPhone 的尺寸 ...

  2. python去除空格和换行符的方法

    一.去除空格 strip() " xyz ".strip() # returns "xyz" " xyz ".lstrip() # retu ...

  3. 转!!XML,DTD,XSD,XSL的区别

    XML=可扩展标记语言(eXtensible Markup Language).可扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可用 方便的方式建立,虽然XML占 ...

  4. linux -- 基于mysql tomcat 部署web项目

    一.导入数据库 二.配置web项目访问端口 vim /var/lib/tomcat8/conf/server.xml <Connector port=" protocol=" ...

  5. page,client,offset区别

    offset:相对于当前“盒子”的距离 ,与滚动条无关 client:相对于可视区域的距离,与滚动条无关 page:相对于整个页面的距离,与滚动条有关 示例代码: <!DOCTYPE html& ...

  6. Js获取后台集合List的值并操作html

    功能:将后台传到前端JSP的List中的float型数值转换为百分比显示 HTML代码: <s:iterator value="colorConfigList" status ...

  7. 3d加速的一些问题

    笔记本一般有双显卡,默认可以切换,但是使用浏览器打开的要合适的浏览器 打开WEBGL程序,包括驱动,浏览器,有时候需要手工设置独立显卡 一般来说价钱四五千以上的笔记本电脑都是支持WEBGL的,而且可以 ...

  8. Struts2+Hibernate+Spring 整合示例[转]

    原文 http://blog.csdn.net/tkd03072010/article/details/7468769 Spring整合Struts2.Hibernate原理概述: 从用户角度来看,用 ...

  9. Html=>Head=>meta

    如今智能机遍布大街小巷,所以,如今的前端攻城师们要大 跨步的迈向移动互联网了,更何况Web App也应用广泛,可能原理还一样,但是一定会有新的东西出现,那就从“头”开始,看看头部那些Meta的新玩意. ...

  10. 爱默生UPS并机系统:进入与退出操作方法

    UPS并机系统的进入与退出: 进入:.合UPS的出线及进线开关:开启第一台UPS,等待整流指示灯常亮.然后Invert On,正常开机,此时UPS进入逆变状态 .合另外一台UPS的出线及进线开关,等待 ...