функция обратного вызова 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 предоставляет механизм связи между видеодрайвером минипорта и драйвером дочернего устройства. Драйвер минипорта, предоставляющий такой механизм, должен реализовывать эту функцию.

Видеопорт вызывает HwVidQueryInterface при получении запроса IRP_MN_QUERY_INTERFACE. Если драйвер мини-порта не выполняет вызов, драйвер видеопорта передает запрос родительскому устройству драйвера мини-порта.

HwVidQueryInterface должен заполнить элементы структуры INTERFACE, на которые указывает QueryInterface-Interface>, следующим образом:

  • Задайте для параметра Size значение количества байтов в структуре ИНТЕРФЕЙСА. Это значение не должно превышать число байтов, указанное в параметре QueryInterface->Size.
  • Задайте для свойства Version версию интерфейса, возвращаемого драйвером мини-порта. Драйвер мини-порта должен лучше всего соответствовать версии, запрошенной дочерним драйвером в queryInterface->Version.
  • Задайте контекст, указывающий на контекст, определенный драйвером мини-порта для интерфейса. Как правило, драйвер мини-порта устанавливает контекст , указывающий на расширение устройства, определенное HwDeviceExtension.
  • Инициализируйте InterfaceReference и InterfaceDereference , чтобы указать на реализованные драйвером минипорта процедуры ссылки и разыменования для этого интерфейса.
  • Инициализируйте все дополнительные элементы, относящиеся к интерфейсу, чтобы указать соответствующие подпрограммы предоставляемого интерфейса.
Драйвер минипорта, возвращающий интерфейс, отвечает за ссылку на интерфейс путем вызова QueryInterface->Interface.InterfaceReference. Дочерний драйвер, запрашивающий интерфейс, отвечает за его разыменовку, когда драйверу больше не нужен интерфейс путем вызова QueryInterface->Interface.InterfaceDereference. Если дочерний драйвер передает интерфейс другому компоненту, дочерний компонент отвечает за извлечение другой ссылки, а другой компонент отвечает за удаление дополнительной ссылки, когда ему больше не нужен доступ к интерфейсу. Ссылка позволяет родительскому элементу определить, когда интерфейс по-прежнему требуется дочернему устройству и, следовательно, когда родитель может освободить любые связанные с интерфейсом ресурсы.

Драйвер дочернего устройства может вызывать драйвер мини-порта через функции, предоставляемые HwVidQueryInterface , в любое время без ведома драйвера видеопорта. Следовательно, драйвер минипорта должен синхронизировать доступ к себе, получив и освободив блокировку устройства, поддерживаемую драйвером видеопорта, во всех функциях, предоставляемых HwVidQueryInterface.

Дочернее устройство перечисляется hwVidGetVideoChildDescriptor.

HwVidQueryInterface следует сделать страничной.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть video.h (включить Video.h)

См. также раздел

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock