Использование дополнительного API для клиентов (subscr.h)
API позволяет клиентам получать уведомления о публикации и отмене публикации групп служб. С позиции клиента группа служб представляет собой набор служб одного сервера, уведомления о публикации и отмене публикации которых можно получать, используя один DCM-дескриптор. При этом действует ограничение о том, что сервер не может предоставлять несколько служб с одинаковым интерфейсом. Несколько серверов могут предоставлять одинаковые группы служб, требуемые клиенту. Сервер может предоставлять несколько групп служб, требуемых клиенту. Множества служб из разных групп, требуемых клиенту, могут пересекаться.
Сведения о функциях API приведены в таблице ниже.
Чтобы создать DCM-дескриптор, позволяющий получать уведомления о публикации и отмене публикации групп служб с заданными интерфейсами, нужно вызвать функцию DcmSetGroupSubscription()
. Через параметр endpointTypes
нужно задать имена интерфейсов группируемых служб. В параметре endpointsCount
нужно указать число группируемых служб, равное числу интерфейсов, заданных через параметр endpointTypes
. (Уведомления будут содержать сведения о том числе служб, которое равно числу интерфейсов, так как действует ограничение, что каждому интерфейсу соответствует отдельная и единственная служба.)
Чтобы извлечь уведомление о публикации или отмене публикации группы служб из очереди этих уведомлений, нужно вызвать функцию DcmReadGroupPubQueue()
. В параметре subscrHandle
функции DcmReadGroupPubQueue()
нужно указать DCM-дескриптор, полученный вызовом функции DcmSetGroupSubscription()
. В параметре maxCount
функции DcmReadGroupPubQueue()
нужно указать число элементов в массиве, заданном через параметр outEndpoints
. Значение этого параметра должно быть не меньше числа служб в группе. Значение, полученное через параметр outPubStatus
функции DcmReadGroupPubQueue()
, отражает, что группа служб опубликована, или публикация группы служб отменена. Уведомление о публикации группы служб появляется в очереди только в том случае, если сервер публикует все службы группы (сразу или по отдельности). Если сервер публикует только часть требуемых клиенту служб, то уведомление о публикации группы служб не появляется. Если сервер завершается или отменяет публикацию хотя бы одной службы из опубликованной группы служб, то клиент получает уведомление об отмене публикации этой группы служб.
Если больше не требуется получать уведомления о публикации и отмене публикации группы служб с заданными интерфейсами, то DCM-дескриптор, созданный вызовом функции DcmSetGroupSubscription()
, нужно закрыть вызовом функции DcmCloseGroupSubscrHandle()
.
Чтобы прервать блокирующий вызов функции DcmReadGroupPubQueue()
из другого потока исполнения, нужно вызвать функцию DcmInterruptGroupSubscrBlockingCall()
.
Используя функции DcmSubscribeToGroupSubscrEvent()
и DcmUnsubscribeFromGroupSubscrEvent()
совместно с функциями из API notice_api.h, можно получать уведомления о том, что произошли следующие события: публикация или отмена публикации сервером службы в DCM
(флаг DCM_PUBLICATION_CHANGED
), прерывание блокирующего вызова функции DcmReadGroupPubQueue()
(флаг DCM_BLOCKING_CALL_INTERRUPTED
). (Флаги маски событий и идентификатор записи вида "ресурс – маска событий" DCM_EVENT_ID
определены в заголовочном файле sysroot-*-kos/include/dcm/dcm_api.h
из состава KasperskyOS SDK.) Функции DcmSubscribeToGroupSubscrEvent()
и DcmUnsubscribeFromGroupSubscrEvent()
позволяют настроить приемник уведомлений, соответственно добавляя и удаляя отслеживаемые объекты, идентифицируемые DCM-дескрипторами.
Функции subscr.h
Функция |
Сведения о функции |
---|---|
|
Назначение Создает DCM-дескриптор, позволяющий получать уведомления о публикации и отмене публикации групп служб с заданными интерфейсами. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Извлекает уведомление о публикации или отмене публикации группы служб из очереди этих уведомлений. Параметры
Возвращаемые значения В случае успеха возвращает Если блокирующий вызов был прерван вызовом функции Дополнительные сведения Неблокирующий вызов, если в параметре |
|
Назначение Прерывает блокирующий вызов функции Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Закрывает DCM-дескриптор, полученный вызовом функции Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает приемник уведомлений, чтобы он получал уведомления о событиях, связанных с объектом, идентифицируемым заданным DCM-дескриптором. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает приемник уведомлений, чтобы он не получал уведомления о событиях, связанных с объектом, идентифицируемым заданным DCM-дескриптором. Параметры
Возвращаемые значения В случае успеха возвращает |