Windows mobile 连接管理

关于PDA建立远程连接并打开服务器程序的方法 winCE系统程序不太好开发,但可以将程序放置在服务器上,通过远程连接,在手持PDA上执行想要执行的程序。相对来说,程序开发更容易 立即下载

进行windows mobile网络应用开发,必须要了解如何建立gprs等网络连接。windows为我们提供了conn manager来完成这类功能。

首先:WM5 SDK中的示例cmhelper基本包含了conn mgr的用法。默认安装的示例代码的路径是:C:/Program Files/Windows CE Tools/wce500/Windows Mobile 5.0 Pocket PC SDK/Samples/CPP/Mfc/CMHELPER/cmhelper.sln

 

一般来说,我们要使用连接管理器的步骤如下:

1、ConnMgrApiReadyEvent

看看MSDN怎么说:This function provides a way for applications to check whether Connection Manager is ready. The calling application is responsible for calling the Windows CE CloseHandle function for the returned event.

也就是说,使用连接管理器这前,要通过这个API确认连接管理器的确可用。

调用代码片段如下:

    HANDLE hConnMgr = ConnMgrApiReadyEvent();
    BOOL bAvailbale = FALSE;
    DWORD dwResult = ::WaitForSingleObject( hConnMgr, 2000 );
    if ( dwResult == WAIT_OBJECT_0 )
    {
        bAvailbale = TRUE;
    }
    // 关闭
    if ( hConnMgr ) CloseHandle( hConnMgr );

 

2、ConnMgrMapURL

连接管理器通过这个API,帮你找出一个合适的连接点。

使用方法是,传入一下你准备要访问的URL,你将会得到一个可以访问到这个URL的连接点的GUID

代码片段如下:

    GUID connGuid;

    int nIndex = 0;
    HRESULT hResult = ConnMgrMapURL ( _T("http://www.g.cn"), &connGuid, (DWORD*)&nIndex );
    if (FAILED(hResult) )
    {
        nIndex = -1;
        memset ( &connGuid, 0, sizeof(GUID) );
        DWORD dwLastError = GetLastError ();
    }

得到连接点的GUID后,就可以请求连接管理器建立连接了。

连接管理器建立连接有同步和异步两种方式。异步方式的使用参见cmhelper示例

下面介绍同步的使用方法。

 

3、ConnMgrEstablishConnectionSync

代码片断如下:

    // 初始化连接结构
    CONNMGR_CONNECTIONINFO ConnInfo;

    ZeroMemory(&ConnInfo, sizeof(ConnInfo));
    ConnInfo.cbSize = sizeof(ConnInfo);
    ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
    if (1 == useProxy)
    {// 代理
        ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
    }
    else
    {
        ConnInfo.dwFlags = 0;
    }
    ConnInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
    ConnInfo.guidDestNet = apGuid;
    ConnInfo.bExclusive    = FALSE;
    ConnInfo.bDisabled = FALSE;

    DWORD dwStatus = 0;
    HRESULT hResult = ConnMgrEstablishConnectionSync(&ConnInfo, &m_hConn, 100*1000, &dwStatus );
    if(FAILED(hResult))
    {
        m_hConn = NULL;
        logerror(("CenoConnMgr::conn 拨号失败 connstate is:%d", dwStatus));
        return -1;//失败
    }
    else
    {
        logdebug(("CenoConnMgr::conn 拨号成功。"));
        return 0;//成功
    }

 

到这里已经完成了连接GPRS连接的操作,接下来就可以使用socket或者winInet来进行数据的收发了。

但是在使用wap连接时,要涉及wap连接代理设置的问题。这时可以使用ConnMgrProviderMessage API来取得当前连接点的代理设置。这个就可以通过代理顺利地访问网络了。

 

4、ConnMgrProviderMessage

代码片段如下:

    DWORD dwIndex = 0;
    PROXY_CONFIG m_proxy = { 0};
    HRESULT hr = ConnMgrProviderMessage(m_hConn,
                                       &IID_ConnPrv_IProxyExtension,
                                       &dwIndex, 0, 0, (PBYTE)&m_proxy, sizeof(m_proxy));
    if (hr == S_OK)
    {
        logdebug(("CenoConnMgr::GetProxyServer dwIndex: %d", dwIndex));
        logdebug(("CenoConnMgr::GetProxyServer 代理服务器为: %s", U2A(m_proxy.szProxyServer).ToChar()));
    }
    else
    {
        return NULL;
    }
