Freigeben über


PVIDEO_HW_QUERY_INTERFACE Rückruffunktion (video.h)

HwVidQueryInterface gibt eine vom Miniport treiber implementierte funktionale Schnittstelle zurück, die ein untergeordnetes Gerät aufrufen kann.

Syntax

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

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

Parameter

HwDeviceExtension

Zeigen Sie auf den Speicherbereich des Miniporttreibers pro Adapter. Weitere Informationen finden Sie unter Geräteerweiterungen.

QueryInterface

Zeiger auf eine QUERY_INTERFACE Struktur, in der der Miniporttreiber Informationen zur unterstützten Schnittstelle zurückgeben soll.

Rückgabewert

HwVidQueryInterface- sollte nach Erfolg NO_ERROR zurückgeben; andernfalls sollte der entsprechende Fehlercode zurückgegeben werden. Ein Miniporttreiber sollte z. B. ERROR_OUTOFMEMORY zurückgeben, wenn der Speicher nicht zum Abschließen des Vorgangs zugeordnet werden kann.

Bemerkungen

HwVidQueryInterface macht einen Kommunikationsmechanismus zwischen dem Videominiporttreiber und dem Treiber eines untergeordneten Geräts verfügbar. Ein Miniporttreiber, der einen solchen Mechanismus verfügbar macht, sollte diese Funktion implementieren.

Der Videoport ruft HwVidQueryInterface auf, wenn es eine IRP_MN_QUERY_INTERFACE Anforderung empfängt. Wenn der Miniporttreiber den Anruf fehlschlägt, übergibt der Videoporttreiber die Anforderung an das übergeordnete Element des Miniporttreibers.

HwVidQueryInterface- sollte die Member der INTERFACE Struktur ausfüllen, auf die QueryInterface-->Interface Punkte wie folgt:

  • Legen Sie Größe auf die Anzahl der Bytes in der INTERFACE-Struktur fest. Dieser Wert darf die Anzahl der by QueryInterface->Sizeangegebenen Bytes nicht überschreiten.
  • Legen Sie Version auf die Version der Schnittstelle fest, die vom Miniporttreiber zurückgegeben wird. Der Miniporttreiber sollte am besten mit der vom untergeordneten Treiber in QueryInterface->Versionangeforderten Version übereinstimmen.
  • Legen Sie Kontext- so fest, dass sie auf einen vom Miniporttreiber definierten Kontext für die Schnittstelle verweist. In der Regel würde ein Miniporttreiber Context- so festlegen, dass er auf die von HwDeviceExtensionidentifizierte Geräteerweiterung verweist.
  • Initialisieren Sie InterfaceReference und InterfaceDereference-, um auf die referenz- und dereferenzierungsroutinen für diese Schnittstelle zu verweisen.
  • Initialisieren Sie alle zusätzlichen schnittstellenspezifischen Member, um auf die entsprechenden Routinen der verfügbar gemachten Schnittstelle zu verweisen.
Ein Miniporttreiber, der eine Schnittstelle zurückgibt, ist dafür verantwortlich, auf die Schnittstelle zu verweisen, indem QueryInterface->Interface.InterfaceReferenceaufgerufen wird. Der untergeordnete Treiber, der die Schnittstelle anfordert, ist für die Ableitung verantwortlich, wenn der Treiber die Schnittstelle nicht mehr benötigt, indem QueryInterface->Interface.InterfaceDereferenceaufgerufen wird. Wenn der untergeordnete Treiber die Schnittstelle an eine andere Komponente übergibt, ist das untergeordnete Element dafür verantwortlich, einen anderen Verweis zu entfernen, und die andere Komponente ist dafür verantwortlich, den zusätzlichen Verweis zu entfernen, wenn er keinen Zugriff mehr auf die Schnittstelle benötigt. Durch Verweisen kann ein übergeordnetes Element bestimmen, wann die Schnittstelle noch vom untergeordneten Gerät benötigt wird, und folglich, wenn das übergeordnete Element alle schnittstellenbezogenen Ressourcen freigeben kann.

Der Treiber eines untergeordneten Geräts kann den Miniporttreiber über die Funktionen aufrufen, die von HwVidQueryInterface jederzeit ohne das Wissen des Videoporttreibers verfügbar gemacht werden. Folglich muss der Miniporttreiber den Zugriff auf sich selbst synchronisieren, indem er die vom Videoporttreiber verwaltete Gerätesperre in allen Funktionen erwirbt und freigibt, die von HwVidQueryInterfaceverfügbar gemacht werden.

Ein untergeordnetes Gerät wird von HwVidGetVideoChildDescriptoraufgezählt.

HwVidQueryInterface sollte seitenfähig gemacht werden.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- video.h (video.h einschließen)

Siehe auch

HwVidGetVideoChildDescriptor-

QUERY_INTERFACE

VideoPortAcquireDeviceLock-

VideoPortReleaseDeviceLock-