pocketpc使用教程(pocketpc)
大家好,精选小编来为大家解答以上问题pocketpc使用教程,pocketpc很多人还不知道,现在让我们一起来看看吧!
1、 先说CeRapiInit。它的定义是:
2、 HRESULT cerapinit(void);
3、 这个函数调用起来比较简单,只需要检查它的返回值就可以了。但是当PPC没有连接到PC时,这个函数会一直等待,不返回,也就是说当前线程死锁了。等到PPC成功连接到PC,将返回一个S_OK值。
4、 假设当已知PPC成功连接到PC时,程序必须执行一些操作。如果已经连接了,那就好办了,CeRapiInit返回S _ OK如果没有连接,那么CeRapiInit会一直等待,用户会认为程序死了。
5、 幸运的是,我们还有另一个函数CeRapiInitEx,它的原型是:
6、 HRESULT cerapinitex(rapi init * pRapiInit);
7、 这个函数相当于CeRapiInit,只不过它会立即返回,但返回值并不代表PPC和PC之间的连接。我们还需要编写额外的代码来检查连接是否成功。请注意,该函数需要有一个参数RAPIINIT *pRapiInit,其中Rapiiinit定义如下:
8、 typedef struct _RAPIINIT {
9、 DWORD cbSizerapiinit结构的大小
10、 处理heRapiInit//事件的句柄
11、 HRESULT hrRapiInit//返回连接是否成功建立。
12、 } RAPIINIT
13、 MSDN的官方做法是使用MsgWaitForMultipleObjects函数来监视该结构中的heRapiInit变量。实验表明,这个操作也可以用WaitForSingleObject来完成,调用WaitForSingleObject更方便:)
14、 示例代码如下:
15、 //定义RAPIINIT结构变量
16、 RAPIINIT ri
17、 //将此变量的大小赋给cbSize参数,这是Windows SDK编程中的常见操作。
18、 //如果不知道,请参考相关资料。
19、 ri . CB size=sizeof(rapi init);
20、 //调用CeRapiInitEx函数,该函数立即返回
21、 //注意它的返回值不代表PPC和PC的连接状态。
22、 HRESULT hInitResult=cerapinitex(ri);
23、 //在这里,WaitForSingleObject用于跟踪heRapiInit事件。
24、 DWORD dwWaitResult=WaitForSingleObject(ri . theralinit,2000);
25、 //检查连接是否成功。
26、 if(hInitResult==S _ OK ri . hrrapinit==S _ OK dwWaitResult!=等待超时)
27、 {
28、 //连接成功
29、 .
30、 }
31、 其他
32、 {
33、 //连接不成功。
34、 .
35、 }
36、 好了,代码已经写到这里了。请注意:
37、 这个检测过程不规范,但是不会有太大问题。关键在于如何设置WaitForSingleObject最后一个参数的值,也就是说这是一个经验值。根据我的经验,如果PPC和PC连接,检测过程不到1秒就能完成;如果没有连接,最长等待时间不会超过2秒。
本文到此结束,希望对大家有所帮助。
标签: pocketpc