Compartir a través de


PVIDEO_HW_QUERY_INTERFACE función de devolución de llamada (video.h)

HwVidQueryInterface devuelve una interfaz funcional implementada por el controlador miniport que un dispositivo secundario puede llamar.

Sintaxis

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

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

Parámetros

HwDeviceExtension

Puntero al área de almacenamiento por adaptador del controlador de miniporte. Para obtener más información, consulte Extensiones de dispositivo.

QueryInterface

Puntero a una estructura de QUERY_INTERFACE en la que el controlador de minipuerto debe devolver información sobre la interfaz que admite.

Valor devuelto

HwVidQueryInterface debe devolver NO_ERROR tras el éxito; de lo contrario, debe devolver el código de error adecuado. Por ejemplo, un controlador de minipuerto debe devolver ERROR_OUTOFMEMORY si no puede asignar memoria para completar la operación.

Comentarios

HwVidQueryInterface expone un mecanismo de comunicación entre el controlador de minipuerto de vídeo y el controlador de un dispositivo secundario. Un controlador de minipuerto que expone este mecanismo debe implementar esta función.

El puerto de vídeo llama a HwVidQueryInterface cuando recibe una solicitud de IRP_MN_QUERY_INTERFACE. Si el controlador de minipuerto produce un error en la llamada, el controlador de puerto de vídeo pasa la solicitud al elemento primario del dispositivo del controlador de miniporte.

HwVidQueryInterface debe rellenar los miembros de la estructura INTERFACE a la que queryInterface-Interface> apunta de la siguiente manera:

  • Establezca Tamaño en el número de bytes de la estructura INTERFACE. Este valor no debe superar el número de bytes especificados por QueryInterface->Size.
  • Establezca Versión en la versión de la interfaz devuelta por el controlador de miniport. El controlador de minipuerto debe coincidir mejor con la versión solicitada por el controlador secundario en QueryInterface Version( Versión de QueryInterface->).
  • Establezca Contexto para que apunte a un contexto definido por el controlador de miniport para la interfaz. Normalmente, un controlador de minipuerto establecería Context para que apunte a la extensión del dispositivo identificada por HwDeviceExtension.
  • Inicialice InterfaceReference e InterfaceDereference para que apunte a las rutinas de referencia y desreferencia implementadas por el controlador de miniporte para esta interfaz.
  • Inicialice todos los miembros adicionales específicos de la interfaz para que apunten a las rutinas adecuadas de la interfaz que se exponen.
Un controlador de miniporte que devuelve una interfaz es responsable de hacer referencia a la interfaz mediante una llamada a QueryInterface->Interface.InterfaceReference. El controlador secundario que solicita la interfaz es responsable de desreferenciarlo cuando el controlador ya no requiere la interfaz llamando a QueryInterface->Interface.InterfaceDereference. Si el controlador secundario pasa la interfaz a otro componente, el elemento secundario es responsable de sacar otra referencia y el otro componente es responsable de quitar la referencia adicional cuando ya no necesita acceso a la interfaz. La referencia permite a un elemento primario determinar cuándo el dispositivo secundario sigue necesitando la interfaz y, por consiguiente, cuando el elemento primario puede liberar cualquier recurso asociado a la interfaz.

El controlador de un dispositivo secundario puede llamar al controlador de minipuerto a través de las funciones expuestas por HwVidQueryInterface en cualquier momento sin el conocimiento del controlador de puerto de vídeo. Por lo tanto, el controlador de minipuerto debe sincronizar el acceso a sí mismo mediante la adquisición y liberación del bloqueo del dispositivo mantenido por el controlador de puerto de vídeo en todas las funciones expuestas por HwVidQueryInterface.

HwVidGetVideoChildDescriptor enumera un dispositivo secundario.

HwVidQueryInterface debe ser paginable.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado video.h (incluya Video.h)

Consulte también

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock