Использование дополнительного API для серверов (pub.h)
API позволяет серверам публиковать группы служб. С позиции сервера группа служб представляет собой набор предоставляемых этим сервером служб, для которых можно получать клиентские запросы на создание IPC-каналов, используя один DCM-дескриптор. Сервер может опубликовать несколько групп служб. Множества служб из разных групп, опубликованных сервером, не должны пересекаться.
Сведения о функциях API приведены в таблице ниже.
Чтобы опубликовать группу предоставляемых сервером служб в DCM
, нужно вызвать функцию DcmPublishGroupEndpoints()
. Через параметр endpoints
функции DcmPublishGroupEndpoints()
нужно задать квалифицированные имена и контексты группируемых служб, а также имена интерфейсов служб. (Массив структур, указатель на который задан через параметр endpoints
, можно удалить после публикации.) Контекст службы представляет собой данные, которые используются сервером, чтобы при вызове функции DcmListenGroupPub()
определить, какая именно служба из опубликованной группы требуется клиенту. В качестве контекста службы можно использовать числовой идентификатор либо указатель на какие-либо данные. В результате вызова функции DcmPublishGroupEndpoints()
создается DCM-дескриптор, позволяющий получать запросы клиентов на создание IPC-каналов для использования служб из заданной группы с заданными интерфейсами.
Чтобы получить запрос клиента на создание IPC-канала для использования службы из опубликованной группы, нужно вызвать функцию DcmListenGroupPub()
. В параметре pubHandle
функции DcmListenGroupPub()
нужно указать DCM-дескриптор, полученный вызовом функции DcmPublishGroupEndpoints()
. Выходной параметр outContext
функции DcmListenGroupPub()
содержит указатель на контекст службы. В результате вызова функции DcmListenGroupPub()
создается DCM-дескриптор, позволяющий принять или отклонить запрос клиента на создание IPC-канала для использования той службы группы, которой соответствует полученный контекст службы.
Чтобы отменить публикацию группы служб, нужно вызовом функции DcmCloseGroupPubHandle()
закрыть DCM-дескриптор, созданный при ее публикации. Также публикация всех опубликованных групп служб сервера будет отменена, если сервер завершится.
Чтобы прервать блокирующий вызов функции DcmListenGroupPub()
из другого потока исполнения, нужно вызвать функцию DcmInterruptGroupPubBlockingCall()
.
Используя функции DcmSubscribeToGroupPubEvent()
и DcmUnsubscribeFromGroupPubEvent()
совместно с функциями из API notice_api.h, можно получать уведомления о том, что произошли следующие события: получение сервером запроса от клиента на создание IPC-канала (флаг DCM_CLIENT_CONNECTED
), прерывание блокирующего вызова функции DcmListenGroupPub()
(флаг DCM_BLOCKING_CALL_INTERRUPTED
). (Флаги маски событий и идентификатор записи вида "ресурс – маска событий" DCM_EVENT_ID
определены в заголовочном файле sysroot-*-kos/include/dcm/dcm_api.h
из состава KasperskyOS SDK.) Функции DcmSubscribeToGroupPubEvent()
и DcmUnsubscribeFromGroupPubEvent()
позволяют настроить приемник уведомлений, соответственно добавляя и удаляя отслеживаемые объекты, идентифицируемые DCM-дескрипторами.
Функции pub.h
Функция |
Сведения о функции |
---|---|
|
Назначение Публикует группу служб в Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить запрос клиента на создание IPC-канала. Параметры
Возвращаемые значения В случае успеха возвращает Если блокирующий вызов был прерван вызовом функции Дополнительные сведения Неблокирующий вызов, если в параметре |
|
Назначение Прерывает блокирующий вызов функции Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Закрывает DCM-дескриптор, полученный вызовом функции Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает приемник уведомлений, чтобы он получал уведомления о событиях, связанных с объектом, идентифицируемым заданным DCM-дескриптором. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает приемник уведомлений, чтобы он не получал уведомления о событиях, связанных с объектом, идентифицируемым заданным DCM-дескриптором. Параметры
Возвращаемые значения В случае успеха возвращает |