- CoInitialize
=> 현재 스레드에서 COM library를 초기화 하거나 STA 같은 동시성 모델을 식별함
새 응용프로그램은 CoInitialize대신에 CoInitializeEx를 호출 해야 함
//ObjBase.h
__checkReturn WINOLEAPI CoInitialize(__in_opt LPVOID pvReserved);
pvReserved => NULL로 정해져 있음
- CoInitializeEx
=> 호출 스레드를 사용하는 COM library를 초기화 하고, 스레드의 동시성 모델을 설정하고,
필요한 경우 스레드의 apartment를 생성한다.
아파트먼트(Apartment) => 아파트먼트는 같은 스레딩 모델을 공유하는 객체들이 존재하는 곳
출처 : http://blog.naver.com/erich0157?Redirect=Log&logNo=18044553
//ObjBase.h __checkReturn WINOLEAPI CoInitializeEx(__in_opt LPVOID pvReserved, __in DWORD dwCoInit);
pvReserved => NULL로 정해져 있음
dwCoInit => 기본값 : COINIT_MULTITHREADED
스레드의 동시성 모델 및 초기화 옵션
이 매개변수는 COINIT 열거형에 있는 값
COINIT_APARTMENTTHREADEDCOINIT와 COINIT_MULTITHREADED 플래그를 같이 사용할 수 없다는 점을
제외한 COINIT 열거형에 있는 값을 모두 조합 할 수 있음
COINIT Enumeration
┣ COINIT_APARTMENTTHREADED
┣ COINIT_MULTITHREADED
┣ COINIT_DISABLE_OLE1DDE
┗ COINIT_SPEED_OVER_MEMORY
- CoUninitialize
=> 현재 스레드의 COM 라이브러리를 닫고, 스레드가 로드된 모든 DLL를 unload 시키며,
다른 스레드 유지하는 리소스를 할당 해제 시키며, 강제로 스레드에 연결하는 모든 RPC를 닫음
//ObjBase.h WINOLEAPI_(void) CoUninitialize(void);
참조
CoInitialize : http://msdn.microsoft.com/en-us/library/ms678543(VS.85).aspx
CoInitializeEx : http://msdn.microsoft.com/en-us/library/ms695279(VS.85).aspx
COINIT : http://msdn.microsoft.com/en-us/library/ms678505(VS.85).aspx
CoUninitialize : http://msdn.microsoft.com/en-us/library/ms688715(VS.85).aspx
'API / MFC > DirectShow' 카테고리의 다른 글
IUnknown Interface (0) | 2010.03.17 |
---|---|
음원 재생에 필요한 인터페이스 (0) | 2010.03.16 |
IGraphBuilder::RenderFile 함수 (0) | 2010.03.12 |
IUnknown::QueryInterface 함수 (1) | 2010.03.12 |
CoCreateInstance 키워드 (0) | 2010.03.12 |