다음을 통해 공유


IResourceManager::SetFocus 메서드(strmif.h)

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

메서드는 SetFocus 지정된 개체에 사용자의 포커스가 지정되었음을 리소스 관리자에게 알 수 있습니다.

구문

HRESULT SetFocus(
  [in] IUnknown *pFocusObject
);

매개 변수

[in] pFocusObject

사용자의 포커스가 지정된 개체에 대한 포인터입니다.

반환 값

구현에 따라 달라지는 HRESULT 값을 반환합니다. HRESULT 는 다음 표준 상수 또는 나열되지 않은 다른 값 중 하나일 수 있습니다.

반환 코드 설명
E_FAIL
실패.
E_POINTER
NULL 포인터 인수입니다.
E_INVALIDARG
인수가 잘못되었습니다.
E_NOTIMPL
메서드는 지원되지 않습니다.
S_OK 또는 NOERROR
성공.

설명

DirectShow에서 사용자의 포커스가 지정된 개체는 일반적으로 창에서 포커스를 받은 비디오 렌더러입니다. 리소스 관리자는 다음 순서대로 리소스 요청에 우선 순위를 부여합니다.

  1. pFocusObject 매개 변수에 지정된 포커스 개체를 사용하여 수행한 요청입니다.
  2. 포커스 개체가 공통 소스 필터를 공유하는 요청입니다.
  3. 포커스 개체가 공통 필터 그래프를 공유하는 요청입니다.
  4. 포커스와 동일한 프로세스의 요청입니다.
포커스가 설정된 후에는 ReleaseFocus 가 호출될 때까지 리소스 관리자가 포커스 개체를 유지 관리해야 합니다. 즉, 이 메서드를 호출한 후 포커스 개체의 IUnknown 인터페이스가 유효하지 않게 되기 전에 ReleaseFocus를 사용해야 합니다. 단, 그 동안 다른 개체에서 호출되도록 SetFocus 보장할 수 없습니다. 포커스 개체에 대한 참조 수가 없습니다.

리소스 관리자는 이 포인터를 바꾸거나 취소할 때까지 유지하며 이를 사용하여 리소스 경합을 resolve. 적어도 IBaseFilter 인터페이스에 QueryInterface를 사용하고, 있는 경우 해당 인터페이스에서 메서드를 사용합니다. IBaseFilter에서 메서드를 호출하여 두 가지가 있는 경우 사용할 오디오 렌더러를 결정하고(포커스 개체에 공통된 원본 필터가 있는 오디오 필터를 선택함) 두 개체가 동일한 필터 그래프 내에 있는지 확인합니다.

요구 사항

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

추가 정보

오류 및 성공 코드

IResourceManager 인터페이스