Обзор: создание IPC-каналов

02 августа 2023

ID ipc_channels_overview

Есть два способа создания IPC-каналов: статический и динамический.

Статическое создание IPC-каналов проще в реализации, поскольку для него можно использовать init-описание.

Динамическое создание IPC-каналов позволяет изменять топологию взаимодействия процессов "на лету". Это требуется, если неизвестно, какой именно сервер содержит службу, необходимую клиенту. Например, может быть неизвестно, на какой именно накопитель нужно будет записывать данные.

Статическое создание IPC-канала

Статический способ имеет следующие особенности:

  • клиент и сервер находятся в остановленном состоянии в момент создания IPC-канала;
  • создание инициируются родительским процессом, запускающим клиента и сервера (обычно это Einit);
  • созданный IPC-канал невозможно удалить;
  • чтобы получить IPC-дескриптор и идентификатор службы (riid) после создания IPC-канала, клиент и сервер должны использовать интерфейс локатора сервисов (coresrv/sl/sl_api.h).

Динамическое создание IPC-канала

Динамический способ имеет следующие особенности:

  • клиент и сервер уже запущены в момент создания IPC-канала;
  • создание инициируются совместно клиентом и сервером;
  • созданный IPC-канал может быть удален;
  • клиент и сервер получают IPC-дескриптор и идентификатор службы (riid) сразу после успешного создания IPC-канала.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!