- 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다.
- ABI(Application Binary Interface) 라고 보면 된다.
- 바이너리간의 호환을 위한 인터페이스 (바이너리 표준)
- CPU들이 사용하는 명령어 칩셋인 ISA(Instruction Set Architecture)와 관련이 있다고 보면 된다.
- 서로 다른 언어로 개발된 소프트웨어 컴포넌트들도 통합할 수 있다.
- COM 인터페이스들은 이름이 대문자 'I'로 시작한다.
- ex) ID3D12GraphicsCommandList
IUnknown
- 모든 COM 인터페이스는 IUnknown이라는 COM인터페이스의 기능을 상속받는다.
- AddRef, Release, QueryInterface 인터페이를를 가지고 있으며, 상속 받아 구현하도록 되어있다.
- AddRef, Release를 통해서 레퍼런스 카운팅을 관리하며, 참조 개수가 0이되면 메모리에서 해제된다.
ComPtr
- COM 객체의 수명 관리를 돕기위해 만들어진 Windows 런타임 라이브러리.
- #include <wrl.h> 가 필요하다.
- Microsoft::WRL::ComPtr 이라는 클래스 이며, 스마트 포인터라고 할 수 있다.
- 즉, 범위에서 벗어나면 자동으로 Release를 호출한다.