Interfaz IExternalConnection (objidlbase.h)
Administra el recuento de un objeto de servidor de conexiones externas o de cálculo de referencias. Un servidor que mantiene este tipo de recuento puede detectar cuándo no tiene conexiones externas y cerrarse de forma ordenada.
Herencia
La interfaz IExternalConnection hereda de la interfaz IUnknown . IExternalConnection también tiene estos tipos de miembros:
Métodos
La interfaz IExternalConnection tiene estos métodos.
IExternalConnection::AddConnection El método IExternalConnection::AddConnection (objidlbase.h) incrementa el recuento de conexiones externas seguras de un objeto. |
IExternalConnection::ReleaseConnection El método IExternalConnection::ReleaseConnection (objidlbase.h) disminuye el recuento de conexiones externas seguras de un objeto. |
Comentarios
IExternalConnection se implementa normalmente en objetos de servidor para habilitar el apagado ordenado de un vínculo a un objeto incrustado después de una actualización silenciosa. Los objetos que no implementan IExternalConnection corre el riesgo de perder datos en tal situación: cuando el cliente de vínculo final libera el objeto incrustado (servidor), se libera la última conexión externa en el administrador de código auxiliar del objeto, lo que hace que el administrador de código auxiliar libere sus punteros a interfaces en el objeto incrustado e inicie el apagado del objeto. En este momento, el objeto de servidor llama a IOleClientSite::SaveObject en el contenedor de vínculos y se produce un error en la llamada de devolución del contenedor de vínculos a IPersistStorage::Save porque el administrador de código auxiliar ya no tiene un puntero al objeto incrustado. Los cambios no guardados en los datos del objeto de servidor se perderán.
Sin embargo, si el objeto de servidor implementa IExternalConnection, su administrador de código auxiliar no liberará su conexión al objeto cuando se libere la última conexión externa. En su lugar, permanecerá conectado hasta que el objeto esté listo para destruirse.
En la serialización estándar, para incrementar el número de conexiones externas del objeto, COM llama a IExternalConnection::AddConnection en el objeto cuando el objeto se serializa por primera vez. El administrador de código auxiliar llama a los métodos de IExternalConnection en el objeto a medida que se obtienen y liberan las conexiones externas posteriores. Cuando el recuento del objeto de conexiones externas va a cero, el objeto puede guardar sus datos y, a continuación, revocarse de la tabla de objetos en ejecución y hacer lo que sea necesario para reducir su recuento de referencias de objetos a cero.
Un objeto que implementa IExternalConnection debe llamar explícitamente a CoDisconnectObject en sí mismo cuando su recuento de referencias externas cae a 0. Esta llamada hará que el administrador de código auxiliar llame a Release en el objeto para que el objeto pueda destruirse.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | objidlbase.h (incluya ObjIdl.h) |