title: "COM Architecture: 사용, interface"
description: "COM Architecture: 사용, interface"
cleanUrl: /sw-engineer/com-architecture-use-interface
ogImage: "<https://anyflower.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F7570d2fc-66b1-4e23-bb3c-ff7b56842b0d%2Fa0bdaeff-6cee-4009-b427-9bf3df260735%2FUntitled.png?table=block&id=c7bd81c5-c409-4e93-be89-e4241e5b3f03&spaceId=7570d2fc-66b1-4e23-bb3c-ff7b56842b0d&width=1230&userId=&cache=v2>"
floatFirstTOC: right

COM 개체의 사용

Untitled

COM Interface

IUnknown 인터페이스

세 가지의 메서드를 노출한다.

Untitled

COM Registry 엔트리

설치시 모든 COM 개체는 Registry에 등록되어야 한다. 기본적으로 HKEY_CLASSES_ROOT의 서브트리에 ProgIDCLSID로 이루어진 두 개의 엔트리가 등록된다. CLSIDFromProgID()를 통해 식별가능 문자열인 ProgID로부터 해당 CLSID를 얻어낼 수 있다. C++와는 달리, Visual Basic 같은 타 언어 기반 클라이언트는 ProgID를 통해 COM을 찾아내므로 ProgID도 반드시 함께 등록되어야 한다.

Untitled

CoCreateInstance()를 이용한 COM 객체 생성

사용하고자 하는 COM 개체의 CLSID를 얻었으면, CLSID와 기타 필요 인수를 넘김으로CoCreateInstance()를 호출하여 해당 개체를 생성하고 IUnknown 인터페이스 포인터를 얻는다. 다음 그림은 CoCreateInstance()를 호출하여 해당 개체의 IUnknown 인터페이스 포인터를 얻기까지의 과정이다.

Untitled