• 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()来发起连接,一旦连接成功后我们就可以进行我们伟大的下一步了,就是和我们的服务器进行通信。


     

  • 相关阅读:
    2020-2021-01 20201230 《信息安全专业导论》第十一周学习总结
    2020-2021-01 20201230 《信息安全专业导论》第十周学习总结
    四则运算
    编程语言
    2020-2021-01 20201230 《信息安全专业导论》第九周学习总结
    2020-2021-01 20201230 《信息安全专业导论》第八周学习总结
    编程之路
    2020-2021-01 20201230 《信息安全专业导论》第七周学习总结
    进制转化
    密码算法及理论总结
  • 原文地址:https://www.cnblogs.com/quietwalk/p/1820767.html
Copyright © 2020-2023  润新知