Share via


Interface IExternalConnection (objidl.h)

Gerencia a contagem de conexões marshaled ou externas de um objeto de servidor. Um servidor que mantém essa contagem pode detectar quando não tem conexões externas e se desligar de forma ordenada.

Herança

A interface IExternalConnection herda da interface IUnknown . IExternalConnection também tem estes tipos de membros:

Métodos

A interface IExternalConnection tem esses métodos.

 
IExternalConnection::AddConnection

O método IExternalConnection::AddConnection (objidl.h) incrementa a contagem de conexões externas fortes de um objeto.
IExternalConnection::ReleaseConnection

O método IExternalConnection::ReleaseConnection (objidl.h) diminui a contagem de conexões externas fortes de um objeto.

Comentários

IExternalConnection é mais comumente implementado em objetos de servidor, para habilitar o desligamento ordenado de um link para um objeto inserido após uma atualização silenciosa. Objetos que não implementam IExternalConnection correm o risco de perder dados em tal situação: quando o cliente de link final libera o objeto inserido (servidor), a última conexão externa no gerenciador stub do objeto é liberada, fazendo com que o gerenciador de stub libere seus ponteiros para interfaces no objeto inserido e inicie o desligamento do objeto. Neste ponto, o objeto de servidor chama IOleClientSite::SaveObject no contêiner de link e a chamada de retorno do contêiner de link para IPersistStorage::Save falha porque o gerenciador de stub não tem mais um ponteiro para o objeto inserido. Todas as alterações não salvas nos dados do objeto do servidor seriam então perdidas.

No entanto, se o objeto de servidor implementar IExternalConnection, seu gerenciador de stub não liberará sua conexão com o objeto quando a última conexão externa for lançada. Em vez disso, ele permanecerá conectado até que o objeto esteja pronto para se destruir.

No marshaling padrão, para incrementar a contagem de conexões externas do objeto, COM chama IExternalConnection::AddConnection no objeto quando o objeto é empacotado pela primeira vez. O gerenciador de stub chama os métodos de IExternalConnection no objeto à medida que conexões externas subsequentes são obtidas e liberadas. Quando a contagem de conexões externas do objeto vai para zero, o objeto pode salvar seus dados e, em seguida, revogar-se da tabela de objetos em execução e fazer o que for necessário para reduzir sua contagem de referência de objeto para zero.

Um objeto que implementa IExternalConnection deve chamar explicitamente CoDisconnectObject em si mesmo quando sua contagem de referência externa cair para 0. Essa chamada fará com que o gerenciador de stub chame Release no objeto para que o objeto possa se destruir.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h (inclua ObjIdl.h)

Confira também

Codisconnectobject

Colockobjectexternal

Ioleobject