Статическое создание IPC-каналов при разработке на языке C++
Статическое создание IPC-каналов при разработке на языке C++
Чтобы реализовать клиентскую программу, вызывающую метод службы, предоставляемой серверной программой, необходимо:
- Подключить сгенерированный заголовочный файл описания (
*.edl.cpp.h) клиентской программы. - Подключить сгенерированные заголовочные файлы описаний используемых интерфейсов (
*.idl.cpp.h). - Подключить заголовочные файлы из состава KasperskyOS SDK:
sysroot-*-kos/include/kosipc/application.hsysroot-*-kos/include/kosipc/api.hsysroot-*-kos/include/kosipc/connect_static_channel.h
- Создать и инициализировать объект приложения, вызвав функцию
kosipc::MakeApplicationAutodetect(). (Также можно использовать функцииkosipc::MakeApplication()иkosipc::MakeApplicationPureClient().) - Получить клиентский IPC-дескриптор канала и идентификатор службы (
riid) вызвав функциюkosipc::ConnectStaticChannel().Функция принимает имя IPC-канала (из файла init.yaml) и квалифицированное имя службы (из CDL- и EDL-описаний компонента решения).
- Создать и инициализировать прокси-объект для используемой службы, вызвав функцию
MakeProxy().
Чтобы реализовать серверную программу, предоставляющую службы другим программам, необходимо:
- Подключить сгенерированный заголовочный файл
*.edl.cpp.h, содержащий описание компонентной структуры программы, включая все предоставляемые службы. - Подключить заголовочные файлы из состава KasperskyOS SDK:
sysroot-*-kos/include/kosipc/event_loop.hsysroot-*-kos/include/kosipc/api.hsysroot-*-kos/include/kosipc/serve_static_channel.h
- Создать классы, содержащие реализации интерфейсов, которые данная программа и её компоненты предоставляют в виде служб.
- Инициализировать объект приложения, вызвав функцию
kosipc::MakeApplicationAutodetect(). - Создать и инициализировать структуру
kosipc::components::Root, которая описывает компонентную структуру программы и описания интерфейсов всех предоставляемых программой служб. - Связать поля структуры
kosipc::components::Rootс объектами, реализующими соответствующие службы.Поля структуры
Rootповторяют иерархию компонентов и служб, заданную совокупностью CDL- и EDL-файлов. - Получить серверный IPC-дескриптор канала, вызвав функцию
ServeStaticChannel().Функция принимает имя IPC-канала (из файла init.yaml) и структуру, созданную на шаге 5.
- Создать объект
kosipc::EventLoop, вызвав функциюMakeEventLoop(). - Запустить цикл диспетчеризации входящих IPC-сообщений, вызвав метод
Run()объектаkosipc::EventLoop.
Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!