KS Properties
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 de noyau peuvent envoyer et définir des demandes de propriété (KSPROPERTY_TYPE_GET et KSPROPERTY_TYPE_SET) aux filtres et épingles instanciés par le minidriver. 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 Microsoft Windows SDK. 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 demande. En réponse à cet appel, le système d’exploitation distribue 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 comme 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 plus d’informations de référence, consultez Ensembles de propriétés de streaming de noyau, notamment les jeux de propriétés gérés par le pilote de classe et ceux qui nécessitent des gestionnaires fournis par minidriver. Un minidriver peut remplacer ou augmenter le gestionnaire de pilotes de classe en fournissant des rappels pour une propriété gérée par défaut par le pilote de classe.
Si le minidriver a fourni des gestionnaires pour cette propriété, KsPropertyHandler remet à son tour la demande au rappel fourni par le minidriver approprié.
Un minidriver fournit des pointeurs vers sa propriété prise en charge des rappels dans une structure de type KSPROPERTY_ITEM. Un minidriver regroupe un tableau de structures de KSPROPERTY_ITEM connexes dans une structure de KSPROPERTY_SET . Les différents modèles de pilotes de classe ont des méthodes légèrement différentes pour que le minidriver rende les données de jeu de propriétés disponibles pour le 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 juridiques pour une propriété prise en charge par votre minidriver. Vous trouverez également une implémentation de ce mécanisme dans l’exemple Testcap dans microsoft Windows Driver Kit (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.