这里的m_hConn就是刚才建立连接后得到了连接handle。

代理设置应用在InternetOpen API中。如下:

                     InternetOpen(_T("XXXXXXXXXX"),
                                            INTERNET_OPEN_TYPE_PROXY,
                                            m_proxy->szProxyServer,
                                            NULL,
                                            INTERNET_FLAG_ASYNC); // ASYNC Flag

 

到这里,连接管理器的使用介绍完毕。

================================================

不过要用好连接管理器,还有很多事情要做的。一个完善的网络应用程序,不仅要考虑建立连接,还要考虑释放连接。甚至在系统中没有可用的连接点设置时,要新建一个连接点。

下面我们接着介绍。

 

释放连接

可以使用ConnMgrReleaseConnection,但是这个API并不会立即生效。它只是向连接管理器的调试器请求断开连接,如果系统中有其他的程序也在使用这个连接点访问网络,那么它会等到所有使用它的进程使用完毕并且还要再等一段时间(cache time)才真正断开连接。

所以如果要马上断开连接,还要找其他的办法。

这里有一个做法,它能够生效,但是却有可能会产生负作用。当然我现在还没有见识到。

    int index; // An integer index
    DWORD dwError, dwRasConnSize, dwNumConnections; // Number of connections found
    RASCONN RasConn[20]; // Buffer for connection state data,Assume the maximum number of entries is 20.

    // Assume no more than 20 connections.
    RasConn[0].dwSize = sizeof(RASCONN);
    dwRasConnSize = 20 * sizeof (RASCONN);

    // Find all connections.
    if (dwError = RasEnumConnections (RasConn, &dwRasConnSize,&dwNumConnections))
    {
        return;
    }

    for   (int i   =   0;   i   <   dwRasConnSize;   i++)  
    {  
        RasHangUp(RasConn[i].hrasconn);
    }

 

建立连接点

使用DMProcessConfigXML

 

const wchar_t guid_of_new_cm_ap[] = L"{84C79B75-DB1C-9C47-5220-0F665CBC08C6}";
const wchar_t NEW_AP_OF_CHINA_MOBILE[] =
L"<wap-provisioningdoc>"
L"<characteristic type=/"CM_Networks/">"
L"<characteristic type=/"中国移动GPRS设置/">"
L"<parm name=/"DestId/" value=/"{84C79B75-DB1C-9C47-5220-0F665CBC08C6}/" />"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type=/"CM_GPRSEntries/">"
L"<nocharacteristic type=/"中国移动GPRS设置/" />"
L"<characteristic type=/"中国移动GPRS设置/">"
L"<parm name=/"DestId/" value=/"{84C79B75-DB1C-9C47-5220-0F665CBC08C6}/" />"
L"<parm name=/"UserName/" value=/"/" />"
L"<parm name=/"Password/" value=/"/" />"
L"<parm name=/"Phone/" value=/"~GPRS!cmnet/" />"
L"<parm name=/"SwCompression/" value=/"0/" />"
L"<parm name=/"IpHeaderCompression/" value=/"0/" />"
L"<parm name=/"Enabled/" value=/"1/" />"
L"<characteristic type=/"DevSpecificCellular/">"
L"<parm name=/"BearerInfoValid/" value=/"1/" />"
L"<parm name=/"GPRSInfoValid/" value=/"1/" />"
L"<parm name=/"GPRSInfoProtocolType/" value=/"2/" />"
L"<parm name=/"GPRSInfoL2ProtocolType/" value=/"PPP/" />"
L"<parm name=/"GPRSInfoAccessPointName/" value=/"cmnet/" />"
L"<parm name=/"GPRSInfoAddress/" value=/"/" />"
L"<parm name=/"GPRSInfoDataCompression/" value=/"1/" />"
L"<parm name=/"GPRSInfoHeaderCompression/" value=/"1/" />"
L"<parm name=/"GPRSInfoParameters/" value=/"/" />"
L"</characteristic>"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type=/"Registry/">"
L"<nocharacteristic type=/"HKLM//Comm//ConnMgr//Providers//{EF097F4C-DC4B-4c98-8FF6-AEF805DC0E8E}//HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}/"/>"
L"<nocharacteristic type=/"HKLM//Comm//ConnMgr//Providers//{EF097F4C-DC4B-4c98-8FF6-AEF805DC0E8E}//HTTP-{84C79B75-DB1C-9C47-5220-0F665CBC08C6}/"/>"
L"<nocharacteristic type=/"HKLM//Comm//ConnMgr//Providers//{EF097F4C-DC4B-4c98-8FF6-AEF805DC0E8E}//WAP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}/"/>"
L"<nocharacteristic type=/"HKLM//Comm//ConnMgr//Providers//{EF097F4C-DC4B-4c98-8FF6-AEF805DC0E8E}//WAP-{84C79B75-DB1C-9C47-5220-0F665CBC08C6}/"/>"
L"</characteristic>"
L"</wap-provisioningdoc>";

 

