컴퓨터 공부/COM&ActiveX

[6월 8일 3교시] COM Component (함수설명)

려리군 2009. 6. 8. 11:49

COM Object는 ClassFactory를 통해서 생성한다.

※ 디자인 패턴에서도 Factory패턴을 통해서 클래스를 만든다.

 - CreateInstance

 - LockServer


Clean-up

Inprocess Server 

 - COM 요청에 의해 해제

Local Server

 - 로컬 서버 자신이 판단.


GUID(유효 아이디)

128비트

 Ethernet card 주소 + 단위 경과 시간 등의 긴 숫자로 구성.

CLASSID : CoClass의 GUID

IID = Interface의 GUID

'도구->GUID 만들기'를 통해 만들 수 있다.

 - IsEqualGUID, IsEqualIID, IsEqualCLSID

 - 모두 유니코드를 사용한다.


HRESULT

 - 4바이트 부호없는 long값.

 - 사용자에게 함수 상태를 보고

 - 매크로(SUCCEEDED, FAILED를 많이 사용)


COM 컴포넌트 등록

Inprocess Server

예) regsvr32 ServerName.dll

out-of-process Server

예) serverName.exe /regserver


※ cabinet(CAB) 파일에서 COM 객체를 등록할 때 이미 그 COM객체가 있으면 이전 COM을 죽이고 재부팅을 통해 새로운 COM객체를 설치한다.


COM 라이브러리 초기화

CoInitialize/CoInitializeEx함수를 한 번 호출하면 CoUninitialize를 호출해야 한다.


※ COM 객체의 CLSID를 얻기 위해 progID를 사용할 수 있다.

HRESULT CLSIDFromProgID : ProgID를 통해 CLSID를 구한다.

HRESULT ProgIDFromCLSID : CLSID를 통해 ProgID를 구한다.


CoCreateInstance

COM객체를 만든다.


QueryInterface

같은 COM객체에서 다른 인터페이스의 포인터를 얻는다.