Compartilhar via


PVIDEO_HW_QUERY_INTERFACE função de retorno de chamada (video.h)

HwVidQueryInterface retorna uma interface funcional implementada pelo driver de miniporto que um dispositivo filho pode chamar.

Sintaxe

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

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

Parâmetros

HwDeviceExtension

Ponteiro para a área de armazenamento por adaptador do driver de miniport. Para obter mais informações, consulte Extensões de dispositivo.

QueryInterface

Ponteiro para uma estrutura QUERY_INTERFACE na qual o driver de miniporto deve retornar informações sobre a interface à qual ele dá suporte.

Retornar valor

HwVidQueryInterface deve retornar NO_ERROR após o sucesso; caso contrário, ele deve retornar o código de erro apropriado. Por exemplo, um driver de miniporto deverá retornar ERROR_OUTOFMEMORY se não puder alocar memória para concluir a operação.

Comentários

HwVidQueryInterface expõe um mecanismo de comunicação entre o driver de miniporto de vídeo e o driver de um dispositivo filho. Um driver de miniporta que expõe esse mecanismo deve implementar essa função.

A porta de vídeo chama HwVidQueryInterface quando recebe uma solicitação de IRP_MN_QUERY_INTERFACE. Se o driver de miniporta falhar na chamada, o driver da porta de vídeo passará a solicitação para o pai do dispositivo do driver de miniporto.

HwVidQueryInterface deve preencher os membros da estrutura INTERFACE à qual QueryInterface-Interface> aponta da seguinte maneira:

  • Defina Tamanho como o número de bytes na estrutura INTERFACE. Esse valor não deve exceder o número de bytes especificado por QueryInterface->Size.
  • Defina Versão como a versão da interface que está sendo retornada pelo driver de miniport. O driver de miniporta deve corresponder melhor à versão solicitada pelo driver filho em QueryInterface->Version.
  • Defina Contexto para apontar para um contexto definido pelo driver de miniporto para a interface. Normalmente, um driver de miniporto definiria Contexto para apontar para a extensão de dispositivo identificada por HwDeviceExtension.
  • Inicialize InterfaceReference e InterfaceDereference para apontar para as rotinas de referência e desreferência implementadas pelo driver de miniport para essa interface.
  • Inicialize todos os membros adicionais específicos da interface para apontar para as rotinas apropriadas da interface que está sendo exposta.
Um driver de miniporta que retorna uma interface é responsável por referenciar a interface chamando QueryInterface->Interface.InterfaceReference. O driver filho que solicita a interface é responsável por desreferenciar quando o driver não exige mais a interface chamando QueryInterface->Interface.InterfaceDereference. Se o driver filho passar a interface para outro componente, o filho será responsável por remover outra referência e o outro componente será responsável por remover a referência adicional quando não precisar mais de acesso à interface. A referência permite que um pai determine quando a interface ainda é exigida pelo dispositivo filho e, consequentemente, quando o pai pode liberar qualquer recurso associado à interface.

O driver de um dispositivo filho pode chamar o driver de miniporta por meio das funções expostas por HwVidQueryInterface a qualquer momento sem o conhecimento do driver de porta de vídeo. Consequentemente, o driver de miniporto deve sincronizar o acesso a si mesmo adquirindo e liberando o bloqueio de dispositivo mantido pelo driver de porta de vídeo em todas as funções expostas por HwVidQueryInterface.

Um dispositivo filho é enumerado por HwVidGetVideoChildDescriptor.

HwVidQueryInterface deve ser tornado paginável.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho video.h (incluir Video.h)

Confira também

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock