GPRS底层API(转)

 


API函数】:

a)ConnMgrApiReadyEvent()函数
函数原型:HANDLE WINAPI ConnMgrApiReadyEvent();
利用此函数来我们可以返回一个连接事件的句柄
,注意在的得到句柄后要记得及时释放

b)ConnMgrConnectionStatus()函数
函数原型:
HRESULT WINAPI ConnMgrConnectionStatus(HANDLE hConnection,DWORD * pdwStatus );
利用此函数的返回值pdwStatus,我们可以得到很多的关于连接的信息,例如如果我们连接成功将返回CONNMGR_STATUS_CONNECTED,断开连接将返回CONNMGR_STATUS_DISCONNECTED,他的返回状态信息非常丰富,有14中之多,完全可以满足我们的应用需要;

c)ConnMgrEnumDestinations()函数
函数原型:
HRESULT WINAPI ConnMgrEnumDestinations(int nIndex,CONNMGR_DESTINATION_INFO * pDestInfo )

一般我们的PDA在连接GPRS时都有好几个连接,利用此函数我们可以枚举出所有可用的连接,然后再对挑选的连接进行筛选得到一个最佳连接

接下来讲两个很重要的函数,我们将利用两个函数中的一个来发起连接,他们是:

d)ConnMgrEstablishConnection()ConnMgrEstablishConnectionSync()函数,这两个函数一个用于发起一个异步连接请求,一个用于同步请求,使用异步连接请求我们可以在发起连接后立即返回,而使用同步请求客户端将一直被阻塞知道函数返回确认连接,关于异步和同步我就不再叙述;
它们的原型依次为:
HRESULT WINAPI ConnMgrEstablishConnection( CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection );
HRESULT WINAPI ConnMgrEstablishConnectionSync(
CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection,
DWORD dwTimeout, DWORD * pdwStatus );

可以看到两个函数的第一个参数都为一个CONNMGR_CONNECTIONINFO对象,此对象为一个结构体,它保存了客户端发起连接请求的一系列信息,因此,在我们调用此函数时必须构造一个该对象,然后将其作为参数传入连接函数中。这里很有必要讲一下该结构体,该结构体的原型如下:
typedef struct _CONNMGR_CONNECTIONINFO
{

DWORD cbSize;
DWORD dwParams;DWORD dwFlags;


DWORD dwPriority;BOOL bExclusive;BOOL bDisabled;GUID guidDestNet;


HWND hWnd;
UINT uMsg;
LPARAM lParam;ULONG ulMaxCost;
ULONG ulMinRcvBw;


ULONG ulMaxConnLatency;



} CONNMGR_CONNECTIONINFO;
其中参数dwFlags用于指定我们的接入点,比如我们常说的CMNERCMWAP,而参数GUID则标志了我们对应于每个接入点的全球唯一标志符,关于如何得到或者查看GUID,我们可以在“\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Include\Armv4”目录下查看connmgr.h文件,里面包含了各个接入点的GUID,例如:

CMNET 为:(0x436ef144, 0xb4fb, 0x4863, 0xa0, 0x41, 0x8f, 0x90, 0x5a, 0x62, 0xc5, 0x72)


CMWAP
为:0x7022e968, 0x5a97, 0x4051, 0xbc, 0x1c, 0xc5, 0x78, 0xe2, 0xfb, 0xa5, 0xd9

如果想更进一步了解,我们还可以通过查看注册表方式来查看PDA上连接管理器的相关连接信息,在PPC 2003中注册表路径为:

[HKEY_LOCAL_MACHINE\Comm\ConnMgr],如下图所示:(图显示不出来。。。)

 

 

首先我们利用ConnMgrApiReadyEvent()函数来确认是否有可用连接,如果有可用连接我们则利用ConnMgrEnumDestinatio ns()函数枚举所有可用连接,然后遍历所有连接调用我们的同步或异步连接方法ConnMgrEstablishConnectio nsync()ConnMgrEstablishConnection()来发起连接,一旦连接成功后我们就可以进行我们伟大的下一步了,就是和我们的服务器进行通信。


 

转载于:https://www.cnblogs.com/quietwalk/archive/2010/09/07/1820767.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js和jquery书籍

开始学习js了,找了基本书,留着看。 http://www.cnblogs.com/xiao_luobo/archive/2010/12/03/1895270.html http://blog.csdn.net/rodjohnsondoctor/article/details/7610688 基础类《高效能人士的7个习惯》(推荐给所有刚刚进入职场的新人&…

面向对象与软件工程—团队作业1

一、队伍介绍 队伍名称:逍遥此身君子意 队伍编号:1523933 参赛区域:西北赛区 参赛类别:小程序 指导老师:崔亚超 二、队伍成员信息 姓名:凌龙(队长) 学号:1700802085 班级…

PostgreSQL的核心架构

