본문 바로가기

API / MFC/DirectShow

CoInitialize, CoInitializeEx, CoUninitialize 키워드

- 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