Share via


Registration-Free COM 개체 만들기

활성화 컨텍스트를 사용하면 COM 개체를 등록할 필요 없이 사용할 수 있습니다. 이렇게 하면 애플리케이션이 레지스트리 정보가 아닌 버전에 따라 다양한 기능을 가진 여러 구성 요소를 가질 수 있습니다. 여러 구성 요소는 동일한 GUID를 사용하여 동일한 COM 개체를 노출할 수 있지만 버전에 따라 다른 기능을 가질 수 있습니다.

애플리케이션이 CLSIDFromProgID에서 GUID를 요청하는 경우 COM은 먼저 활성 활성화 컨텍스트에서 progid에서 CLSID로의 매핑을 검색합니다. 애플리케이션이 CoCreateInstance를 사용하여 instance 인터페이스 포인터를 가져오는 경우 COM은 활성 활성화 컨텍스트에서 검색하여 CLSID를 호스트할 DLL을 찾습니다. 활성화 컨텍스트에 필요한 정보가 포함되어 있지 않으면 COM은 일반적인 방법을 사용하여 레지스트리의 정보를 검색합니다.

활성화 컨텍스트는 스레드당이므로 COM은 생성 스레드의 활성화 컨텍스트를 호스트 스레드로 마샬링하고 호스트 스레드에서 LoadLibrary 또는 DllGetClassObject 를 호출하기 전에 활성화합니다. 이 기능은 Windows에 이미 있으며 클라이언트 코드는 이를 구현하기 위해 아무 것도 수행할 필요가 없습니다.

COM 클래스는 레지스트리를 거치지 않고 호스트된 구성 요소에서 내보낼 수 있습니다. 여러 구성 요소는 서로 다른 COM 개체에 대해 동일한 ProgID를 노출할 수 있으며 호스팅 애플리케이션은 적절한 활성화 컨텍스트만 찾은 다음 CLSIDFromProgIDCoCreateInstance 를 사용하여 호스트된 개체의 인터페이스 포인터를 가져와야 합니다.