DMProcessConfigXML(NEW_AP_OF_CHINA_MOBILE, CFGFLAG_PROCESS, &pszwXMLout);

以上代码,建立一个中国移动的cmnet连接点。关于DMProcessConfigXML我知道得也就是这么多。更多的内容大家只好google了。

 

基于win10开发wince的同步工具驱动,安装后通过USB连接wince会弹出window mobile设备中心 立即下载

相关推荐

PDA连接电脑环境

PDA连接电脑环境PDA连接电脑环境PDA连接电脑环境PDA连接电脑环境

Windows 移动设备管理

Windows 设备管理是指一组流程和工具,可帮助 IT 管理员简化企业中使用的Windows 设备的管理。管理企业中使用的 Windows 设备最好通过实施Windows MDM 解决方案来完成,以从单个控制台保护、管理和监视这些设备。Windows移动设备管理 (MDM)可帮助 IT 管理员注册 Windows 笔记本电脑、台式机和手机,将这些设备分配给用户,向其分发应用和内容,并对其强制实施安全策略以防止数据泄露。

ITmoster的博客 695

win10系统 window mobile 无法连接PDA设备

win10系统,装了 Windows mobile 连接软件后,不可连接PDA,应该属于相应的服务未进行设置,重新设置服务配置,可进行连接,如有问题,可进行沟通;工作中遇到的问题;希望对你有帮助!!

【免费下载】 Windows Mobile设备中心(64位):高效管理你的移动设备

Windows Mobile设备中心(64位):高效管理你的移动设备 【下载地址】WindowsMobile设备中心64位下载 本仓库提供Windows Mobile设备中心(64位)的资源文件下载。该程序专为Windows 7 64位系统设计,用于管理通过USB数据线连接的Windows Mobile手机。通过该程序,...

gitblog_09769的博客 986

RTKLIB中RTK定位原理(一)

1 模型 1.1 非差观测值 非差观测值与RTKLIB中PPP定位原理——观测模型部分中一致。 1.2 单间单差观测值 若两个接收机距离较近,经过站间单差,电离层对流层延迟可消除,卫星s的钟差以及初始相位被消除,中依然包含接收机初始相位。 1.3 站间星间双差观测值 经过站间星间双差,接收机钟差及初始相位被消除。 2 EKF参数估计 2.1 EKF法则 EKF法则与RTKLIB中PPP定位原理——观测模型部分中一致。 2.2 状态变量与时间更新 (1)状态变量 在RTK...

papunzal的博客 3811

数据分析(二):学生成绩预测分析报告

表1 特征变量描述变量描述school学生的学校sex学生的性别age学生的年龄address学生的家庭住址类型famsize家庭规模Pstatus父母同居状况Medu母亲的教育Fedu父亲的教育Mjob母亲的工作Fjob父亲的工作reason选择学校的理由guardian学生监护人traveltime从家到学校的时间studytime每周学习时间failures过去的类失败次数schoolsup额外的教育支持famsup家庭教育支持。

m0_73963149的博客 4414

Win10下windows mobile设备中心连接不上的方法无法启动

TMD 微软Win10自动更细补丁后windows mobile设备中心就无法启动了 需要重新启动相关的服务并授予 本机登录用户 权限 1.点击屏幕左下角“开始”图标,点击“运行”,在弹出的输入框中输入“services.msc”按下回车键。 2。在弹出的界面中,找到“基于Windows Mobile 2003的连接设备”。

newnazi的专栏 3万+

软件项目质量管理

识别项目中涉及质量管理的不同角色,如项目经理、质量经理、测试人员等,明确每个角色的职责和任务,包括负责哪些质量管理活动和决策。1、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。2、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。测试用例表是质量控制过程中的关键工具,确保所有功能和场景都被验证,减少项目中的缺陷。1、理解项目质量管理的基本过程,包括质量计划、质量保证、质量控制和质量改进;明确质量管理活动中的角色和职责。

weixin_51996255的博客 1258

