Поделиться через


Служба имен

Библиотека управления динамическими данными (DDEML) позволяет приложению сервера регистрировать имена служб, которые она поддерживает, и предотвратить отправку DDEML XTYP_CONNECT транзакций для неподдерживаемых имен служб в функцию обратного вызова Динамического обмена данными сервера (DDE).

В следующих разделах описана служба имен.

Регистрация имени службы

Регистрируя имена служб в DDEML, сервер сообщает другим приложениям DDE в системе, что новый сервер доступен. Сервер регистрирует имя службы, вызывая функцию DdeNameService и указывая дескриптор строки, определяющий имя. В ответ DDEML отправляет транзакцию XTYP_REGISTER в функцию обратного вызова каждого приложения DDEML в системе (за исключением тех, которые указали флаг фильтра CBF_SKIP_REGISTRATIONS в функции DdeInitialize). Транзакция XTYP_REGISTER передает две строковые дескрипторы функции обратного вызова: первая определяет строку, указывающую базовое имя службы, а вторая — строку, указывающую службу для конкретного экземпляра. Клиент обычно использует имя базовой службы в списке доступных серверов, поэтому пользователь может выбрать сервер из списка. Клиент использует имя службы для конкретного экземпляра, чтобы установить беседу с определенным экземпляром серверного приложения, если выполняется несколько экземпляров.

Сервер может использовать DdeNameService для отмены регистрации имени службы. Эта функция приводит к отправке XTYP_UNREGISTER транзакций в другие приложения DDE в системе, уведомляя их о том, что они больше не могут использовать имя для установления бесед.

Сервер должен вызывать DdeNameService, чтобы зарегистрировать имена служб вскоре после вызова DdeInitialize. Сервер должен отменить регистрацию имен служб с помощью DdeNameService непосредственно перед вызовом функции DdeUninitialize.

Фильтр имени службы

Помимо регистрации имен служб, DdeNameService позволяет серверу включить или отключить фильтр имени службы. Если сервер отключает фильтр имени службы, DDEML отправляет транзакцию XTYP_CONNECT в функцию обратного вызова DDE сервера всякий раз, когда любой клиент вызывает функцию DdeConnect независимо от имени службы, указанного в функции. Если сервер включает фильтр имени службы, DDEML отправляет транзакцию XTYP_CONNECT на сервер, только если DdeConnect указывает имя службы, указанное в вызове DdeNameService.

По умолчанию фильтр имени службы включен, когда приложение вызывает DdeInitialize. По умолчанию DDEML не отправляет транзакцию XTYP_CONNECT на сервер, прежде чем сервер создал необходимую строку. Сервер может отключить фильтр имени службы, указав флаг DNS_FILTEROFF в вызове DdeNameService. Флаг DNS_FILTERON включает фильтр.