Condividi tramite


PVIDEO_HW_QUERY_INTERFACE funzione di callback (video.h)

HwVidQueryInterface restituisce un'interfaccia funzionale implementata da un driver miniport che un dispositivo figlio può chiamare.

Sintassi

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

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

Parametri

HwDeviceExtension

Puntatore all'area di archiviazione per adattatore del driver miniport. Per altre informazioni, vedere Estensioni del dispositivo.

QueryInterface

Puntatore a una struttura QUERY_INTERFACE in cui il driver miniport deve restituire informazioni sull'interfaccia supportata.

Valore restituito

HwVidQueryInterface deve restituire NO_ERROR al successo; in caso contrario, deve restituire il codice di errore appropriato. Ad esempio, un driver miniport deve restituire ERROR_OUTOFMEMORY se non può allocare memoria per completare l'operazione.

Commenti

HwVidQueryInterface espone un meccanismo di comunicazione tra il driver video miniport e il driver di un dispositivo figlio. Un driver miniport che espone tale meccanismo deve implementare questa funzione.

La porta video chiama HwVidQueryInterface quando riceve una richiesta di IRP_MN_QUERY_INTERFACE. Se il driver miniport ha esito negativo, il driver della porta video passa la richiesta all'elemento padre del dispositivo del driver miniport.

HwVidQueryInterface deve compilare i membri della struttura INTERFACE a cui queryInterface-Interface> punta come indicato di seguito:

  • Impostare Dimensioni sul numero di byte nella struttura INTERFACE. Questo valore non deve superare il numero di byte specificati da QueryInterface->Size.
  • Impostare Versione sulla versione dell'interfaccia restituita dal driver miniport. Il driver miniport deve corrispondere meglio alla versione richiesta dal driver figlio in QueryInterface->Version.
  • Impostare Contesto per puntare a un contesto definito dal driver miniport per l'interfaccia. In genere, un driver miniport imposta Contesto per puntare all'estensione del dispositivo identificata da HwDeviceExtension.
  • Inizializza InterfaceReference e InterfaceDereference per puntare alle routine di riferimento e dereferenza implementate dal driver miniport per questa interfaccia.
  • Inizializzare tutti i membri specifici dell'interfaccia aggiuntivi per puntare alle routine appropriate dell'interfaccia esposta.
Un driver miniport che restituisce un'interfaccia è responsabile del riferimento all'interfaccia chiamando QueryInterface->Interface.InterfaceReference. Il driver figlio che richiede l'interfaccia è responsabile della dereferenza quando il driver non richiede più l'interfaccia chiamando QueryInterface->Interface.InterfaceDereference. Se il driver figlio passa l'interfaccia a un altro componente, il figlio è responsabile della rimozione di un altro riferimento e l'altro componente è responsabile della rimozione del riferimento aggiuntivo quando non deve più accedere all'interfaccia. Il riferimento consente a un padre di determinare quando l'interfaccia è ancora richiesta dal dispositivo figlio e di conseguenza quando l'elemento padre può liberare tutte le risorse associate all'interfaccia.

Il driver di un dispositivo figlio può chiamare il driver miniport tramite le funzioni esposte da HwVidQueryInterface in qualsiasi momento senza la conoscenza del driver della porta video. Di conseguenza, il driver miniport deve sincronizzare l'accesso a se stesso acquisendo e rilasciando il blocco del dispositivo gestito dalla porta video in tutte le funzioni esposte da HwVidQueryInterface.

Un dispositivo figlio viene enumerato da HwVidGetVideoChildDescriptor.

HwVidQueryInterface deve essere reso paginabile.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione video.h (includere Video.h)

Vedi anche

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock