KasperskyOS Community Edition 1.3

Динамическое создание IPC-каналов с использованием системной программы DCM

В составе KasperskyOS SDK поставляется системная программа DCM (Dynamic Connection Manager), которая позволяет динамически создавать IPC-каналы. Благодаря этой программе серверы могут сообщать клиентам о предоставляемых службах, а также передавать callable-дескрипторы для использования этих служб.

Для использования программы DCM в составе KasperskyOS SDK поставляются следующие файлы:

  • sysroot-*-kos/include/dcm/dcm_api.h – заголовочный файл, в котором определен базовый API.
  • sysroot-*-kos/include/dcm/groups/pub.h – заголовочный файл, в котором определен дополнительный API для серверов.
  • sysroot-*-kos/include/dcm/groups/subscr.h – заголовочный файл, в котором определен дополнительный API для клиентов.
  • sysroot-*-kos/include/dcm/dcm.h – заголовочный файл для включения в исходный код клиентов и серверов.
  • sysroot-*-kos/bin/dcm – исполняемый файл.
  • sysroot-*-kos/lib/libdcm.a – клиентская библиотека.
  • sysroot-*-kos/lib/libdcm_s.a – клиентская библиотека, собранная с флагом -fPIC для обеспечения возможности компоновки с динамической библиотекой.
  • sysroot-*-kos/include/kl/core/DCM.*dl – файлы формальной спецификации.

IPC-каналы от клиентов и серверов к DCM нужно создать статически.

Можно запустить несколько процессов программы DCM. При этом каждый клиент и сервер может быть соединен только с одним процессом программы DCM.

В API программы DCM используются идентификаторы, которые называются DCM-дескрипторами (англ. DCM handles). DCM-дескрипторы идентифицируют объекты, которые дают клиентам и серверам, использующим DCM, следующие возможности:

  • Клиенты могут получать уведомления о публикации и отмене публикации служб, а также выполнять запросы на создание IPC-каналов с серверами.
  • Серверы могут получать запросы клиентов на создание IPC-каналов, а также принимать или отклонять эти запросы.

Имена служб и интерфейсов служб нужно задавать в соответствии с формальными спецификациями компонентов решения. (О квалифицированном имени службы см. "Привязка методов моделей безопасности к событиям безопасности".) Вместо квалифицированного имени службы можно использовать какое-либо условное название этой службы. Имена клиентов и серверов задаются в init-описании.

В этом разделе

Использование базового API (dcm_api.h)

Использование дополнительного API для серверов (pub.h)

Использование дополнительного API для клиентов (subscr.h)