IGraphConfig::Reconnect 메서드(strmif.h)
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
메서드는 Reconnect
두 핀 간에 동적 재연결을 수행합니다.
구문
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags
);
매개 변수
[in] pOutputPin
출력 핀의 IPin 인터페이스에 대한 포인터입니다. NULL일 수 있습니다. 이 경우 pInputPin은 NULL이 아니어야 합니다.
[in] pInputPin
IPin 인터페이스를 입력 핀에 포인터로 지정합니다. NULL일 수 있습니다. 이 경우 pOutputPin은 NULL이 아니어야 합니다.
[in] pmtFirstConnection
다시 연결하는 동안 만들어진 첫 번째 핀 연결의 미디어 형식을 지정하는 AM_MEDIA_TYPE 구조체에 대한 포인터입니다. 이 매개 변수가 NULL이면 첫 번째 연결에 미디어 유형이 있을 수 있습니다.
[in] pUsingFilter
다시 연결에 사용할 선택적 필터에 대한 포인터입니다. 필터가 이미 그래프에 있어야 합니다. NULL일 수 있습니다.
[in] hAbortEvent
이벤트에 대한 핸들. 호출자가 데이터 처리 스레드 중 하나에서 호출하는 필터인 경우 이 매개 변수는 필터가 중지된 상태로 전환될 때 신호를 받을 이벤트에 대한 핸들이어야 합니다. 그렇지 않으면 이 매개 변수는 NULL일 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.
[in] dwFlags
다시 연결을 수행하는 방법을 지정하는 AM_GRAPH_CONFIG_RECONNECT_FLAGS 열거형의 플래그 조합입니다.
반환 값
성공하면 S_OK 반환합니다. 그렇지 않으면 다음 값 중 하나일 수 있는 오류 코드 또는 나열되지 않은 다른 값을 반환합니다.
반환 코드 | 설명 |
---|---|
|
인수가 잘못되었습니다. 예를 들어 pInputPin 과 pOutputPin 은 모두 NULL입니다. |
|
입력 핀은 IPinConnection을 지원하지 않습니다. |
|
필터를 연결할 수 없습니다. |
|
필터 상태가 변경되었습니다. 작업을 완료할 수 없습니다. |
설명
핀을 하나만 지정하면 메서드가 다른 핀을 검색합니다. 그러나 기본적으로 IFilterGraph::AddFilter 메서드를 통해 그래프에 추가된 필터에 도달하면 검색이 실패합니다. 이 동작을 재정의하려면 IGraphConfig::SetFilterFlags를 호출하고 필터에서 AM_FILTER_FLAGS_REMOVABLE 플래그를 설정합니다.
다시 연결 프로세스에는 여러 단계가 포함되며, 대부분은 이 메서드 내에서 처리됩니다.
- 먼저 메서드를 호출하기 전에 다시 구성되는 경로를 따라 데이터 흐름을 차단해야 합니다. 이렇게 하려면 애플리케이션에서 IPinFlowControl::Block 메서드를 호출해야 합니다. 호출자가 애플리케이션이 아닌 필터인 경우 필터가 내부적으로 데이터 흐름을 제어할 수 있습니다.
- 지정된 출력 및 입력 핀은 다시 연결의 시작점과 끝점을 정의합니다. 입력 핀은 IPinConnection 인터페이스를 지원해야 합니다. NULL 매개 변수를 전달하여 이러한 핀 중 하나를 지정하지 않은 상태로 두면 메서드는 필터 그래프를 검색하여 다시 연결할 후보 핀을 찾습니다. 입력 핀을 찾으려면 출력 핀에서 다운스트림을 검색하고 출력 핀을 찾으려면 입력 핀에서 업스트림 검색합니다.
- 메서드는 필터 그래프를 통해 보류 중인 데이터를 푸시합니다( IGraphConfig::P ushThroughData)에 대한 내부 호출을 통해.
- 그래프에 삽입할 필터를 지정한 경우 메서드는 시작 출력 핀을 필터의 입력 핀에 연결하고 필터의 출력 핀을 최종 입력 핀에 연결합니다. 필터를 지정하지 않으면 메서드는 출력 핀을 입력 핀에 연결하기만 하면 됩니다. 두 경우 모두 메서드는 연결을 완료하는 데 필요한 변환 필터를 삽입합니다. (그러나 적절한 플래그를 설정하여 이 동작을 재정의할 수 있습니다. 자세한 내용은 dwFlags 매개 변수에 대한 설명을 참조하세요.)
- 마지막으로 메서드는 새 필터를 실행 중 상태로 배치합니다. 데이터 흐름을 다시 시작하는 것은 호출자에게 달려 있습니다. 애플리케이션은 플래그 없이 IPinFlowControl::Block 을 호출하여 이 작업을 수행할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | strmif.h(Dshow.h 포함) |
라이브러리 | Strmiids.lib |