다음을 통해 공유


IMediaControl::GetState 메서드(control.h)

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

메서드는 GetState 일시 중지, 실행 또는 중지된 필터 그래프의 상태를 검색합니다.

상태 전환이 반드시 동기적인 것은 아닙니다. 따라서 이 메서드를 호출하면 필터 그래프가 새 상태로 전환될 수 있습니다. 이 경우 메서드는 전환이 완료되거나 지정된 시간 초과가 경과할 때까지 차단됩니다.

구문

HRESULT GetState(
  [in]  LONG          msTimeout,
  [out] OAFilterState *pfs
);

매개 변수

[in] msTimeout

제한 시간 제한(밀리초) 또는 INFINITE 기간(무한 제한 시간 지정)입니다.

[out] pfs

FILTER_STATE 열거형의 멤버를 받습니다.

반환 값

HRESULT 값을 반환합니다. 가능한 값은 다음과 같습니다.

반환 코드 Description
S_OK
성공.
VFW_S_STATE_INTERMEDIATE
필터 그래프는 여전히 표시된 상태로 전환 중입니다.
VFW_S_CANT_CUE
필터 그래프가 일시 중지되었지만 데이터를 큐에 표시할 수 없습니다.
E_FAIL
실패.

설명

애플리케이션은 이 메서드를 사용하여 IMediaControl::Run을 호출한 후 재생이 시작되었는지 여부를 확인할 수 있습니다. 일반적으로 애플리케이션에는 필터 그래프를 배치한 상태를 추적하기 위한 고유한 메커니즘이 있어야 합니다. 애플리케이션은 일반적으로 현재 상태를 사용하여 사용하거나 사용하지 않도록 설정된 사용자 인터페이스 컨트롤을 결정합니다. 예를 들어 그래프가 실행 중 상태로 전환되면 애플리케이션에서 "재생" 단추를 사용하지 않도록 설정하고 "중지" 및 "일시 중지" 단추를 사용하도록 설정할 수 있습니다.

필터 그래프가 새 상태로 전환되는 경우 반환된 상태는 이전 상태가 아닌 새 상태입니다.

이 메서드가 차단되는 동안 상태를 변경하는 다른 스레드에 대한 호출이 있는 경우 이 메서드는 오류를 반환합니다.

스레드가 에서 GetState대기하는 동안 메시지를 처리할 수 없으므로 INFINITE의 제한 시간을 지정하지 마십시오. Windows 메시지를 처리하는 스레드에서 를 호출 GetState 하는 경우 사용자 입력에 대한 응답성을 유지하기 위해 호출 시 약간의 대기 시간을 지정합니다. 이러한 환경의 상태 전환이 완료하는 데 훨씬 더 많은 시간이 걸릴 수 있으므로 원본이 네트워크 또는 인터넷을 통해 스트리밍되는 경우 특히 중요합니다.

FILTER_STATE 열거형입니다. 다음과 같이 변수를 캐스팅할 수 있습니다.


FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);

필터 그래프 상태에 대한 자세한 내용은 필터 상태를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 control.h(Dshow.h 포함)
라이브러리 Strmiids.lib

추가 정보

오류 및 성공 코드

IMediaControl 인터페이스