Получение IPC-дескрипторов и идентификаторов служб для использования статически созданных IPC-каналов (sl-static.h)

12 января 2026

ID libkos_sl_api

API определен в заголовочном файле sysroot-*-kos/include/coresrv/sl/sl-static.h из состава KasperskyOS SDK.

API позволяет серверам получать слушающие дескрипторы, а клиентам получать клиентские IPC-дескрипторы и идентификаторы служб (RIIDs) для использования статически созданных IPC-каналов. (Об использовании клиентских и серверных IPC-дескрипторов, а также идентификаторов служб (RIIDs) см. "Инициализация IPC-транспорта для межпроцессного взаимодействия и управление обработкой IPC-запросов (transport-kos.h, transport-kos-dispatch.h)".)

Закрытие IPC-дескриптора, полученного с использованием API, приведет к недоступности IPC-канала. Если IPC-дескриптор был закрыт, то получить его повторно и восстановить доступ к IPC-каналу невозможно.

Сведения о функциях API приведены в таблицах ниже.

Использование API на стороне сервера

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

Чтобы получить имена и слушающие дескрипторы для всех статически созданных IPC-каналов, связанных с сервером, нужно вызвать функцию SLStaticGetServerChannels() или SLStaticAllocateAndGetServerChannels(). Вторая создает буфер для выходных данных. Чтобы удалить этот буфер, нужно вызвать функцию SLStaticFreeServerChannels().

Использование API на стороне клиента

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

Чтобы получить идентификатор службы (RIID) по квалифицированному имени службы, предоставляемой через связанный с клиентом статически созданный IPC-канал, нужно вызвать функцию SLStaticResolveRiid(). (О квалифицированном имени службы см. "Привязка методов моделей безопасности к событиям безопасности".)

Чтобы получить сведения о службах, предоставляемых серверами, соединенными статически созданными IPC-каналами с клиентом, нужно вызвать функцию SLStaticGetEndpoints() или SLStaticAllocateAndGetEndpoints(). Эти сведения включают имена серверов, имена служб (из EDL-описаний, CDL-описаний и квалифицированные) и идентификаторы служб (RIIDs). Можно задать следующие критерии фильтрации служб:

  • Имя сервера.
  • Квалифицированное имя экземпляра компонента.

    О квалифицированном имени экземпляра компонента см. "Привязка методов моделей безопасности к событиям безопасности".

    Квалифицированное имя экземпляра компонента позволяет однозначно идентифицировать экземпляр компонента, реализованный в сервере. Чтобы получить сведения об экземплярах компонента, которые реализованы в серверах, соединенных статически созданными IPC-каналами с клиентом, нужно вызвать функцию SLStaticGetComponents(). Эти сведения включают имена серверов и имена экземпляров компонента (из EDL-описаний, CDL-описаний и квалифицированные).

  • Имя интерфейса служб в соответствии с IDL-описанием.
  • Булевое значение, которое задает, нужно ли получать сведения о службах, предоставляемых вложенными экземплярами компонентов.

Функция SLStaticAllocateAndGetEndpoints() создает буфер для выходных данных. Чтобы удалить этот буфер, нужно вызвать функцию SLStaticFreeEndpoints().

Получение имени процесса

API дополнительно включает функцию SLStaticSelfUniqId(), которая позволяет получить имя вызывающего процесса. Эта функция предназначена для использования библиотекой libkos.

Сведения о функциях API

Функции sl-static.h

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