Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der USB-Videoklassentreiber macht Erweiterungseinheiten als Knoten im USB-Video-KS-Proxyfilter verfügbar. Die Steuerelemente der Erweiterungseinheit werden im Benutzermodus als Eigenschaftensatz auf dem Knoten verfügbar gemacht, der vom Typ KSNODETYPE_DEV_SPECIFIC ist. Die GUID des Eigenschaftensatzes entspricht der GUID des Erweiterungseinheitsdeskriptors.
Die einzelnen Erweiterungseinheitssteuerelemente sollten kontinuierlich von 1 bis zu einem höchsten Wert n nummeriert werden. Diese Steuerelemente werden direkt eigenschaftenbezeichnern (IDs) im Eigenschaftensatz der Erweiterungseinheit zugeordnet und können über IKsControl mithilfe von Standard-KSPROPERTY-Anforderungen aufgerufen werden.
Als Antwort auf Eigenschaftsanfragen von Anwendungen gibt der UVC-Treiber Eigenschaftswerte zurück, bei denen das MembersFlags-Mitglied der KSPROPERTY_MEMBERSHEADER-Struktur ausschließlich auf KSPROPERTY_MEMBER_RANGES festgelegt ist. UVC unterstützt keine Stufenbereiche oder Erweiterungseinheitsstandardwerte beliebiger Länge.
Um Erweiterungseinheitseigenschaften für eine Anwendung verfügbar zu machen, können Sie eine Plug-In-DLL für den Benutzermodus schreiben, die eine COM-API verfügbar macht. Sie können diese API implementieren, indem Sie Anforderungen an die KS-Eigenschaft vornehmen, indem Sie die IKsControl-Schnittstelle verwenden. Vidcap.ax lädt automatisch das Knotenschnittstellen-Plug-In basierend auf bestimmten Registrierungseinträgen. Eine Anwendung kann über IKsTopologyInfo::CreateNodeInstance gefolgt von einem Aufruf von QueryInterface im Knotenobjekt auf die Schnittstelle zugreifen, um die erforderliche COM-API abzurufen.
Die folgenden Elemente sind erforderlich, um ein Erweiterungseinheit-Plug-In zu schreiben und zu verwenden:
Eine Header- und CPP-Datei, die die Erweiterungseinheits-API und eine Schnittstelle namens "IKsNodeControl" implementiert. Vidcap.ax verwendet die IKsNodeControl-Schnittstelle, um das Plug-In über den Erweiterungsknotenbezeichner zu informieren und ihm eine Instanz von IKsControl zur Verfügung zu stellen. Beispielcode für diese Dateien finden Sie in der DLL des Beispielerweiterungsmodul-Plug-Ins.
Eine .rgs-Datei, die die Knotenschnittstellen und Klassen-IDs (CLSIDs) unter dem Registrierungsunterschlüssel HKLM\System\CCS\Control\NodeInterfaces\Property_Set_GUID registriert. Die Einträge in diesem Registrierungsunterschlüssel enthalten die Binärwerte für die Schnittstellen-ID (IID) und CLSID. Weitere Informationen finden Sie unter Beispiel für einen Registrierungseintrag für UVC-Erweiterungseinheiten.
Eine Anwendung, die diese Schnittstelle aufruft. Die Anwendung erstellt zunächst eine Knoteninstanz mit der richtigen Knoten-ID mithilfe von IKsTopologyInfo::CreateNodeInstance. Die Anwendung ruft dann QueryInterface in der Knoteninstanz auf, um die erforderliche Erweiterungseinheitsschnittstelle abzurufen. Weitere Informationen finden Sie unter Beispielanwendung für UVC-Erweiterungseinheiten und Unterstützung von AutoUpdate-Ereignissen mit Erweiterungseinheiten.
Die Codebeispiele in diesem Abschnitt veranschaulichen alle diese Elemente. Informationen zum Erstellen des Beispiel-Plug-Ins und zugehörigem Beispielanwendungscode finden Sie unter Erstellen des Erweiterungseinheits-Beispielsteuerelements .
Nachdem die Plug-In-DLL registriert wurde und die oben beschriebenen Registrierungseinträge bereitgestellt werden, lädt Vidcap.ax automatisch die relevanten Knotenschnittstellen, wenn die Knoteninstanz erstellt wird.
Anmerkung Ab Windows XP SP2 wird der Eigenschaftensatz "Erweiterungseinheit" nur für den Knoten und nicht für den Filter unterstützt.
Überlegungen zur Registrierung
Um die IID- und CLSID der Schnittstelle zu registrieren, die vom Plug-In exportiert wird, können Sie die DLL-Registrierung oder eine gerätespezifische Setupinformationsdatei (INF) verwenden.
Siehe Beispielregistrierungseintrag für UVC-Erweiterungseinheiten für eine Beispieldatei .rgs, die die erforderlichen Werte für die Registrierungseinträge zeigt. In diesem Thema wird auch das Schreiben einer gerätespezifischen INF-Datei zum Installieren eines USB-Videogeräts und zum Registrieren der Plug-In-DLL veranschaulicht. Sie können entweder eine DLL-Registrierung oder eine gerätespezifische INF-Datei basierend auf Ihren spezifischen Anforderungen auswählen.
Schematisch
Das folgende schematische Diagramm zeigt die Beziehungen zwischen den verschiedenen Modulen, die beim Schreiben und Verwenden eines Erweiterungseinheit-Plug-Ins beteiligt sind. Insbesondere wird die Verbindung von der Anwendung bis zur Plug-In-DLL, bis zum Treiber und schließlich zur Erweiterungseinheit auf dem Gerät selbst verfolgt. Das Schematische veranschaulicht auch die verschiedenen GUIDs, die beteiligt sind; Identische Werte werden durch die Verwendung einer übereinstimmenden Farbe hervorgehoben.
Ereignismechanismen
Die USB-Videoklasse unterstützt Ereignisse für die automatische Aktualisierung, bei denen das Gerät den Hosttreiber über Änderungen an seinen Steuerelementen benachrichtigt. Der Microsoft USB Video Class-Treiber unterstützt dieses Konzept, indem Anwendungen die Registrierung für Automatisch-Update-Ereignisse ermöglichen. Der Prozess des Abrufens von Updates umfasst drei Schritte:
Registrieren für Updateereignisse mithilfe von KSEVENTSETID_VIDCAPNotify::KSEVENT_VIDCAP_AUTO_UPDATE
Hören von Ereignissen über das Benachrichtigungshandle
Abbrechen der Benachrichtigung nach Fertigstellung