Транспортный код на языке C++

30 сентября 2026

ID cpp_proxy_stubs

Перед чтением этого раздела, нужно ознакомиться со сведениями о механизме IPC и формальных спецификациях компонентов решения.

Чтобы реализовать взаимодействие процессов, необходим транспортный код, отвечающий за формирование, отправку, прием и обработку IPC-сообщений.

Транспортный код

Транспортный код включает прокси-объекты (proxy) и стабы (stub) для использования как клиентом, так и сервером. Прокси-объекты используются клиентом для упаковки параметров вызываемого метода в IPC-запрос, выполнения IPC-запроса и распаковки IPC-ответа. Стабы используются сервером для распаковки параметров из IPC-запроса, диспетчеризации вызова на соответствующую реализацию метода и упаковки IPC-ответа.

Генерация транспортного кода для разработки на C++

У разработчика решения нет необходимости самостоятельно писать транспортный код. В составе KasperskyOS Community Edition SDK поставляется генератор транспортного кода. Этот генератор создает транспортный код из формальных спецификаций компонентов решения.

Чтобы генерировать транспортный код на языке C++ при сборке решения, нужно использовать CMake-команды add_nk_idl (), add_nk_cdl (), add_nk_edl ().

Типы С++ в файле *.idl.cpp.h

Каждый интерфейс определяется в IDL-описании. Это описание задает имя интерфейса, сигнатуры интерфейсных методов и типы данных для параметров интерфейсных методов.

CMake-команда add_nk_idl () создает CMake-цель для генерации заголовочных файлов для заданного IDL-файла. Генерируемые заголовочные файлы содержат представление на языке C++ для интерфейса и типов данных, описанных в IDL-файле, а также методы, необходимые для использования прокси-объектов и стабов.

Соответствие типов данных, объявленных в IDL-файле, типам C++ приведено в таблице ниже.

Соответствие типов IDL типам C++

Работа с транспортным кодом на C++

Сценарии разработки клиента и сервера, которые обмениваются IPC-сообщениями, представлены в разделе "Динамическое создание IPC-каналов при разработке на языке C++".

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