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-описаний и квалифицированные).
Функция SLStaticAllocateAndGetEndpoints() создает буфер для выходных данных. Чтобы удалить этот буфер, нужно вызвать функцию SLStaticFreeEndpoints().
Получение имени процесса
API дополнительно включает функцию SLStaticSelfUniqId(), которая позволяет получить имя вызывающего процесса. Эта функция предназначена для использования библиотекой libkos.
Сведения о функциях API
Функции sl-static.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Позволяет получить IPC-дескриптор по имени статически созданного IPC-канала, связанного с вызывающим клиентом или сервером. Параметры
Возвращаемые значения В случае успеха возвращает IPC-дескриптор, иначе возвращает |
|
Назначение Позволяет получить идентификатор службы (RIID) по квалифицированному имени службы, предоставляемой через статически созданный IPC-канал, связанный с вызывающим клиентом. Параметры
Возвращаемые значения В случае успеха возвращает идентификатор службы (RIID), иначе возвращает |
|
Назначение Позволяет получить имя вызывающего процесса. Параметры Нет. Возвращаемые значения В случае успеха возвращает указатель на имя вызывающего процесса, иначе возвращает |
|
Назначение Позволяет получить имена и слушающие дескрипторы для всех статически созданных IPC-каналов, связанных с вызывающим сервером. Параметры
Возвращаемые значения В случае успеха возвращает Если значение, полученное через параметр |
|
Назначение Создает массив и сохраняет в этом массиве имена и слушающие дескрипторы для всех статически созданных IPC-каналов, связанных с вызывающим сервером. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Удаляет массив, созданный вызовом функции Параметры
Возвращаемые значения Нет. |
|
Назначение Позволяет получить сведения об экземплярах компонента, которые реализованы в серверах, соединенных статически созданными IPC-каналами с вызывающим клиентом. Параметры
Возвращаемые значения В случае успеха возвращает Если значение, полученное через параметр |
|
Назначение Позволяет получить сведения о службах, предоставляемых серверами, соединенными статически созданными IPC-каналами с вызывающим клиентом. Параметры
Возвращаемые значения В случае успеха возвращает Если значение, полученное через параметр |
|
Назначение Создает массив и сохраняет в этом массиве сведения о службах, предоставляемых серверами, соединенными статически созданными IPC-каналами с вызывающим клиентом. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Удаляет массив, созданный вызовом функции Параметры
Возвращаемые значения Нет. |