Windows services 在Windows服务中使用RAPI

Windows services 在Windows服务中使用RAPI,windows-services,rapi,Windows Services,Rapi,为了从桌面应用程序访问Windows CE设备,我使用了自编DLL。 这个DLL使用RAPI在设备端调用必要的函数。多年来,一切都运转良好 但是现在我想在Windows服务中使用这个DLL。结果失败了。调试表明是CeRapiInitEx()函数失败。在失败之前,它会阻塞大约5秒钟,尽管MSDN说它是一个异步非阻塞函数。GetLastError()为我提供1444L“无效线程标识符” 互联网上有人提到,在ActiveSync 4中,RAPI不能通过服务线程工作。尽管信息贫乏且零碎 有没有人有同样的

为了从桌面应用程序访问Windows CE设备,我使用了自编DLL。 这个DLL使用RAPI在设备端调用必要的函数。多年来,一切都运转良好

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

互联网上有人提到,在ActiveSync 4中,RAPI不能通过服务线程工作。尽管信息贫乏且零碎


有没有人有同样的问题,或者只是想说点什么?是否确实无法从Windows服务访问RAPI?如果是,是否有解决办法?

此问题的可能解决方案:

  • 将ActiveSync降级为3.8版,并授予服务与桌面交互的权限(为此使用系统服务小程序)
  • 生成另一个用户进程()并将其用作服务和RAPI之间的中间层(即,在此进程中进行所有RAPI调用)
  • 创建另一个用户(非服务)应用程序,并将其用作服务和RAPI之间的中间层(即,在此应用程序中进行所有RAPI调用)
  • 像往常一样运行服务代码(例如控制台)应用程序
  • 从RAPI切换到另一个接口以与设备通信,例如TCP

  • 我个人选择了第一,因为它最适合我的情况

    此问题的可能解决方案:

  • 将ActiveSync降级为3.8版,并授予服务与桌面交互的权限(为此使用系统服务小程序)
  • 生成另一个用户进程()并将其用作服务和RAPI之间的中间层(即,在此进程中进行所有RAPI调用)
  • 创建另一个用户(非服务)应用程序,并将其用作服务和RAPI之间的中间层(即,在此应用程序中进行所有RAPI调用)
  • 像往常一样运行服务代码(例如控制台)应用程序
  • 从RAPI切换到另一个接口以与设备通信,例如TCP
  • 我个人选择了第一,因为它最适合我的情况