`
guowee
  • 浏览: 176674 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

PPC中如何找到正在使用中的网络(源代码)

阅读更多

《PPC中如何判断网络已经连接或者断开》中已经说明了如何判断PPC的网络是否连接和断开,本篇文章讲讲如何枚举出当前的网络状态,并找到正在使用中的 网络。一个比较简单的应用就是当接到系统连接到网络的通知之后,需要判断是免费网络还是收费网络,之后再作相应处理。一般免费网络就是WIFI和 ActiveSync,收费网络就是CMNET和CMWAP。下面的代码就来判断当前连接的网络究竟是什么网络,要做到这一点,需要使用一个函数 ConnMgrQueryDetailedStatus,这个函数可以得到网络的详细信息,从他的dwType中可得到网络的类别,dwSubtype可 以知道具体的网络类型。具体代码如下,写的已经是比较详细了,如有问题可以在17feixiang.com上留言。


    CONNMGR_CONNECTION_DETAILED_STATUS *StatusBuffer;
    CONNMGR_CONNECTION_DETAILED_STATUS *StatusBufferTemp;
    DWORD                              pcbBufferSize = 0;

    ConnMgrQueryDetailedStatus(NULL, &pcbBufferSize);
    StatusBuffer = (CONNMGR_CONNECTION_DETAILED_STATUS *)new BYTE[pcbBufferSize];
    ConnMgrQueryDetailedStatus(StatusBuffer, &pcbBufferSize);
    StatusBufferTemp = StatusBuffer;

    while(StatusBufferTemp != NULL)
    {
        if(StatusBufferTemp-〉dwConnectionStatus == CONNMGR_STATUS_CONNECTED)
        {
            if(StatusBufferTemp-〉dwType == CM_CONNTYPE_NIC)
            {
                switch(StatusBufferTemp-〉dwSubtype)
                {
                case CM_CONNSUBTYPE_NIC_WIFI :
                    MessageBox(_T("WIFI"));
                    break;

                case CM_CONNSUBTYPE_NIC_ETHERNET :
                    break;
                }
            }

            if(StatusBufferTemp-〉dwType == CM_CONNTYPE_CELLULAR)
            {
                switch(StatusBufferTemp-〉dwSubtype)
                {
                case CM_CONNSUBTYPE_CELLULAR_CSD :
                    break;

                case CM_CONNSUBTYPE_CELLULAR_GPRS :
                    MessageBox(_T("GPRS"));
                    break;

                case CM_CONNSUBTYPE_CELLULAR_1XRTT :
                    MessageBox(_T("1XRTT"));
                    break;

                case CM_CONNSUBTYPE_CELLULAR_1XEVDO :
                    MessageBox(_T("1XEVDO"));
                    break;

                case CM_CONNSUBTYPE_CELLULAR_1XEVDV :
                    break;

                case CM_CONNSUBTYPE_CELLULAR_EDGE :
                    MessageBox(_T("EDGE"));
                    break;

                case CM_CONNSUBTYPE_CELLULAR_UMTS :
                    break;

                case CM_CONNSUBTYPE_CELLULAR_VOICE :
                    MessageBox(_T("VOICE"));
                    break;

                case CM_CONNSUBTYPE_CELLULAR_PTT :
                    break;

                //case CM_CONNSUBTYPE_CELLULAR_HSDPA :
                //    break;
                }
            }

            if(StatusBufferTemp-〉dwType == CM_CONNTYPE_PROXY)
            {
                switch(StatusBufferTemp-〉dwSubtype)
                {
                case CM_CONNSUBTYPE_PROXY_WAP :
                    MessageBox(_T("WAP"));
                    break;

                case CM_CONNSUBTYPE_PROXY_HTTP :
                    MessageBox(_T("HTTP"));
                    break;
                }
            }

            if(StatusBufferTemp-〉dwType == CM_CONNTYPE_PC)
            {
                switch(StatusBufferTemp-〉dwSubtype)
                {
                case CM_CONNSUBTYPE_PC_DESKTOPPASSTHROUGH :
                    MessageBox(_T("ACTIVESYNC"));
                    break;

                case CM_CONNSUBTYPE_PC_UNKNOWN :
                    break;
                }
            }

        }
        StatusBufferTemp = StatusBufferTemp-〉pNext;
    }

    delete StatusBuffer;

分享到:
评论

相关推荐

    PPC2003通过GPrs向服务器发送数据

    在提供的压缩包文件“PPC2003GPrs向服务器发送数据”中,可能包含了实现以上功能的相关源代码、配置文件、示例数据等。通过分析这些文件,开发者可以学习如何在PPC2003平台上实现GPRS连接以及调用WebService的完整...

    zabbix-3.0.19.tar.gz

    安装Zabbix 3.0.19时,你需要编译源代码、配置数据库连接、设置权限,并根据你的网络环境调整配置文件。然后,你可以启动Zabbix服务并使用Web界面进行监控。在实际应用中,Zabbix能够监控硬件状态、网络性能、操作...

    book3s_hv_cma.rar_memory

    在这个项目中,"book3s_hv_cma.c"和"book3s_hv_cma.h"可能是实现ppc KVM中CMA内存分配器的源代码文件。它们可能包含了对内存区域的管理,如分配、释放、查找连续内存块等功能的实现。"shsha.txt"可能是一个文档或者...

    基于PPCBOOT的嵌入式Linux系统的开发.pdf

    在Linux服务器中,可以找到待开发的Linux内核、文件系统和PPCBOOT源代码,作为整个编译环境。开发者需要在服务器上配置tftp和nfs服务,确保PPCBOOT能正确引导内核和文件系统。 **技术关键点** 建立嵌入式Linux系统...

    Python教程

    Python的源代码可以从多种其他语言中找到影响,例如ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell以及其他脚本语言。Python2.x和Python3.x是两个主要版本,本教程主要针对2.x版本,对于3.x版本的学习者...

    advertools-0.14.1-py2.py3-none-any.whl.zip

    在 Python 的生态系统中,使用 pip 工具安装时,如果可用,通常会优先选择 Wheel 包,因为它们比源代码包更快捷地安装。 压缩包子文件的文件名称列表包括: 1. 使用说明.txt:这可能是一个包含 advertools 库使用...

    uboot启动分析及移植

    U-Boot是一款开源的Bootloader软件,可以在SourceForge网站上找到其源代码。它支持多种处理器架构,包括PowerPC(MPC5xx、MPC8xx、MPC82xx、MPC7xx、MPC74xx)、ARM(ARM7、ARM9、StrongARM、Xscale)、MIPS(4kC、5kC)、...

    用JLINK的SW接口

    官方文档中通常包含了详细的移植指南和示例代码,这样可以减少移植过程中的错误,并提高系统的稳定性。需要注意的是,根据项目需求裁剪不必要的功能模块,避免占用过多的内存资源。 ### 结语 通过本文的介绍,我们...

    移植u-boot-2009.03到友善之臂mini2440开发板

    不仅涵盖了开发环境的配置、源代码的修改等技术细节,还强调了理解每一个操作背后逻辑的重要性。通过遵循本文提供的步骤,读者不仅可以完成u-boot的移植工作,还能深入了解嵌入式系统开发的基本原理和技术要点。

    ppcscraper

    1. **源代码**(Source Code):包含ppcscraper的主要Python脚本,可能有负责网络请求、解析HTML、数据存储等不同功能的模块。 2. **配置文件**(Configuration Files):用于设置抓取规则、目标URL、输出格式等,...

    基于Linux的嵌入式系统构建.pdf

    取出源代码之后,移到bootldr目录(假设U-Boot的版本为0.2.0): $ cd ${PRJ ROOT}/bootldr/u-boot-0.2.0 建立U-Boot之前,需要针对目标板来设定U-Boot的配置。U-Boot的Makefile会对每个受到支持的目标板提供响应的...

    uboott移植实验手册及技术文档

    在文件中找到 195-201 代码,并在 201行后面添加如下代码: 195 copy_loop: 196 ldmia r0!, {r3-r10} /* copy from source address [r0] */ 197 stmiar1!, {r3-r10} /* copy to target address [r1] */ 198 cmp ...

Global site tag (gtag.js) - Google Analytics