Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le pilote de classe vidéo USB expose les unités d’extension en tant que nœuds dans le filtre proxy USB Video KS. Les contrôles d’unité d’extension sont exposés en mode utilisateur en tant que propriété définie sur le nœud, qui est de type KSNODETYPE_DEV_SPECIFIC. Le GUID du jeu de propriétés correspond au GUID du descripteur d’unité d’extension.
Les contrôles d’unité d’extension individuels doivent être numérotés en continu de 1 à une valeur maximale n. Ces contrôles sont directement mappés aux identificateurs de propriété (ID) sur le jeu de propriétés d’unité d’extension. Ils sont accessibles à l’aide de requêtes KSPROPERTY standard via IKsControl.
En réponse aux demandes de propriétés provenant d’applications, le pilote UVC retourne les valeurs de propriété dont le membre MembersFlags de la structure KSPROPERTY_MEMBERSHEADER est définis exclusivement sur KSPROPERTY_MEMBER_RANGES. UVC ne prend pas en charge les gammes progressives ni les valeurs par défaut de longueur arbitraire de l’unité d’extension.
Pour exposer des propriétés d’unité d’extension à une application, vous pouvez écrire une DLL de plug-in en mode utilisateur qui expose une API COM. Vous pouvez implémenter cette API en effectuant des requêtes à la propriété KS définie à l’aide de l’interface IKsControl . Vidcap.ax charge automatiquement le plug-in d’interface de nœud en fonction de certaines entrées de Registre. Une application peut accéder à l’interface à l’aide d’IKsTopologyInfo ::CreateNodeInstance suivi d’un appel à QueryInterface sur l’objet node pour obtenir l’API COM requise.
Les éléments suivants sont nécessaires pour écrire et utiliser un plug-in d’unité d’extension :
Un fichier d’en-tête et cpp implémentant l’API d’unité d’extension et une interface nommée IKsNodeControl. Vidcap.ax utilise l’interface IKsNodeControl pour informer le plug-in de l’identificateur de nœud d’extension et lui fournir une instance d’IKsControl. Vous trouverez un exemple de code pour ces fichiers dans l’exemple de DLL de plug-in d’unité d’extension.
Fichier .rgs qui enregistre les interfaces de nœud et les ID de classe (CLSID) sous la sous-clé de registre HKLM\System\CCS\Control\NodeInterfaces\Property_Set_GUID. Les entrées de cette sous-clé de Registre contiennent les valeurs binaires de l’ID d’interface (IID) et du CLSID. Pour plus d’informations, consultez Exemple d’entrée de Registre pour les unités d’extension UVC.
Application qui appelle cette interface. L’application crée d’abord une instance de nœud avec l’ID de nœud approprié à l’aide d’IKsTopologyInfo ::CreateNodeInstance. L’application appelle ensuite QueryInterface sur l’instance de nœud pour obtenir l’interface d’unité d’extension requise. Pour plus d’informations, consultez l’exemple d’application pour les unités d’extension UVC et la prise en charge des événements de mise à jour automatique avec des unités d’extension
Les exemples de code de cette section illustrent tous ces éléments. Consultez Création de l’exemple de contrôle d’unité d’extension pour savoir comment générer l’exemple de plug-in et l’exemple de code d’application associé.
Une fois que la DLL du plug-in est inscrite et que les entrées de Registre décrites ci-dessus sont fournies, Vidcap.ax charge automatiquement les interfaces de nœud pertinentes lors de la création de l’instance de nœud.
Note À compter de Windows XP SP2, le jeu de propriétés de l’unité d’extension est pris en charge uniquement sur le nœud, et non sur le filtre.
Considérations relatives au Registre
Pour inscrire l’IID et le CLSID de l’interface exportée par le plug-in, vous pouvez utiliser l’inscription DLL ou un fichier d’informations d’installation spécifiques à l’appareil (INF).
Consultez l’exemple d’entrée de Registre pour les unités d’extension UVC pour un exemple de fichier .rgs qui affiche les valeurs requises pour les entrées du Registre. Cette rubrique montre également comment écrire un fichier INF spécifique à un appareil pour installer un périphérique vidéo USB et inscrire la DLL de plug-in. Vous pouvez choisir l’inscription DLL ou un fichier INF spécifique à l’appareil, en fonction de vos besoins spécifiques.
Schéma
Le diagramme schématique suivant montre les relations entre les différents modules impliqués dans l’écriture et l’utilisation d’un plug-in d’unité d’extension. En particulier, il trace la connexion de l’application, vers la DLL de plug-in, jusqu’au pilote et enfin à l’unité d’extension sur l’appareil lui-même. Le schéma illustre également les différents GUID impliqués ; Les valeurs identiques sont mises en surbrillance par l’utilisation d’une couleur correspondante.
Mécanismes d’événement
La classe vidéo USB prend en charge les événements de mise à jour automatique, où l’appareil informe le pilote hôte des modifications apportées à l’un de ses contrôles. Le pilote Microsoft USB Video Class prend en charge ce concept en permettant aux applications de s’inscrire pour les événements de mise à jour automatique. Le processus d’obtention des mises à jour implique trois étapes :
Inscription aux événements de mise à jour à l’aide de KSEVENTSETID_VIDCAPNotify ::KSEVENT_VIDCAP_AUTO_UPDATE
Écoute des événements sur le descripteur d’événement de notification
Annulation de la notification lorsque vous avez terminé