Windows Mobile GPRS底层API

来源:互联网 发布:linux sed 修改文件 编辑:程序博客网 时间:2024/05/18 13:11

【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 FilesWindows CE Toolswce420POCKET PC 2003IncludeArmv4”目录下查看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_MACHINECommConnMgr],如下图所示:(图显示不出来。。。)

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


http://dev.10086.cn/cmdn/wiki/index.php?doc-view-4561.html

原创粉丝点击