[6월 19일 2교시] Component Categories, Moniker
Category
CATID : category ID를 공유하는 COM 클래스와 관련된 논리 그룹
※ COM을 분류하거나 계층구조를 나누고 싶을 때 만든다.
Implemented Categories
예시)
HKCR\CLSID\{CLSID_Chimp}\Implemented Categories\{CATID_Mammals}
침팬지는 포유류에 속한다.
Required Categories
해당하는 Category가 먼저 만들어 놓고 해당되는 카테고리를 사용한다.
클라이언트가 required category를 만들어야 함. (필요한 경우)
Category 매니저 컴포넌트
CLSID_StdComponentCategoryMsg : 객체 아이디
ICatRegister : 카테고리 정보를 레지스크리에 등록
ICatInformation : 카테고리 정보를 질의하는데 사용
TreatAs
{CLS_A}\TreatAs\{CLS_B}
A와 B를 동일하게 취급.
Moniker
표준 인터페이스 이상으로 바인드 알고리즘을 캡슐화하는 locator 객체를 사용한다.
파일 Moniker, URL Moniker
IMoniker
※ ActiveX에 많이 사용한다. ActiveX에서 기본적으로 제공한다.
예시 : <object CLSID = __________ obj-base = ________ version = ___></object>
CLSID의 string값을 판단하는 역할을 한다.
obj-base에는 cabinet파일이나 ocx파일을 이용.
IMoniker::BindToObject
CoGetObject()
MkParseDisplayName을 호출하여 문자열을 번역하여 IMoniker::BindToObject를 호출.