2010-05-16 3 views
1

COM에서 일부 COM 서버 개체의 인스턴스를 만들려면 먼저 IUnknown 인터페이스에 대한 포인터를 가져 와서 CoGetClassObject를 사용하여 클래스 개체를 만드시겠습니까?COM IUnknown 및 CoGetClassObject를 호출하기 전에 먼저 포인터가 필요합니까?

필자가 이해하는 한, IUnknown은 개체 수명을 관리하는 데 사용되므로 클라이언트가 작성하고자하는 개체가 무엇이든 관계없이 먼저 IUnknown 인터페이스 구현에 대한 포인터가 필요합니다.

소리가 맞습니까? 그렇지 않다면 아무도 그것이 어떻게 작동하는지 말할 수 있습니까?

답변

3

IUnknown기존 COM 개체의 수명을 관리합니다. 객체가 생성되기 전에는 IUnknown 포인터가 없습니다.

CoGetClassObject은 관심 대상 개체를 생성 할 것으로 예상되는 개체에 대해 IUnknown 인터페이스를 가져 오는 데 사용됩니다. 즉, 객체 이고 일반적으로 객체를 만드는 데 사용하는 CreateInstance 메서드를 선언하는 IClassFactory을 구현합니다.

클래스 팩토리를 명시 적으로 사용하는 대신 CoCreateInstance을 호출하는 것이 더 간단 할 수 있습니다.

+0

그래서 IUnknown을 구현하는 객체 만 클라이언트에서 COM에서 사용할 수 있습니까? –

+1

Tony : 모든 객체는'IUnknown'을 구현해야합니다. 이 인터페이스는 그다지 유용하지는 않지만, 객체가 지원하는 다른 인터페이스를 발견 할 수있는'QueryInterface' 메소드를 선언합니다. –

+0

'IUnknown' *는 객체 수명을 추적하는 데 도움을주기 때문에 * 유용합니다. – sharptooth

관련 문제