Нахождение идентификатора службы (riid)
Идентификатор службы (riid) требуется находить на клиентской стороне, если для используемой службы нет готовых транспортных библиотек (например, вы написали собственную службу). Для вызова методов сервера необходимо на клиентской стороне предварительно вызвать метод инициализации прокси-объекта, передав в качестве третьего аргумента идентификатор службы. Например, для интерфейса Filesystem
:
Filesystem_proxy_init(&proxy, &transport.base, riid);
Подробнее см. примеры echo и ping (/opt/KasperskyOS-Community-Edition-<version>/examples/
),
Для использования служб, которые реализованы в исполняемых файлах в составе KasperskyOS Community Edition, нет необходимости находить идентификатор службы. Вся работа с транспортом выполняется поставляемыми транспортными библиотеками.
См. примеры gpio_*, net_*, net2_* и multi_vfs_* (/opt/KasperskyOS-Community-Edition-<version>/examples/
).
Нахождение идентификатора службы при статическом создании канала
При статическом создании IPC-канала клиент может узнать идентификатор нужной службы с помощью метода ServiceLocatorGetRiid()
, указав дескриптор IPC-канала и полное квалифицированное имя службы. Например, если экземпляр компонента OpsComp
содержит службу FS
, то на клиентской стороне необходимо вызвать:
…
nk_iid_t riid = ServiceLocatorGetRiid(handle, "OpsComp.FS");
Подробнее см. примеры echo и ping (/opt/KasperskyOS-Community-Edition-<version>/examples/
), а так же заголовочный файл /opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include/coresrv/sl/sl_api.h
.
Нахождение идентификатора службы при динамическом создании канала
Клиент получает идентификатор службы сразу при успешном динамическом создании IPC-канала. Клиентский IPC-дескриптор является одним из выходных (out
) аргументов метода KnCmConnect()
. Подробнее см. заголовочный файл /opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include/coresrv/cm/cm_api.h
.