DirectShow DirectShow 레퍼런스 인터페이스 IGraphConfig Reconnect [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
Reconnect 메서드는, 2 개의 핀의 사이의 동적인 재접속을 실행한다.
구문
HRESULT Reconnect(
IPin *pOutputPin,
IPin *pInputPin,
const AM_MEDIA_TYPE *pmtFirstConnection,
IBaseFilter *pUsingFilter,
HANDLE hAbortEvent,
DWORD dwFlags
);
파라미터
pOutputPin
[in] 출력 핀의 포인터. NULL 도 가능. 그 경우,pInputPin 는 NULL 여서는 안 된다.
pInputPin
[in] 입력 핀의 포인터. NULL 도 가능. 그 경우,pOutputPin 는 NULL 여서는 안 된다.
pmtFirstConnection
[in] 재접속의 최초의 핀 접속에 사용하는 미디어 타입을 지정하는 AM_MEDIA_TYPE 구조체의 포인터. 이 인수가 NULL 의 경우, 최초의 접속의 미디어 타입은 한정되지 않는다.
pUsingFilter
[in] 재접속에 사용하는 필터의 포인터 (생략 가능). 필터는 이미 그래프에 포함되지 않으면 안 된다. NULL 도 가능.
hAbortEvent
[in] 이벤트의 핸들. 필터의 데이터 처리 thread의 어느쪽이든으로부터 이 메서드를 호출하는 경우는, 이 인수에, 그 필터가 정지상태태에 바뀌었을 때에 신호 상태가 되는 이벤트의 핸들을 지정해야 한다. 그 이외의 경우, 이 인수는 NULL 로 상관없다. 더 자세한 정보는, 「주의」를 참조할것.
dwFlags
[in] 재접속의 실행 방법을 지정하는 AM_GRAPH_CONFIG_RECONNECT_FLAGS 열거의 플래그의 편성.
반환값
성공했을 경우는 S_OK 를 돌려준다. 그 이외의 경우는, 다음의 몇개의 에러 코드인가, 또는 일람에 나타나지 않은 그 외의 값을 돌려준다.
E_INVALIDARG | 무효인 인수. 예를 들어,pInputPin 와 pOutputPin 의 양쪽 모두에 NULL 가 지정되었을 경우 등. |
E_NOINTERFACE | 입력 핀으로 IPinConnection 가 지원하지 않는다. |
VFW_E_CANNOT_CONNECT | 필터를 접속할 수 없다. |
VFW_E_STATE_CHANGED | 필터 상태가 변화했다. 조작을 완료할 수 없다. |
주의
출력 핀을 1 개만 지정 하면, 메서드는 이제 한편의 핀을 검색한다. 다만 디폴트에서는,IFilterGraph::AddFilter 메서드로 그래프에 추가한 필터가 발견되면 검색이 실패한다. 이 동작을 오버라이드(override) 하려면 ,IGraphConfig::SetFilterFlags 를 호출해 필터의 AM_FILTER_FLAGS_REMOVABLE 플래그를 설정한다.
재접속 처리는 이하의 스텝에서 실행되어 그 대부분은 이 메서드내에서 처리된다.
필터의 데이터 처리 thread의 어느쪽이든으로부터 이 메서드를 호출하면, 데드 록에 빠지는 위험성이 있다. 이 메서드가 필터 그래프를 잠그기 (위해)때문에,IMediaFilter::Stop 의 호출을 받았을 때, 필터를 정지할 수 없을 가능성이 있다. 이 상황을 피하기 (위해)때문에, 이 메서드는 필터가 제공하는 이벤트 개체의 핸들을 이용한다. 필터는, 그 Stop 메서드의 호출을 받으면 이벤트를 통지해야 한다.
참조