Partager via


Inscription d’un fournisseur de classes

Pour créer un fournisseur de classe WMI, vous devez inscrire le __Win32Provider instance qui représente votre fournisseur à l’aide d’une instance de __ClassProviderRegistration. En tant qu’objet COM, votre fournisseur doit s’inscrire auprès du système d’exploitation et de WMI. La procédure suivante suppose que vous avez déjà implémenté le processus d’inscription, comme décrit dans Inscription d’un fournisseur. Si votre fournisseur stocke la plupart des données dans le référentiel WMI et que ces données sont mises à jour uniquement lors de l’initialisation WMI, inscrivez votre classe en tant que fournisseur de classes push. Si les données que vous fournissez changent fréquemment et sont récupérées dynamiquement par votre code à chaque demande de WMI, inscrivez votre fournisseur en tant que fournisseur de classes d’extraction.

La procédure suivante décrit comment inscrire un fournisseur de classes Push.

Pour inscrire un fournisseur de classes Push

La procédure suivante décrit comment inscrire un fournisseur de classe d’extraction.

Pour inscrire un fournisseur de classes Push

  1. Créez un instance de la classe __Win32Provider qui décrit le fournisseur.

  2. Créez une instance de la classe __ClassProviderRegistration qui décrit l’ensemble de fonctionnalités du fournisseur.

    Dans le instance__ClassProviderRegistration :

    1. Définissez la propriété InteractionType pour indiquer si le fournisseur est un fournisseur d’envoi (push) ou d’extraction (pull).

    2. Veillez à étiqueter la classe avec les qualificateurs Dynamic et Provider.

      Le qualificateur Dynamic indique que WMI doit utiliser un fournisseur pour récupérer les instances de classe. Le qualificateur Provider spécifie le nom du fournisseur que WMI doit utiliser.

    3. Définissez les propriétés ResultSetQueries, ReferencedSetQueries et UnsupportedQueries .

      Ces propriétés de requête décrivent des informations détaillées sur la classe prise en charge.

En plus de décrire les différentes méthodes prises en charge d’une classe, la classe __ClassProviderRegistration possède également trois propriétés qui décrivent une série de requêtes. Lorsqu’elles sont utilisées ensemble, ces trois propriétés décrivent l’ensemble des classes fournies par le fournisseur de classes. Chaque propriété de requête contient une instruction WQL SELECT, appelée « requête de schéma », pour spécifier les types de classes prises en charge. Les requêtes de schéma spécifient un nom de classe spécial appelé meta_class. Le tableau suivant répertorie les propriétés.

Propriété Description
ResultSetQueries Contient des informations sur le jeu de résultats que le fournisseur fournit. WMI utilise les informations pour déterminer s’il faut appeler le fournisseur pour satisfaire une requête à partir d’une application. Cette propriété décrit soit l’ensemble de toutes les classes que le fournisseur peut fournir, soit un sur-ensemble des classes disponibles, mais jamais un sous-ensemble. WMI nécessite qu’un fournisseur spécifie au moins une requête dans cette propriété.
L’exemple suivant montre comment définir ResultSetQueries lorsqu’un fournisseur fournit une classe d’association qui fait référence à la classe Win32_LogicalDisk .
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
L’exemple suivant montre comment spécifier une requête générale lorsqu’un fournisseur fournit des classes qui référencent d’autres classes inconnues.
SELECT * FROM meta_class
L’exemple suivant montre comment définir ResultSetQueries lorsqu’un fournisseur fournit uniquement des sous-classes, mais pas la classe parente d’une classe donnée.
SELECT * FROM meta_class WHERE __Dynasty = "MyClass"
L’exemple suivant montre comment utiliser la propriété __this spéciale et définir ResultSetQueries lorsqu’un fournisseur fournit toutes les classes et sous-classes.
SELECT * FROM meta_class WHERE __this ISA "MyClass"
ReferencedSetQueries Détermine s’il faut contourner le fournisseur dans les requêtes de schéma où des associations et des références sont demandées. Les fournisseurs qui peuvent fournir des classes d’association doivent inclure au moins une requête dans leur propriété ReferencedSetQueries .
UnsupportedQueries Contient des informations sur le jeu de résultats qu’un fournisseur de classes ne fournit pas. WMI utilise cette propriété pour soustraire du jeu de classes impliqué par ResultSetQueries. Par exemple, un fournisseur de classes peut spécifier dans ResultSetQueries la prise en charge de toutes les classes dérivées de MyClass et spécifier dans UnsupportedQueries un manque de prise en charge pour une classe dérivée particulière.
Plus un fournisseur peut inscrire d’informations sur ses fonctionnalités de traitement des requêtes, plus il s’exécute rapidement. La saisie d’une ou de plusieurs requêtes dans la propriété UnsupportedQueries est un moyen d’être spécifique et est particulièrement importante lorsqu’un fournisseur s’appuie sur une classe qu’il ne fournit pas. Lorsqu’une demande est effectuée pour une classe répertoriée dans une requête dans la propriété UnsupportedQueries , WMI peut fournir la classe elle-même ou appeler un autre fournisseur pour la fournir.

Étant donné que WMI ne prend pas en charge la clause OR, vous devez créer une requête distincte pour chaque classe.

Les requêtes suivantes sont spécifiées dans ResultSetQueries lorsqu’un fournisseur de classes fournit MyClass1, MyClass2 et MyClass3.

SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"

Seuls les administrateurs peuvent inscrire ou supprimer un fournisseur de propriétés en créant une instance de __Win32Provider et __ClassProviderRegistration.