WIPIVERSE

IUnknown

IUnknown은 Microsoft의 Component Object Model(컴포넌트 객체 모델, COM)에서 모든 인터페이스가 상속받는 기본 인터페이스이다. COM 객체는 이 인터페이스를 구현함으로써 객체 생명 주기 관리와 인터페이스 간의 쿼리를 표준화한다.

주요 특징

구분 내용
위치 COM 아키텍처의 최상위 인터페이스
정의 interface IUnknown { HRESULT QueryInterface(REFIID riid, void **ppvObject); ULONG AddRef(); ULONG Release(); }
핵심 메서드 1. QueryInterface – 객체가 지원하는 다른 인터페이스를 얻기 위해 사용된다.
2. AddRef – 객체에 대한 참조 카운트를 증가시켜 메모리 관리를 지원한다.
3. Release – 참조 카운트를 감소시키며, 카운트가 0이 되면 객체가 파괴된다.
역할 - 객체 생명 주기 관리 (참조 카운팅)
- 인터페이스 탐색을 통한 다형성 구현
응용 COM 기반 애플리케이션, ActiveX 컨트롤, DirectX, Windows Shell 확장 등에서 객체 간 통신 및 재사용성을 제공한다.

구현 및 사용 예

  • COM 객체를 구현할 때 C++에서는 class MyObject : public IUnknown 형태로 선언하고, 세 메서드를 모두 구현해야 한다.
  • 클라이언트 코드에서는 IUnknown* pUnk를 통해 객체를 얻은 뒤 QueryInterface를 호출해 필요한 구체 인터페이스(IUnknown을 제외한 다른 COM 인터페이스)로 변환한다.
  • AddRef와 Release는 일반적으로 스마트 포인터(_com_ptr_t 등)나 ATL/WRL 라이브러리에서 자동으로 관리된다.

표준화 및 문서

  • IUnknown은 Microsoft가 정의한 COM 표준의 핵심 요소이며, 공식 문서는 Microsoft Docs 및 Windows SDK에 포함되어 있다.
  • COM 사양서와 관련 API 레퍼런스에서는 IUnknown의 메서드 시그니처와 동작 규칙을 상세히 기술하고 있다.

참고

  • IUnknown은 COM 객체 간의 상호 운용성을 보장하기 위한 최소한의 계약을 제공한다. 따라서 모든 COM 기반 기술에서 이 인터페이스를 기반으로 확장된 인터페이스가 정의된다.
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기