火星科技网您的位置:首页 >资讯 >

pocketpc使用教程(pocketpc)

导读 大家好,精选小编来为大家解答以上问题pocketpc使用教程,pocketpc很多人还不知道,现在让我们一起来看看吧!1、先说CeRapiInit。它的定义

大家好,精选小编来为大家解答以上问题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秒。

本文到此结束,希望对大家有所帮助。

标签:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。