Noms de classes WMI et classes de base

Les noms de classes WMI ne respectent pas la casse, doivent commencer par une lettre et ne peuvent pas commencer ou se terminer par un trait de soulignement. Tous les caractères restants doivent être des lettres, des chiffres ou des traits de soulignement.

Les applications clientes WMI peuvent accéder aux noms de classe WMI d’un pilote et les afficher aux utilisateurs. Les noms de classes descriptifs peuvent aider à rendre les classes plus intuitives à utiliser.

Les noms de classes WMI doivent être uniques dans l’espace de noms WMI. Par conséquent, les noms de classe WMI d’un pilote ne peuvent pas dupliquer ceux définis par un autre pilote.

Pour éviter les collisions de noms, un enregistreur de pilotes peut définir une classe de base spécifique au pilote et dériver toutes les classes WMI du pilote à partir de cette classe de base. Le nom de la classe et le nom de la classe de base sont plus susceptibles de produire un nom unique. Par exemple, l’exemple suivant montre une classe de base abstraite pour les blocs de données d’un pilote série :

// Serial driver's base class for data blocks
[abstract]
class MSSerial {
}
 
// Example class definition for a data block
[
    //Class qualifiers 
]
class MSSerial_StandardSerialInformation : MSSerial 
{
    //Data items
}

Les blocs de données personnalisés spécifiques aux appareils doivent inclure le fabricant, le modèle et le type de pilote ou de périphérique dans le nom de la classe de base. Par exemple :

[abstract]
class Adaptec1542 {
}
 
class Adaptec1542_Bandwidth : Adaptec1542 {
    //Data items
}
 
class Adaptec1542_Speed : Adaptec1542 {
    //Data items
}

WMI n’autorise qu’une seule classe de base abstraite dans une hiérarchie de classes donnée. Les classes qui définissent des blocs d’événements doivent dériver de WmiEvent, qui est une classe de base abstraite, de sorte que le qualificateur abstrait ne peut pas être utilisé dans une classe de base définie par le pilote pour les blocs d’événements. Au lieu de cela, dérivez une classe de base nonabstract de WmiEvent, puis dérivez des classes d’événements individuelles de cette classe de base. Par exemple :

//Serial driver's base class for event blocks
class MSSerialEvent : WmiEvent 
{
}
 
//Example class definition for an event block
[
    //Class qualifiers 
]
class MSSerial_SendEvent : MSSerialEvent 
{
    //Data items
}

Pour plus d’informations sur la définition de classes de base au format MOF, consultez la Microsoft Windows SDK.