关于Windows Mobile连接不上电脑的问题的解决方法

对于移动便携设备来说,Windows Mobile(以下简称wm)是在开发中同步电脑的有效工具。涉及到嵌入式的开发,一般都会考虑到使用该同步方式。 首先同步pc硬件上要准备的有开发板,usb连接线,电源适配器。软件上要准备ActiveSync,(有32位和64位,请根据自己电脑进行选择安装),CERHOST。 ActiveSync安装很简单,只需要使用usb连接线将板子和pc连接起来即可,一般

Do best for you 1万+

安卓风控对抗实战:如何用AOSP定制ROM绕过Momo、AIDA64等检测(从环境搭建到设备画像)

本文详细解析了如何通过定制AOSP ROM绕过Momo、AIDA64等安卓风控检测工具的设备指纹识别。从环境搭建到硬件参数修改,再到内核级特征混淆,提供了一套完整的底层对抗方案,显著提升设备伪装通过率。

weixin_30687051的博客 489

问题解决:打开VMware创建的虚拟机,电脑立刻蓝屏并重启

VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti

weixin_55118477的博客 3万+

通过Windows Mobile连接管理器建立网络连接

概要 Summary     本文主要讲述在托管程序中怎样使用连接管理器建立和释放网络连接。本文的重点是关于使用连接管理器建立和断开连接的概念,而不是如何封装连接管理器API。文章的目的在于涵盖概念使能够适用于任何连接管理器托管API。     适用 Applies to Windows Mobile 6 Professional Windows Mobile 6 Standar

快乐人生 990

SPI协议详解(图文并茂+超详细)

先说串口 因为之前写过一篇UART,通用串行异步通讯协议,UART的相关资料 因为UART没有时钟信号,无法控制何时发送数据,也无法保证双发按照完全相同的速度接收数据。因此,双方以不同的速度进行数据接收和发送,就会出现问题。 如果要解决这个问题,UART为每个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步; 双方还必须事先就传输速度达成共识(设置相同的波特率,例如每秒9600位)。 传输速率如果有微小差异不是问题,因为接收器会在每个字节的开头重新同步。相应的协议如下图所示; 如果您注意到

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 33万+

(转贴)通过Windows Mobile连接管理器建立网络连接

(转贴)通过Windows Mobile连接管理器建立网络连接 原文地址:http://www.cnblogs.com/Lisen/archive/2009/12/23/1630585.htmlEstablishNetworkWithConnMgr.rar  原文为Jim Wilson 的 Establishing Network Connectivity with the Win

thestronger的专栏 1340

AutosarMCAL开发——基于EB MCU驱动

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 920

WblockCloneObjects克隆一个图纸内的实体包括块参照,同名块参照的处理

public static void HeBingTu2(double lieJu, List<string> filePaths) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (DocumentLock docLock = doc.Lock...

1108

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

我的实用设计模式之 关于Policy-based design在Windows Mobile网络连接管理的应用

试想一下应用程序应该不关心具体的网络连接,例如msn和QQ不管Windows的连接,这个链接可能是wifi,可能是有线网络,可能是拨号。为了解决这个问题,我们引进Strategy模式。Raw Data(原数据)使用不要的分析器(分析器使用不同的算法)分析出关心的Event(事件,对象,告警等等)。下面是用案例论述,有一个Windows Mobile的手机系统,需要定期往服务器提交数据,在数据传输时需要网络连接,由于这个手机支持3G和Wifi,因此,可以通过多种硬件连接进行数据提交。

tq6J5Yg14的博客 406

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Windows Mobile 网络连接管理

1. 增加新的网络连接配置    1.1 ——RasSetEntryProperties和RasSetEntryDialParams添加网络配置。但是此时还无法在连接管理器里面看到这个新加的配置。         注意:RasSetEntryProperties最后两个参数LPBYTE <a class="synParam" onclick="function onclick(){

netlcx的专栏 1279

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

确保Windows Mobile通过GPRS连接CMNET成功的办法(附源码)

【版   本】1.0.0【操作系统】Windows Mobile 6.1【作   者】谢红伟·chrys ·chrys@163.com ·http://callgle.xicp.net【开发日期】2010-04-02 1:24【文档日期】2010-04-02 3:53【说明】用连接管理器API可以对Windows Mobile的GPRS连接进行管理,由程

谢红伟的专栏 3065
下一篇: COM接口聚合实现解惑(C++虚表)
nobugtodebug
博客等级 码龄18年 11粉丝 15原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值