PostgreSQL的核心架构 注意 本人的博客都迁移到本人自己搭建的博客地址,通过此处可查看。 应用程序的访问接口 1. 访问接口总体图 进程及内存结构 1. 进程和内存结构图 主进程:Postmaster进程 辅助进程:SysLogger(系统日志&a…

BUG: Setup Was Unable to Create a DCOM User Account Error Message in Visual Studio 6.0

今天在安装VS 6.0时&#xff0c;遇见这个问题&#xff1a;Setup was unable to create a DCOM user account in order to register <path>&#xff3c;valec.exe后来找到原来是VS的一个Bug。贴出微软的原文&#xff1a;BUG: "Setup Was Unable to Create a DCOM Use…

研究下

渗透测试: http://www.cnblogs.com/hyddd/archive/2009/03/22/1419104.html ldap: http://waringid.blog.51cto.com/65148/79648/

线程属性 pthread_attr_t

参考资料&#xff1a; https://blog.csdn.net/hudashi/article/details/7709413 Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中&#xff0c;把第二个参数设置为NULL的话&#xff0c;将采用默认的属性配置…

如何让new操作符只构造,不申请内存

问题 c中的new操作符 通常完成两个工作 分配内存及调用相应的构造函数。 请问&#xff1a; 如何让new操作符不分配内存&#xff0c;只调用构造函数&#xff1f; 这样的用法有什么用&#xff1f; placement new的含义 placement new可以实现不分配内存&#xff0c;只调用…

Linux 下的多线程下载工具

2019独角兽企业重金招聘Python工程师标准>>> 最先用的是 Axel&#xff08;http://axel.alioth.debian.org/&#xff09;&#xff0c;功能还可以&#xff0c;不过下载文件最多支持到 2GB&#xff0c;再大的文件就不能下载了&#xff0c;真变态&#xff01; aget&…

Launcher结构之home screen

今天刚刚知道如果你的Eclipse里面的工程指向服务器里面的源码记住千万不能在Eclipse里编译~~会在服务器上的源码里多处很多的中间件这样make不了只能清除那些中间件才能编译比较麻烦 Home screen可以说是一个手机的最重要应用&#xff0c;就像一个门户网站的首页&#xff0c;直…

Python_迭代器和生成器的复习_38

迭代器和生成器 迭代器&#xff1a; 双下方法&#xff1a;很少直接调用的方法&#xff0c;一般情况下&#xff0c;是通过其他方法触发的 可迭代的协议——可迭代协议 含有__iter__ 的方法 (__iter__ in dir(数据)) 可迭代的一定可以被for循环 迭代器协议&#xff1a;含有 __ite…

Elasticsearch是如何做到快速索引的

最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作&#xff0c;花了些时间学习Elasticsearch的基础理论知识&#xff0c;整理了一下&#xff0c;希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确…

第13届年度Webby奖采用Silverlight / 13th Annual Webby Awards powered by Silverlight

13th Annual Webby Awards powered by Silverlight 第13届年度Webby奖采用Silverlight 原文连接&#xff1a;http://team.silverlight.net/case-study/13th-annual-webby-awards-powered-by-silverlight/ 原文分类&#xff1a;Case Study&#xff08;案例学习&#xff09; 原文…

纯C日志函数库 zlog

zlog - 纯C日志函数库 - 开源中国纯C日志函数库 zlog分享到 新浪微博腾讯微博已用 10收藏92参加 OSC 应用开发大赛&#xff0c;拿 Nexus 4 手机 星星之火&#xff0c;可以燎原zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。事实上&#xff0c;在C的世界里面没…

[十二省联考2019]字符串问题 后缀自动机 + 拓扑排序 + 最长路 + 倍增

题目描述&#xff1a;给定一个长串 $S$&#xff0c;给定若干 $S$ 的子串 $a_{i}$, $b_{i}$&#xff0c;再给出一些 $a$ 串和 $b$ 串的支配关系. 构造一个长度最长的字符串&#xff0c;使得&#xff1a;字符串只由 $a_{i}$ 组成.当且仅当 $a_{i}$ 所支配的一个串 $b_{i}$ 为 $a_…

分布式事务2PC、3PC模型

工作中使用最多的是本地事务&#xff0c;但是在对单一项目拆分为 SOA、微服务之后&#xff0c;就会牵扯出分布式事务场景 文章以分布式事务为主线展开说明&#xff0c;并且针对 2PC、3PC 算法进行详细的讲解&#xff0c;最后通过一个 Demo 来更深入掌握分布式事务&#xff0c;…

c# datatable用法总结

在项目中经常用到DataTable,如果DataTable使用得当&#xff0c;不仅能使程序简洁实用&#xff0c;而且能够提高性能&#xff0c;达到事半功倍的效果&#xff0c;现对DataTable的使用技巧进行一下总结。 一、DataTable简介 (1)构造函数 DataTable() 不带参数初始化DataT…

Python学习之路——装饰器

开放封闭原则&#xff1a;不改变调用方式与源代码上增加功能 1.不能修改被装饰对象(函数)的源代码&#xff08;封闭&#xff09; 2.不能更改被修饰对象(函数)的调用方式&#xff0c;且能达到增加功能的效果&#xff08;开放&#xff09;View Code装饰器 # 把要被装饰的函数作为…

通断时间面积法

背景&#xff1a; 来 源&#xff1a; 通断时间面积法是入选《供热计量技术规程》JGJ173-2009的一种热量分摊计量方法实现分户计量的一种计量方法。由清华大学建筑节能研究中心江亿院士提出。 简 称 ( 俗称 )&#xff1a;&#xff08;1&#xff09;“时温法”&#xff08;2&a…

C++ std::move()和完美转发

std::move()、std::forward<T>、模板类型推断分析 引用折叠原则和完美转发是有联系的&#xff0c;可以说后者是基于前者的某些特性实现的&#xff0c;具体来看一下。 要理解完美转发&#xff0c;需要了解两个知识点&#xff1a; 引用折叠原则&#xff08;Reference colla…

线面要素类相互转换-原创

一、线转面的步骤 1、线几何属性转面几何属性ArcToolbox-Data Management Tools-Features-Feature To polygon&#xff0c;此过程只是将几何属性做了转换&#xff0c;得到的是属性信息丢失了的面t_L_HDBX_FeatureToPolygon1 2、 在ArcMap中将t_L_HDBX_FeatureToPolygon1全选&a…