다음을 통해 공유


IMediaEvent::GetEventHandle 메서드(control.h)

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

메서드는 GetEventHandle 큐에 이벤트 알림이 포함된 동안 신호가 유지되는 수동 재설정 이벤트에 대한 핸들을 검색합니다.

구문

HRESULT GetEventHandle(
  [out] OAEVENT *hEvent
);

매개 변수

[out] hEvent

이벤트 핸들을 수신하는 변수에 대한 포인터입니다.

반환 값

S_OK 반환합니다.

설명

Filter Graph Manager는 이벤트 큐의 상태를 반영하는 수동 재설정 이벤트를 유지합니다. 큐에 이벤트 알림이 포함된 경우 수동 재설정 이벤트에 신호가 전송됩니다. 큐가 비어 있으면 IMediaEvent::GetEvent 메서드가 이벤트를 다시 설정합니다.

애플리케이션은 이 이벤트를 사용하여 큐의 상태를 확인할 수 있습니다. 이벤트에 대한 핸들을 가져오기 위한 첫 번째 호출 GetEventHandle 입니다. WaitForSingleObject와 같은 함수를 사용하여 이벤트가 신호를 받을 때까지 기다립니다. 이벤트가 신호를 받으면 IMediaEvent::GetEvent 메서드를 호출하여 큐에서 다음 이벤트 알림을 검색합니다. Filter Graph Manager는 큐가 비어 있는 상태가 될 때까지 이벤트를 신호로 유지합니다. 그런 다음 이벤트를 다시 설정합니다.

이벤트 핸들은 필터 그래프에서 내부적으로 사용되므로 이 메서드에서 반환된 이벤트 핸들을 닫지 마세요. 또한 필터 그래프 관리자가 제거된 후 핸들이 유효하지 않으므로 Filter Graph Manager를 해제한 후에는 핸들을 사용하지 마세요. 이 오류를 방지하려면 DuplicateHandle을 호출하여 핸들을 복제하고 원래 핸들 대신 중복을 사용하는 것이 좋습니다. 완료되면 중복 핸들을 닫습니다.)

Automation 호환성을 위해 이 메서드는 OAEVENT 형식에 대한 포인터를 사용합니다. C++에서 HANDLE 형식의 변수를 선언하고 다음과 같이 OAEVENT 포인터로 캐스팅합니다.


HANDLE hEvent;
GetEventHandle( (OAEVENT*) &hEvent );

애플리케이션이 이벤트 큐를 모니터링하는 또 다른 방법은 IMediaEventEx::SetNotifyWindow 메서드를 호출하는 것입니다.

요구 사항

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

추가 정보

오류 및 성공 코드

IMediaEvent 인터페이스