API определены в заголовочных файлах из состава KasperskyOS SDK:
sysroot-*-kos/include/coresrv/cm/cm_api.h
;sysroot-*-kos/include/coresrv/ns/ns_api.h
.API позволяет динамически создавать IPC-каналы.
Сведения о функциях API приведены в таблицах ниже.
Использование API
Чтобы серверы могли сообщать клиентам о предоставляемых службах, нужно включить в решение сервер имен, то есть системную программу NameServer
(исполняемый файл sysroot-*-kos/bin/ns
из состава KasperskyOS SDK). IPC-каналы от клиентов и серверов к серверу имен можно создать статически (эти IPC-каналы должны иметь имя kl.core.NameServer
). Если этого не сделать, то при вызове клиентами и серверами функции NsCreate()
будут выполнены попытки динамического создания этих IPC-каналов. Сервер имен не требуется включать в решение, если у клиентов изначально есть сведения об именах серверов и предоставляемых этими серверами служб.
Имена служб и интерфейсов нужно задавать в соответствии с формальными спецификациями компонентов решения. (О квалифицированном имени службы см. "Привязка методов моделей безопасности к событиям безопасности".) Вместо квалифицированного имени службы можно использовать какое-либо условное название этой службы. Имена клиентов и серверов задаются в init-описании. Также имя процесса можно получить вызовом функции KnTaskGetName()
из API task_api.h.
Динамическое создание IPC-канала на стороне сервера включает следующие шаги:
NsCreate()
.NsPublishService()
.Чтобы отменить публикацию службы, нужно вызвать функцию NsUnPublishService()
.
KnCmListen()
.Функция KnCmListen()
позволяет получить первый запрос в очереди, но при этом не удаляет этот запрос, а помещает в конец очереди. Если в очереди всего один запрос, то вызов функции KnCmListen()
несколько раз подряд дает один и тот же результат. Запрос удаляется из очереди при вызове функции KnCmAccept()
или KnCmDrop()
.
KnCmAccept()
.Чтобы отклонить запрос клиента, нужно вызвать функцию KnCmDrop()
.
Слушающий дескриптор создается при вызове функции KnCmAccept()
со значением INVALID_HANDLE
в параметре listener
. Если указать слушающий дескриптор, то созданный серверный IPC-дескриптор обеспечит возможность получать IPC-запросы по всем IPC-каналам, ассоциированным с этим слушающим дескриптором. (Первый IPC-канал, ассоциированный со слушающим дескриптором, создается при вызове функции KnCmAccept()
со значением INVALID_HANDLE
в параметре listener
. Второй и последующие IPC-каналы, ассоциированные со слушающим дескриптором, создаются при втором и последующих вызовах функции KnCmAccept()
с указанием дескриптора, полученного при первом вызове.) В параметре listener
функции KnCmAccept()
можно указать слушающий дескриптор, полученный с использованием функций KnHandleConnect()
, KnHandleConnectEx()
и KnHandleCreateListener()
из API handle_api.h, а также функции ServiceLocatorRegister()
, объявленной в заголовочном файле sysroot-*-kos/include/coresrv/sl/sl_api.h
из состава KasperskyOS SDK.
Динамическое создание IPC-канала на стороне клиента включает следующие шаги:
NsCreate()
.NsEnumServices()
.Чтобы получить полный список служб с заданным интерфейсом, нужно вызвать функцию несколько раз, инкрементируя индекс, пока не будет получена ошибка rcResourceNotFound
.
KnCmConnect()
.К серверу имен можно подключить несколько клиентов и серверов. Каждый клиент и сервер может создать несколько подключений к серверу имен. Сервер может отменить публикацию службы, выполненную другим сервером.
Удаление динамически созданных IPC-каналов
Динамически созданный IPC-канал будет удален при закрытии его клиентского и серверного IPC-дескрипторов.
Сведения о функциях API
Функции ns_api.h
Функция |
Сведения о функции |
---|---|
|
Назначение Создает подключение к серверу имен. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Публикует службу на сервере имен. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Отменяет публикацию службы на сервере имен. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Перечисляет службы, опубликованные на сервере имен. Параметры
Возвращаемые значения В случае успеха возвращает |
Функции cm_api.h
Функция |
Сведения о функции |
---|---|
|
Назначение Выполняет запрос на создание IPC-канала с сервером для использования заданной службы. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить запрос клиента на создание IPC-канала для использования службы. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Отклоняет запрос клиента на создание IPC-канала для использования заданной службы. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Принимает запрос клиента на создание IPC-канала для использования заданной службы. Параметры
Возвращаемые значения В случае успеха возвращает |