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

02 августа 2023

ID ipc_channel_create_dynamic

При динамическом создании IPC-канала используются функции:

Динамическое создание IPC-канала осуществляется по следующему сценарию:

  1. Запускаются процессы: клиент, сервер и сервер имен.
  2. Сервер подключается к серверу имен с помощью вызова NsCreate() и публикует имя сервера, имя интерфейса и имя службы с помощью вызова NsPublishService().
  3. Клиент подключается к серверу имен с помощью вызова NsCreate() и выполняет поиск имени сервера и имени службы по имени интерфейса с помощью вызова NsEnumServices().
  4. Клиент запрашивает доступ к службе с помощью вызова KnCmConnect(), передавая в качестве аргументов найденные имя сервера и имя службы.
  5. Сервер вызывает функцию KnCmListen() для проверки наличия запросов на доступ к службе.
  6. Сервер принимает запрос клиента на доступ к службе с помощью вызова KnCmAccept(), передавая в качестве аргументов имя клиента и имя службы, которые получены при вызове KnCmListen().

Пункты 2 и 3 могут быть опущены, если клиент заранее знает имя сервера и имя службы.

Сервер может снимать с публикации на сервере имен ранее опубликованные службы с помощью вызова NsUnPublishService().

Сервер может отклонять запросы доступа к службам с помощью вызова KnCmDrop().

Для использования сервера имен политика безопасности решения должна разрешать взаимодействие процесса класса kl.core.NameServer и процессами, между которыми необходимо динамически создавать IPC-каналы.

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