Поделиться через


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

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

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

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

HwVidQueryInterface должны быть доступны для страниц.

Требования

Требование Ценность
целевая платформа Настольный
заголовка video.h (include Video.h)

См. также

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock