Partager via


Propriétés KS

Une propriété représente une fonctionnalité ou un paramètre d’état de contrôle qui appartient à un objet de diffusion en continu du noyau, tel qu’un filtre ou une broche. Les clients d’un minidriver de diffusion en continu du noyau peuvent envoyer et définir des demandes de propriété (KSPROPERTY_TYPE_GET et KSPROPERTY_TYPE_SET) aux filtres et épingles que le minidriver a instanciés. Un groupe de propriétés associées est appelé jeu de propriétés.

Pour obtenir ou définir des propriétés individuelles, les clients en mode utilisateur appellent la fonction Win32 DeviceIoControl avec le paramètre dwIoControlCode défini sur IOCTL_KS_PROPERTY. DeviceIoControl est décrit dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows. Les clients en mode noyau doivent appeler KsSynchronousDeviceControl.

La mémoire tampon d’entrée est une structure KSPROPERTY ou un wrapper contenant une structure KSPROPERTY et d’autres informations pertinentes pour la requête. En réponse à cet appel, le système d’exploitation envoie un IRP au pilote de classe.

Lorsque le pilote de classe reçoit l’IRP résultant, il appelle KsPropertyHandler. Le pilote de classe inclut en tant que paramètre d’appel l’adresse de la structure KSPROPERTY qui identifie les spécificités de la demande de propriété. La demande de propriété est gérée automatiquement au niveau du pilote de classe ou par un gestionnaire fourni par minidriver. Pour obtenir des informations de référence sur les ensembles de propriétés gérés par le pilote de classe et qui nécessitent des gestionnaires fournis par minidriver, consultez Les ensembles de propriétés de streaming du noyau pour obtenir des informations de référence, notamment les jeux de propriétés gérés par le pilote de classe. Un minidriver peut remplacer ou étendre le pilote de classe en implémentant des callbacks pour une propriété gérée par défaut par ce dernier.

Si le miniconducteur a fourni des gestionnaires pour cette propriété, KsPropertyHandler transmet ensuite la demande au rappel fourni par le miniconducteur approprié.

Un minidriver fournit des pointeurs vers ses rappels de prise en charge de propriété dans une structure de type KSPROPERTY_ITEM. Un minidriver regroupe un tableau de structures KSPROPERTY_ITEM associées dans une structure KSPROPERTY_SET . Différents modèles de pilotes de classe ont des méthodes légèrement différentes pour que le minidriver mette à disposition les données du jeu de propriétés au pilote de classe. Vous trouverez des informations spécifiques au pilote de classe en suivant les liens dans Kernel Streaming.

Le minidriver fournit également un pointeur vers une structure KSPROPERTY_VALUES dans une structure KSPROPERTY_ITEM. La structure KSPROPERTY_VALUES contient à son tour un tableau de structures KSPROPERTY_MEMBERSLIST . C’est là que le minidriver spécifie la taille et le type de valeurs acceptables pour la propriété. Chaque structure KSPROPERTY_MEMBERSLIST contient un membre d’en-tête : consultez KSPROPERTY_MEMBERSHEADER Pour plus d’informations sur la façon de spécifier des plages ou des valeurs légales pour une propriété prise en charge par votre minidriver. Vous pouvez également trouver une implémentation de ce mécanisme dans l’exemple Testcap dans le Kit de pilotes Microsoft Windows (WDK).

Pour signaler la taille et le type de valeurs acceptables pour une propriété, le pilote de classe retourne une structure KSPROPERTY_DESCRIPTION en réponse à une demande de KSPROPERTY_TYPE_BASICSUPPORT du client.

Le pilote de classe peut ajouter une liste de structures KSPROPERTY_MEMBERSHEADER à la structure KSPROPERTY_DESCRIPTION.