[클라이언트]
   - CoCreatInstance():
함수 호출하여 COM객체 생성을 시도한다
.
   - 
함수 내부에서는 CoGetClassObject()라는
COM 라이브러리 함수를 호출한다
[COM
라이브러리]
   - CoGetClassObject():
레지스트리 검색
.
   -
첫 번째 매개변수를 통해 DLL의 레지스트리 등록 여부를 확인
.
   - DllGetClassObject
함수 호출
.              
[DLL
서버
]
   - EXPORT
함수 호출
.
   -
클래스 FACTORY 객체를 생성
.
   - 
이 객체에 연결되어 있는 IclassFactory 인터페이스의 주소를 반환
.
   - 
반환된 주소는 CoGetClassObject() 함수를 거쳐 CoCreateInstance() 함수로

     
다시 반환
[
클라이언트]
   - IclassFactory
를 사용하여 CLASS FACTORY CreateInstance() 함수 호출
.
[Class Factory]
   - CreateInstance()
   -
자신이 관리하고 있는 COM클래스로부터 COM 객체를 생성
!
   -
인터페이스 주소를 반환
.
[
클라이언트
]
   - return
된 인터페이스로 컴포넌트 접근가능

'programming > COM(Component Object Model)' 카테고리의 다른 글

컴포넌트 생성 및 접근 (전체 흐름도)  (0) 2010.03.15
INTERFACE  (0) 2010.03.13

#include <iostream.h>
#include <odjbase.h>
using namespace std;

//define interface struct
//IUnknwon
//모든 COM 컴포넌트가 상속 받아야 할 interface !!

interface A
{

};

interface IUnknown
{
//interface 얻어오기!!
virtural HRESULT __stdcall QueryInterface(REFIID riid, void ** ppv)=0;
//개체 참조 카운트 증가 !!
virtual ULONG __stdcall AddRef()==0;
//개체 참조 카운트 감소!!
virtual ULONG __stdcall Release()==0;
};

void main()
{
}

'programming > COM(Component Object Model)' 카테고리의 다른 글

컴포넌트 생성 및 접근 (전체 흐름도)  (0) 2010.03.15
INTERFACE  (0) 2010.03.13

+ Recent posts