DirectShow DirectShow 레퍼런스 인터페이스 ICreateDevEnum CreateClassEnumerator [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
CreateClassEnumerator 메서드는, 지정된 장치 카테고리의 열거자를 생성 한다.
구문
HRESULT CreateClassEnumerator(
REFCLSID clsidDeviceClass,
IEnumMoniker **ppEnumMoniker,
DWORD dwFlags
);
파라미터
clsidDeviceClass
[in] 장치 카테고리의 클래스 식별자 (CLSID)를 지정한다. 「필터 카테고리」를 참조할것.
ppEnumMoniker
[out] IEnumMoniker 인터페이스 포인터를 받는 변수의 주소.
dwFlags
[in] 제로 혹은 복수의 플래그의 비트의 편성. 제로의 경우는, 메서드는 카테고리의 모든 필터를 열거한다. 임의의 플래그가 설정되어 있는 경우, 열거에는 지정된 플래그와 일치하는 필터만이 포함된다. 다음의 플래그가 정의되고 있다.
플래그 | 설명 |
CDEF_DEVMON_CMGR_DEVICE | 오디오 압축 매니저 (ACM) 또는 비디오 압축 매니저 (VCM)를 사용해, 오디오 CODEC 또는 비디오 CODEC 를 열거한다. |
CDEF_DEVMON_DMO | DirectX Media Object (DMO)를 열거한다. |
CDEF_DEVMON_FILTER | 이용 가능한 DirectShow 필터를 열거한다. |
CDEF_DEVMON_PNP_DEVICE | 플러그 앤 플레이 하드웨어 장치를 열거한다. |
반환값
다음의 몇개의 HRESULT 값을 돌려준다.
반환 코드 | 설명 |
S_OK | 성공. |
E_OUTOFMEMORY | 클래스 열거자를 생성 하는데 충분한 메모리를 이용할 수 없다. |
S_FALSE | clsidDeviceClass 에 의해 지정된 카테고리가 존재하지 않는지, 하늘이다. |
E_POINTER | NULL 포인터 인수. |
주의
카테고리가 존재하지 않는지, 하늘의 경우, 반환값은 S_FALSE 로,ppEnumMoniker 인수는 값 NULL 를 받는다. 따라서,SUCCEEDED 매크로를 사용하는 대신에, 반환값 S_OK 에 대해 테스트한다.
IEnumMoniker *pEnum = NULL;
hr = pSysDevEnum->CreateClassEnumerator(
CLSID_VideoCompressorCategory, &pEnum, 0);
if (hr == S_OK)
{
// 안전하게 pEnum 를 참조 해제한다.
pEnum->Release();
}
돌려받는 IEnumMoniker 인터페이스에 미처리의 참조 카운트가 남는다. 호출원래는, 그 인터페이스를 반드시 릴리즈 해야 한다.
참조