PVIDEO_HW_QUERY_INTERFACE 콜백 함수(video.h)

HwVidQueryInterface 는 자식 디바이스가 호출할 수 있는 미니포트 드라이버 구현 기능 인터페이스를 반환합니다.

구문

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

VP_STATUS PvideoHwQueryInterface(
  PVOID HwDeviceExtension,
  PQUERY_INTERFACE QueryInterface
)
{...}

매개 변수

HwDeviceExtension

미니포트 드라이버의 어댑터별 스토리지 영역에 대한 포인터입니다. 자세한 내용은 디바이스 확장을 참조하세요.

QueryInterface

미니포트 드라이버가 지원하는 인터페이스에 대한 정보를 반환해야 하는 QUERY_INTERFACE 구조체에 대한 포인터입니다.

반환 값

HwVidQueryInterface 는 성공 시 NO_ERROR 반환해야 합니다. 그렇지 않으면 적절한 오류 코드를 반환해야 합니다. 예를 들어 미니포트 드라이버는 메모리를 할당하여 작업을 완료할 수 없는 경우 ERROR_OUTOFMEMORY 반환해야 합니다.

설명

HwVidQueryInterface 는 비디오 미니포트 드라이버와 자식 디바이스의 드라이버 간의 통신 메커니즘을 노출합니다. 이러한 메커니즘을 노출하는 미니포트 드라이버는 이 함수를 구현해야 합니다.

비디오 포트는 IRP_MN_QUERY_INTERFACE 요청을 받으면 HwVidQueryInterface 를 호출합니다. 미니포트 드라이버가 호출에 실패하면 비디오 포트 드라이버가 미니포트 드라이버 디바이스의 부모에 요청을 전달합니다.

HwVidQueryInterfaceQueryInterface-Interface>가 가리키는 INTERFACE 구조체의 멤버를 다음과 같이 채워야 합니다.

  • INTERFACE 구조의 바이트 수로 크기를 설정합니다. 이 값은 QueryInterface-> Size에 지정된 바이트 수를 초과해서는 안됩니다.
  • 버전을 미니포트 드라이버에서 반환되는 인터페이스 버전으로 설정합니다. 미니포트 드라이버는 QueryInterface-> 버전에서 자식 드라이버가 요청한버전과 가장 일치해야 합니다.
  • 인터페이스에 대한 미니포트 드라이버 정의 컨텍스트를 가리키도록 컨텍스트 를 설정합니다. 일반적으로 미니포트 드라이버는 컨텍스트HwDeviceExtension으로 식별된 디바이스 확장을 가리키도록 설정합니다.
  • 이 인터페이스에 대한 미니포트 드라이버 구현 참조 및 역참조 루틴을 가리키도록 InterfaceReference 및 InterfaceDereference를 초기화합니다.
  • 노출되는 인터페이스의 적절한 루틴을 가리키도록 모든 추가 인터페이스별 멤버를 초기화합니다.
인터페이스를 반환하는 미니포트 드라이버는 QueryInterface->Interface.InterfaceReference를 호출하여 인터페이스를 참조합니다. 인터페이스를 요청하는 자식 드라이버는 QueryInterface->Interface.InterfaceDereference를 호출하여 드라이버에 더 이상 인터페이스가 필요하지 않은 경우 인터페이스를 역참조합니다. 자식 드라이버가 인터페이스를 다른 구성 요소에 전달하는 경우 자식은 다른 참조를 제거해야 하며 다른 구성 요소는 인터페이스에 더 이상 액세스할 필요가 없는 경우 추가 참조를 제거해야 합니다. 참조를 사용하면 부모가 자식 디바이스에서 인터페이스가 여전히 필요한 시기와 결과적으로 부모가 인터페이스 관련 리소스를 해제할 수 있는 시기를 결정할 수 있습니다.

자식 디바이스의 드라이버는 비디오 포트 드라이버의 지식 없이 언제든지 HwVidQueryInterface 에 의해 노출되는 함수를 통해 미니포트 드라이버를 호출할 수 있습니다. 따라서 미니포트 드라이버는 HwVidQueryInterface에서 노출하는 모든 함수에서 비디오 포트 드라이버 유지 관리 디바이스 잠금을 획득하고 해제하여 자체에 대한 액세스를 동기화해야 합니다.

자식 디바이스는 HwVidGetVideoChildDescriptor로 열거됩니다.

HwVidQueryInterface 를 페이징 가능으로 만들어야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 video.h(Video.h 포함)

추가 정보

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock