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객체에서 다른 인터페이스의 포인터를 얻는다.
'컴퓨터 공부 > COM&ActiveX' 카테고리의 다른 글
[6월 9일 3교시] COM 서버 제작 (0) | 2009.06.09 |
---|---|
[6월 9일 2교시] COM 클라이언트 제작 (0) | 2009.06.09 |
[6월 9일 1교시] IUnknown Interface(141쪽 그림 추가) (0) | 2009.06.09 |
[6월 8일 2교시] COM Component (60쪽에 C++ 클래스 추가할 것) (0) | 2009.06.08 |
[6월 8일 1교시] 소개 (0) | 2009.06.08 |