DirectShow DirectShow 의 사용법 DirectShow 의 기본 태스크 필터 그래프내의 개체의 열거 핀의 열거 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
필터가 지원 하는 IBaseFilter::EnumPins 메서드가, 필터로 사용할 수 있는 핀을 열거한다. 이것은,IEnumPins 인터페이스의 포인터를 돌려준다. IEnumPins::Next 메서드는,IPin 인터페이스 포인터를 얻어온다.
이하의 예에 나타내는 함수는, 주어진 필터상에서 주어진 방향 (입력 또는 출력)의 핀을 찾아낸다. 이 함수는,PIN_DIRECTION 의 열거를 사용해 핀의 방향을 지정해,IPin::QueryDirection 메서드를 사용해 열거된 각 핀의 방향을 찾아낸다. 이 함수는, 일치하는 핀을 찾아내면 미처리의 참조 카운트를 가지는 IPin 인터페이스 포인터를 돌려준다. 인터페이스의 릴리즈는, 호출원이 실시해야 한다.
IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir)
{
BOOL bFound = FALSE;
IEnumPins *pEnum;
IPin *pPin;
HRESULT hr = pFilter->EnumPins(&pEnum);
if (FAILED(hr))
{
return NULL;
}
while(pEnum->Next(1, &pPin, 0) == S_OK)
{
PIN_DIRECTION PinDirThis;
pPin->QueryDirection(&PinDirThis);
if (bFound = (PinDir == PinDirThis))
break;
pPin->Release();
}
pEnum->Release();
return (bFound ? pPin : NULL);
}
이 함수를 변경 하면, 지정한 방향의 n 번째의 핀이나 n 번째의 미접속의 핀을 간단하게 돌려줄 수 있다. (핀이 다른 핀에 접속되고 있는지를 조사하려면 ,IPin::ConnectedTo 메서드를 호출한다. )