Параметры для связи службы Windows - PullRequest
2 голосов
/ 10 октября 2011

Я разрабатываю сервис, который будет работать как System и обрабатывать долгосрочные задачи в фоновом режиме.Теперь мне нужно отобразить некоторую обратную связь для пользователя в виде значка на панели задач, и я также хотел бы иметь возможность приостанавливать / возобновлять задачи с помощью значка на панели задач, поэтому мое требование - отправлять сообщения в любом направлении и получать произвольныедлина блока данных обратно в ответ.Один запрос / ответ был бы хорош, но он должен работать в обоих направлениях.

Это использует C ++ (не-MFC) в Windows.

Я смотрел на MIDL / RPC какЯ использовал его в прошлом, но сначала мне нужно определить спецификацию жесткого интерфейса, и я не могу возвращать данные произвольной длины (насколько мне известно).

Есть ли какие-либо предложения для библиотеки, которую я мог бы использовать дляэто?

Спасибо, J

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

COM - лучшее решение для RPC в Windows. Это очень мощный и простой в написании. Сырой MS-RPC тоже хорош. С обоими вы можете вернуть данные произвольной длины, см. Атрибут MIDL size_is:

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. */
1 голос
/ 10 октября 2011

Вы можете использовать любое из следующего:

  • TCP / IP
  • UDP
  • Канал
  • разделяемая память (т. Е. Отображенная в памятьфайл)

РЕДАКТИРОВАТЬ - согласно комментарию:

Некоторые решения на основе общей памяти, включая исходный код:

...