GPRS底层API(转)
?
【API函數(shù)】:
a)ConnMgrApiReadyEvent()函數(shù)
函數(shù)原型:HANDLE WINAPI ConnMgrApiReadyEvent();
利用此函數(shù)來(lái)我們可以返回一個(gè)連接事件的句柄
,注意在的得到句柄后要記得及時(shí)釋放
b)ConnMgrConnectionStatus()函數(shù)
函數(shù)原型:
HRESULT WINAPI ConnMgrConnectionStatus(HANDLE hConnection,DWORD * pdwStatus );利用此函數(shù)的返回值pdwStatus,我們可以得到很多的關(guān)于連接的信息,例如如果我們連接成功將返回CONNMGR_STATUS_CONNECTED,斷開連接將返回CONNMGR_STATUS_DISCONNECTED,他的返回狀態(tài)信息非常豐富,有14中之多,完全可以滿足我們的應(yīng)用需要;
c)ConnMgrEnumDestinations()函數(shù)
函數(shù)原型:
HRESULT WINAPI ConnMgrEnumDestinations(int nIndex,CONNMGR_DESTINATION_INFO * pDestInfo );
一般我們的PDA在連接GPRS時(shí)都有好幾個(gè)連接,利用此函數(shù)我們可以枚舉出所有可用的連接,然后再對(duì)挑選的連接進(jìn)行篩選得到一個(gè)最佳連接
接下來(lái)講兩個(gè)很重要的函數(shù),我們將利用兩個(gè)函數(shù)中的一個(gè)來(lái)發(fā)起連接,他們是:
d)ConnMgrEstablishConnection()和ConnMgrEstablishConnectionSync()函數(shù),這兩個(gè)函數(shù)一個(gè)用于發(fā)起一個(gè)異步連接請(qǐng)求,一個(gè)用于同步請(qǐng)求,使用異步連接請(qǐng)求我們可以在發(fā)起連接后立即返回,而使用同步請(qǐng)求客戶端將一直被阻塞知道函數(shù)返回確認(rèn)連接,關(guān)于異步和同步我就不再敘述;
它們的原型依次為:
HRESULT WINAPI ConnMgrEstablishConnection( CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection );
HRESULT WINAPI ConnMgrEstablishConnectionSync(
CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection,
DWORD dwTimeout, DWORD * pdwStatus );
可以看到兩個(gè)函數(shù)的第一個(gè)參數(shù)都為一個(gè)CONNMGR_CONNECTIONINFO對(duì)象,此對(duì)象為一個(gè)結(jié)構(gòu)體,它保存了客戶端發(fā)起連接請(qǐng)求的一系列信息,因此,在我們調(diào)用此函數(shù)時(shí)必須構(gòu)造一個(gè)該對(duì)象,然后將其作為參數(shù)傳入連接函數(shù)中。這里很有必要講一下該結(jié)構(gòu)體,該結(jié)構(gòu)體的原型如下:
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;
其中參數(shù)dwFlags用于指定我們的接入點(diǎn),比如我們常說(shuō)的CMNER和CMWAP,而參數(shù)GUID則標(biāo)志了我們對(duì)應(yīng)于每個(gè)接入點(diǎn)的全球唯一標(biāo)志符,關(guān)于如何得到或者查看GUID,我們可以在“\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Include\Armv4”目錄下查看connmgr.h文件,里面包含了各個(gè)接入點(diǎn)的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
如果想更進(jìn)一步了解,我們還可以通過(guò)查看注冊(cè)表方式來(lái)查看PDA上連接管理器的相關(guān)連接信息,在PPC 2003中注冊(cè)表路徑為:
[HKEY_LOCAL_MACHINE\Comm\ConnMgr],如下圖所示:(圖顯示不出來(lái)。。。)
?
?
首先我們利用ConnMgrApiReadyEvent()函數(shù)來(lái)確認(rèn)是否有可用連接,如果有可用連接我們則利用ConnMgrEnumDestinatio ns()函數(shù)枚舉所有可用連接,然后遍歷所有連接調(diào)用我們的同步或異步連接方法ConnMgrEstablishConnectio nsync()與ConnMgrEstablishConnection()來(lái)發(fā)起連接,一旦連接成功后我們就可以進(jìn)行我們偉大的下一步了,就是和我們的服務(wù)器進(jìn)行通信。
?
轉(zhuǎn)載于:https://www.cnblogs.com/quietwalk/archive/2010/09/07/1820767.html
總結(jié)
以上是生活随笔為你收集整理的GPRS底层API(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RFID 基础技术
- 下一篇: 【Rxjs】 - 解析四种主题Subje