다음을 통해 공유


IExternalConnection 인터페이스(objidl.h)

서버 개체의 마샬링된 연결 또는 외부 연결 수를 관리합니다. 이러한 개수를 유지하는 서버는 외부 연결이 없는 경우를 감지하고 정연하게 종료할 수 있습니다.

상속

IExternalConnection 인터페이스는 IUnknown 인터페이스에서 상속됩니다. IExternalConnection 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IExternalConnection 인터페이스에는 이러한 메서드가 있습니다.

 
IExternalConnection::AddConnection

IExternalConnection::AddConnection 메서드(objidl.h)는 개체의 강력한 외부 연결 수를 증가합니다.
IExternalConnection::ReleaseConnection

IExternalConnection::ReleaseConnection 메서드(objidl.h)는 개체의 강력한 외부 연결 수를 감소합니다.

설명

IExternalConnection 은 자동 업데이트 후 포함된 개체에 대한 링크를 순서대로 종료할 수 있도록 서버 개체에서 가장 일반적으로 구현됩니다. IExternalConnection을 구현하지 않는 개체는 이러한 상황에서 데이터가 손실될 위험이 있습니다. 최종 링크 클라이언트가 포함된(서버) 개체를 해제하면 개체의 스텁 관리자에 대한 마지막 외부 연결이 해제되어 스텁 관리자가 포함된 개체의 인터페이스에 대한 포인터를 해제하고 개체의 종료를 시작합니다. 이 시점에서 서버 개체는 링크 컨테이너 에서 IOleClientSite::SaveObject 를 호출하고, 스텁 관리자에 포함된 개체에 대한 포인터가 더 이상 없기 때문에 링크 컨테이너의 IPersistStorage::Save 에 대한 반환 호출이 실패합니다. 서버 개체의 데이터에 대한 저장되지 않은 변경 내용은 손실됩니다.

그러나 서버 개체가 IExternalConnection을 구현하는 경우 마지막 외부 연결이 해제될 때 해당 스텁 관리자는 개체에 대한 연결을 해제하지 않습니다. 대신 개체가 자체 삭제할 준비가 될 때까지 연결 상태를 유지합니다.

표준 마샬링에서 개체의 외부 연결 수를 증가하기 위해 COM은 개체가 처음 마샬링될 때 개체에서 IExternalConnection::AddConnection 을 호출합니다. 스텁 관리자는 후속 외부 연결을 가져오고 해제할 때 개체에서 IExternalConnection 의 메서드를 호출합니다. 개체의 외부 연결 수가 0이 되면 개체는 해당 데이터를 저장한 다음 실행 중인 개체 테이블에서 자신을 해지하고 개체 참조 수를 0으로 줄이기 위해 필요한 모든 작업을 수행할 수 있습니다.

IExternalConnection을 구현하는 개체는 외부 참조 수가 0으로 떨어질 때 자체적으로 CoDisconnectObject를 명시적으로 호출해야 합니다. 이 호출을 수행하면 스텁 관리자가 개체에서 Release 를 호출하여 개체 자체를 삭제할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h(ObjIdl.h 포함)

추가 정보

CoDisconnectObject

CoLockObjectExternal

IOleObject