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. PHP文本框的值随下拉框改变

    初学PHP,下面是实现文本框内容随下拉框变化的代码实现: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  2. 数据包与IPTABLE关系

    #数据包传输 以本地为目标 -------------------------------------------------------------------------------------- ...

  3. JQ二级菜单练习之一~~~

    <div class="nav"> <ul> <li><a href="#">首页</a> < ...

  4. 如何做出header,footer固定定位后让main主体部分可以滑动,在微信浏览器中滑动到最后不出现黑边的情况

    <!doctype html>   <html>   <head>   <meta charset="utf-8">   </ ...

  5. oracle中存储过程中调用存储过程

    存储过程中调用存储过程 create or replace package body PF_Role_Pack is procedure sp_GetPage_Role(pageSize_ in nu ...

  6. iOS开发拓展篇—应用之间的跳转和数据传递

    iOS开发拓展篇—应用之间的跳转和数据传 说明:本文介绍app如何打开另一个app,并且传递数据. 一.简单说明 新建两个应用,分别为应用A和应用B. 实现要求:在appA的页面中点击对应的按钮,能够 ...

  7. css盒子模型 padding

    注意: 行内元素的内边距的top和bottom是不起作用的,想让他起作用要让他变成块元素加:display:bloock 注意: 如果元素设置了背景,那么背景会填充到内容区+内边距区 利用paddin ...

  8. HTC A510C电信手机刷机过程

    HTC A510C电信手机刷机过程记录 Writed by Peter Hu(2014.6.7) ON WIN7_64 刷机需要的步骤: 1)  将S-ON加密保护式去掉,改成S-OFF模式,这样才能 ...

  9. Leetcode 171 Excel Sheet Column Number 难度:0

    https://leetcode.com/problems/excel-sheet-column-number/ class Solution { public: int titleToNumber( ...

  10. Leetcode 155 Min Stack 小顶堆+栈,优先队列实现 难度:0

    https://leetcode.com/problems/min-stack/ #include <vector> #include <queue> #include < ...