【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用于指定我们的接入点,比如我们常说的CMNER和CMWAP,而参数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

GPRS底层API(转)相关推荐

  1. python调用系统api_Python调用系统底层API播放wav文件的方法

    本文实例讲述了Python调用系统底层API播放wav文件的方法.分享给大家供大家参考,具体如下: 这里未使用其他库,只是使用 pywin32 调用系统底层 API 播放 wav 文件. 具体代码如下 ...

  2. 联邦学习笔记(四):使用底层API设计联邦学习平均算法

    设计联邦学习平均算法 写在前面 联邦平均算法流程 数据处理 加载数据集 数据集预处理 获取处理后的数据集 前向运算和损失函数 获取代码输入类型 创建初始模型 联邦学习训练和梯度下降 单batch梯度下 ...

  3. linux printf 底层api,printf · Linux C API 参考手册 · 看云

    ## printf ## 格式化输出数据 ### 相关函数 ### scanf,snprintf ### 表头文件 ### ``` #include ``` ### 定义函数 ### ``` int ...

  4. IOS 多线程04-GCD详解 底层并发 API

    IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...

  5. Google宣布支持Vulkan作为Android的底层图形API

    很多人在刚听到底层图形API的时候似乎都不怎么激动,但是苹果已经在去年的iOS 8上推出了Metal,并计划于今秋将之推送至Mac OS X EI Capitan.此外,刚刚发布的Windows 10 ...

  6. 使用 MIDP 底层用户接口 API

    在J2ME中,Profiles是用于定义用户接口API的.MIDP定义了两种这类API,被称为高层API和底层API,高层API要求你使用面向事务的抽象来定义用户接口做什么.你并没有对屏幕上所画的东西 ...

  7. handler原子锁_OC的底层并发API

    这篇文章里,我们将会讨论一些iOS和OS X都可以使用的底层API.除了dispatch_once,我们一般不鼓励使用其中的任何一种技术. 但是我们想要揭示出表面之下深层次的一些可利用的方面.这些底层 ...

  8. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作

    目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...

  9. 【转】从底层了解ASP.Net体系结构

    前言 关于ASP.NET的底层的工作机制,最近园子里讨论的甚是火热.相信很多人都看过Rick Strahl先生的一篇经典之作:A low-level Look at the ASP.NET Archi ...

最新文章

  1. 得到相对Plugin的路径
  2. socket中select针对阻塞I/O复用注意的问题
  3. mysql数据库教程外联_MySQL--外联语句练习
  4. mobx使用数组提示越界_向Mobx可观察数组添加操作
  5. 转:Linux下高并发socket最大连接数所受的各种限制
  6. 蚂蚁金服上市诞生千个亿万富翁,财富自由,离你不远!
  7. 跟想这台计算机usb无法识别,无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别...
  8. 数据结构学习-Java实现复数类
  9. 清华大学计算机系研究生培养方案,清华大学计算机科学与技术系攻读硕士学位研究生培养方案...
  10. 二代U盾/迷你充电宝/护颈仪液晶段码屏驱动芯片:VK1088B QFN32 超小体积封装LCD驱动芯片
  11. CNN英文垃圾邮件分类(数据预处理)
  12. adsl modem的内置命令(viking)
  13. 2020西工大计算机考研经验贴
  14. javaee第二阶段总结
  15. Cloud Chou's Tech Blog编译相关
  16. JSON树转换成线性列表(python)
  17. 如何利用线性回归来建立收入预测模型?
  18. java数组初始化为 1_Java Class 1.1数组初始化
  19. 【C#】分享一个可携带附加消息的增强消息框MessageBoxEx
  20. Python - io 模块

热门文章

  1. mysql索引技术_MySQL索引类型
  2. mysql显示修改密码_MySQL修改密码
  3. c语言可以将负数强制转换成正数吗_C语言笔记(一、概述)
  4. 计算机导论结业报告大一,河北工业大学计算机导论结业论文.pdf
  5. java构建xml参数_Java中使用XML创建EMAIL模板
  6. jsp中生成的验证码和存在session里面的验证码不一致的处理
  7. jQuery实现两个列表框的值之间的互换:
  8. Linux GCC简明教程(编写c语言程序)
  9. (四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析
  10. Linux查看文件的首个字母 文件属性字段