Интерфейс IExternalConnection (objidlbase.h)

Управляет численностью маршалированных (или внешних) подключений серверного объекта. Сервер, поддерживающий такое количество, может обнаружить отсутствие внешних подключений и завершить работу в упорядоченном режиме.

Наследование

Интерфейс IExternalConnection наследуется от интерфейса IUnknown . IExternalConnection также имеет следующие типы членов:

Методы

Интерфейс IExternalConnection содержит следующие методы.

 
IExternalConnection::AddConnection

Метод IExternalConnection::AddConnection (objidlbase.h) увеличивает количество сильных внешних подключений объекта.
IExternalConnection::ReleaseConnection

Метод IExternalConnection::ReleaseConnection (objidlbase.h) уменьшает количество сильных внешних подключений объекта.

Комментарии

IExternalConnection чаще всего реализуется на объектах сервера, чтобы обеспечить упорядоченное завершение работы ссылки на внедренный объект после автоматического обновления. Объекты, которые не реализуют IExternalConnection , рискуют потерять данные в такой ситуации. Когда клиент последней связи освобождает внедренный (серверный) объект, освобождается последнее внешнее соединение в диспетчере заглушки объекта, в результате чего диспетчер заглушки освобождает свои указатели на интерфейсы во внедренном объекте и инициирует завершение работы объекта. На этом этапе объект сервера вызывает IOleClientSite::SaveObject в контейнере ссылок, и обратный вызов контейнера ссылки к IPersistStorage::Save завершается сбоем, так как диспетчер заглушки больше не имеет указателя на внедренный объект. Все несохраненные изменения данных объекта сервера будут потеряны.

Однако если объект сервера реализует IExternalConnection, его диспетчер заглушки не отпустит подключение к объекту при освобождении последнего внешнего подключения. Вместо этого он будет оставаться подключенным до тех пор, пока объект не будет готов уничтожить себя.

При стандартном маршалинге для увеличения числа внешних подключений объекта COM вызывает IExternalConnection::AddConnection для объекта при первом маршале объекта. Диспетчер заглушек вызывает методы IExternalConnection в объекте по мере получения и освобождения последующих внешних подключений. Когда число внешних подключений объекта равно нулю, объект может сохранить свои данные, а затем отозвать себя из таблицы выполняющихся объектов и выполнить все необходимые действия, чтобы уменьшить число ссылок на объекты до нуля.

Объект, реализующий IExternalConnection , должен явно вызывать CoDisconnectObject для себя, когда его число внешних ссылок падает до 0. Этот вызов приведет к тому, что диспетчер заглушки вызовет Release для объекта , чтобы объект смог уничтожить себя.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidlbase.h (включая ObjIdl.h)

См. также раздел

CoDisconnectObject

CoLockObjectExternal

IOleObject