C++ Windows服务通信选项

C++ Windows服务通信选项,c++,windows,winapi,rpc,C++,Windows,Winapi,Rpc,我正在开发一个服务,它将作为系统运行,并将在后台处理长期运行的任务。我现在需要以tasktray图标的形式向用户显示一些反馈,我还希望能够暂停/恢复tasktray图标中的任务,因此我的要求是向任意方向发送消息,并接收任意长度的数据块作为响应。一个请求/响应就可以了,但它需要双向工作 这是在Windows中使用C++(非MFC)。 我在过去使用过MIDL/RPC,但我需要先定义一个刚性接口规范,并且不能返回任意长度的数据(据我所知) 有什么建议我可以用图书馆来做这件事吗 谢谢, J您可以使用以下

我正在开发一个服务,它将作为系统运行,并将在后台处理长期运行的任务。我现在需要以tasktray图标的形式向用户显示一些反馈,我还希望能够暂停/恢复tasktray图标中的任务,因此我的要求是向任意方向发送消息,并接收任意长度的数据块作为响应。一个请求/响应就可以了,但它需要双向工作

这是在Windows中使用C++(非MFC)。 我在过去使用过MIDL/RPC,但我需要先定义一个刚性接口规范,并且不能返回任意长度的数据(据我所知)

有什么建议我可以用图书馆来做这件事吗

谢谢,
J

您可以使用以下任一选项:

  • TCP/IP
  • UDP
  • 烟斗
  • 共享内存(即内存映射文件)
编辑-根据评论:

一些基于共享内存的解决方案,包括源代码:


COM是windows中RPC的最佳解决方案。它功能强大,易于编写。原始MS-RPC也很好。使用这两种方法,您可以返回任意长度的数据,请参见size_is MIDL属性:

HRESULT Proc7(
     [out] long  * pSize,
     [out, size_is( , *pSize)] my_type ** ppMyType); /* Specifies a pointer 
                                              to a sized pointer, 
                                              which points to a block 
                                              of my_types, whose size is
                                              unknown when the stub 
                                              calls the server. */

通常,你会打开一个管道并通过它进行交流。谢谢你的回答,但我正在寻找一个理想的图书馆,它可以处理复杂的问题,而不是滚动我自己的。