Межпроцессное взаимодействие с сервисом Win32
API-интерфейс ControlService позволяет отправлять управляющий код в службу Win32. Однако что, если мне нужно отправить (и получить) больше, чем контрольный код? Каков наилучший способ установить связь между Win32-приложением пользовательского режима и службой Win32 для обмена произвольными частями данных? (Предположим, я могу скомпилировать как службу, так и приложение). Этот метод должен работать с Windows 2000 до Windows 7, и он должен работать как для администраторов, так и для обычных пользователей. Спасибо!
2 ответа
Звучит так, как будто вы собираетесь, чтобы служба отвечала на удаленные запросы. Для этого вы можете использовать именованные каналы, как уже упоминалось. Именованные каналы, однако, немного сложнее, чем сокеты TCP.
Если вы беретесь за программирование TCP-сокетов (socket()
, bind()
, listen()
и т. д.), вы сможете перенести эти знания на другие платформы.
Вы можете использовать практически любой механизм IPC. Если ваш сервис и приложение основаны на.net, то наиболее распространенным решением является использование WCF. Для службы и приложения с собственным кодом очень распространенным решением является именованный канал. Но какой выбор лучше всего зависит от ваших конкретных потребностей использования.