首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows服务中使用RAPI

在Windows服务中使用RAPI
EN

Stack Overflow用户
提问于 2010-02-19 01:36:33
回答 1查看 536关注 0票数 1

为了从我的桌面应用程序访问Windows CE设备,我使用了自编写的DLL。该动态链接库使用RAPI在设备端调用必要的函数。多年来,一切都运行得很好。

但是现在我想在Windows服务中使用这个DLL。但它失败了。调试表明失败的是CeRapiInitEx()函数。在失败之前,它阻塞了大约5秒,尽管MSDN说它是一个异步的非阻塞函数。GetLastError()给我1444L“无效的线程标识符”。

互联网上有人提到,在ActiveSync 4中,RAPI不能从服务线程中工作,尽管这些信息很差,也很混乱。

有没有人有同样的问题或者只是想说点什么?无法从Windows服务访问RAPI,这是真的吗?如果是这样的话,有什么变通方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-19 23:36:28

此问题的可能解决方案:

  1. 将ActiveSync降级到版本3.8并给予该服务与桌面交互的许可(为此使用系统服务小应用程序)。
  2. 产生另一用户进程(CreateProcessAsUser)并将其用作服务和ActiveSync之间的中间层(即,使该RAPI中的所有调用成为另一用户(非服务)应用程序,并将其用作服务与之间的中间层(即,照常进行该RAPI服务代码中的所有CreateProcessAsUser调用(例如,控制台)从RAPI到另一个接口的application.
    1. Switch,以便与设备通信,例如TCP。

我个人选择了since,因为它最适合我的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2290774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档