#c #windows #winapi #rpc
#c #Windows #winapi #rpc
Вопрос:
Я разрабатываю службу, которая будет работать как система и будет обрабатывать длительные задачи в фоновом режиме. Теперь мне нужно отобразить некоторую обратную связь для пользователя в виде значка tasktray, и я также хотел бы иметь возможность приостанавливать / возобновлять задачи с помощью значка tasktray, поэтому мое требование — отправить сообщение в любом направлении и получить в ответ блок данных произвольной длины. Один запрос / ответ был бы хорош, но он должен работать в обоих направлениях.
Это использование C (не MFC) в Windows.
Я рассмотрел MIDL / RPC, поскольку использовал его в прошлом, но сначала мне нужно определить жесткую спецификацию интерфейса, и я не могу возвращать данные произвольной длины (насколько мне известно).
Есть ли какие-либо предложения по библиотеке, которую я мог бы использовать для этого?
Спасибо, J
Комментарии:
1. Обычно вы открываете канал и обмениваетесь данными через него.
Ответ №1:
COM — лучшее решение для RPC в Windows. Он очень мощный и простой в написании. Необработанный 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. */
Ответ №2:
Вы можете использовать любое из следующих:
- TCP/IP
- UDP
- Канал
- разделяемая память (т.е. файл с отображением в память)
РЕДАКТИРОВАТЬ — согласно комментарию:
Некоторые решения на основе общей памяти, включая исходный код:
Комментарии:
1. Спасибо за ответ, но я в идеале ищу библиотеку, которая может справиться со сложностями, а не создавать свои собственные.