《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;
分享到:
相关推荐
在提供的压缩包文件“PPC2003GPrs向服务器发送数据”中,可能包含了实现以上功能的相关源代码、配置文件、示例数据等。通过分析这些文件,开发者可以学习如何在PPC2003平台上实现GPRS连接以及调用WebService的完整...
安装Zabbix 3.0.19时,你需要编译源代码、配置数据库连接、设置权限,并根据你的网络环境调整配置文件。然后,你可以启动Zabbix服务并使用Web界面进行监控。在实际应用中,Zabbix能够监控硬件状态、网络性能、操作...
在这个项目中,"book3s_hv_cma.c"和"book3s_hv_cma.h"可能是实现ppc KVM中CMA内存分配器的源代码文件。它们可能包含了对内存区域的管理,如分配、释放、查找连续内存块等功能的实现。"shsha.txt"可能是一个文档或者...
在Linux服务器中,可以找到待开发的Linux内核、文件系统和PPCBOOT源代码,作为整个编译环境。开发者需要在服务器上配置tftp和nfs服务,确保PPCBOOT能正确引导内核和文件系统。 **技术关键点** 建立嵌入式Linux系统...
Python的源代码可以从多种其他语言中找到影响,例如ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell以及其他脚本语言。Python2.x和Python3.x是两个主要版本,本教程主要针对2.x版本,对于3.x版本的学习者...
在 Python 的生态系统中,使用 pip 工具安装时,如果可用,通常会优先选择 Wheel 包,因为它们比源代码包更快捷地安装。 压缩包子文件的文件名称列表包括: 1. 使用说明.txt:这可能是一个包含 advertools 库使用...
U-Boot是一款开源的Bootloader软件,可以在SourceForge网站上找到其源代码。它支持多种处理器架构,包括PowerPC(MPC5xx、MPC8xx、MPC82xx、MPC7xx、MPC74xx)、ARM(ARM7、ARM9、StrongARM、Xscale)、MIPS(4kC、5kC)、...
官方文档中通常包含了详细的移植指南和示例代码,这样可以减少移植过程中的错误,并提高系统的稳定性。需要注意的是,根据项目需求裁剪不必要的功能模块,避免占用过多的内存资源。 ### 结语 通过本文的介绍,我们...
不仅涵盖了开发环境的配置、源代码的修改等技术细节,还强调了理解每一个操作背后逻辑的重要性。通过遵循本文提供的步骤,读者不仅可以完成u-boot的移植工作,还能深入了解嵌入式系统开发的基本原理和技术要点。
1. **源代码**(Source Code):包含ppcscraper的主要Python脚本,可能有负责网络请求、解析HTML、数据存储等不同功能的模块。 2. **配置文件**(Configuration Files):用于设置抓取规则、目标URL、输出格式等,...
取出源代码之后,移到bootldr目录(假设U-Boot的版本为0.2.0): $ cd ${PRJ ROOT}/bootldr/u-boot-0.2.0 建立U-Boot之前,需要针对目标板来设定U-Boot的配置。U-Boot的Makefile会对每个受到支持的目标板提供响应的...
在文件中找到 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 ...