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 메서드를 호출한다. )

↑TOP