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

API определен в заголовочном файле sysroot-*-kos/include/coresrv/dcm/helpers/connect.h из состава KasperskyOS SDK.

API позволяет клиентам выполнять запросы на создание IPC-каналов с серверами для использования служб с заданными интерфейсами. Для выполнения запроса достаточно вызвать функции DcmConnectAny() или DcmConnectAnyEx(), в то время как при использовании базового API dcm_api.h для этого требуется выполнить последовательность вызовов: DcmSubscribeToEndpoints(), DcmReadPubQueue(), DcmCreateConnection(), DcmConnectToEndpoint().

Перед вызовом функции DcmConnectAny() или DcmConnectAnyEx() нужно создать подключение к DCM вызовом функции DcmInit() из базового API dcm_api.h.

В результате вызова функции DcmConnectAny() или DcmConnectAnyEx() клиент получает через параметр outSessionHandle callable-дескриптор для использования службы.

Вызов функции DcmConnectAny() соответствует вызову функции DcmConnectAnyEx(), при котором параметры endpointName и serverName имеют значение RTL_NULL, параметры serverHandle и clientHandle имеют значение INVALID_HANDLE, параметры findTimeout и connectTimeout имеют значение INFINITE_TIMEOUT.

Сведения о функциях API приведены в таблице ниже.

Функции connect.h

Функция

Сведения о функции

DcmConnectAny()

Назначение

Выполняет запрос на создание IPC-канала с сервером для использования службы с заданным интерфейсом.

Параметры

  • [in] endpointType – указатель на имя интерфейса службы. Максимальный размер имени (в байтах) с учетом терминирующего нуля соответствует значению константы UCoreStringSize, определенной в файле sysroot-*-kos/include/kl/core/Types.idl из состава KasperskyOS SDK.
  • [out] outSessionHandle – указатель на callable-дескриптор для использования службы.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

DcmConnectAnyEx()

Назначение

Выполняет запрос на создание IPC-канала с сервером для использования службы с заданным интерфейсом.

Параметры

  • [in] endpointType – указатель на имя интерфейса службы. Максимальный размер имени (в байтах) с учетом терминирующего нуля соответствует значению константы UCoreStringSize, определенной в файле sysroot-*-kos/include/kl/core/Types.idl из состава KasperskyOS SDK.
  • [in,optional] endpointName – указатель на квалифицированное имя службы или RTL_NULL, если для использования подходит любая служба с заданным интерфейсом. Максимальный размер имени (в байтах) с учетом терминирующего нуля соответствует значению константы UCoreStringSize, определенной в файле sysroot-*-kos/include/kl/core/Types.idl из состава KasperskyOS SDK.
  • [in,optional] serverName – указатель на имя сервера или RTL_NULL, если не имеет значения, какой именно сервер предоставляет службу. Максимальный размер имени (в байтах) с учетом терминирующего нуля соответствует значению константы UCoreStringSize, определенной в файле sysroot-*-kos/include/kl/core/Types.idl из состава KasperskyOS SDK.
  • [in,optional] serverHandle – дескриптор, идентифицирующий сервер, или INVALID_HANDLE, если не имеет значения, какой именно сервер предоставляет службу.
  • [in,optional] clientHandle – дескриптор, идентифицирующий клиента, или INVALID_HANDLE, чтобы для идентификации клиента использовался дескриптор вызывающего процесса.
  • [in] findTimeout – время ожидания публикации службы (в миллисекундах) или INFINITE_TIMEOUT, чтобы задать неограниченное время ожидания. Константа INFINITE_TIMEOUT определена в заголовочном файле sysroot-*-kos/include/rtl/rtc.h из состава KasperskyOS SDK.
  • [in] connectTimeout – время ожидания выполнения запроса на создание IPC-канала с сервером (в миллисекундах) или INFINITE_TIMEOUT, чтобы задать неограниченное время ожидания. Константа INFINITE_TIMEOUT определена в заголовочном файле sysroot-*-kos/include/rtl/rtc.h из состава KasperskyOS SDK.
  • [out] outSessionHandle – указатель на callable-дескриптор для использования службы.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

Если в параметре connectTimeout указан 0, и сервер не обработал запрос на создание IPC-канала, возвращает rcNotReady.

Если сервер отклонил запрос вызовом функции DcmCloseHandle() из базового API dcm_api.h возвращает rcNotConnected.

Дополнительные сведения

Неблокирующий вызов, если в параметрах findTimeout и connectTimeout указан 0.

В начало