WMI-Klassennamen und Basisklassen
Bei WMI-Klassennamen wird die Groß-/Kleinschreibung nicht beachtet, muss mit einem Buchstaben beginnen und darf nicht mit einem Unterstrich beginnen oder enden. Alle übrigen Zeichen müssen Buchstaben, Ziffern oder Unterstriche sein.
WMI-Clientanwendungen können auf die WMI-Klassennamen eines Treibers zugreifen und sie Benutzern anzeigen. Beschreibende Klassennamen können dazu beitragen, klassen intuitiver zu verwenden.
WMI-Klassennamen müssen innerhalb des WMI-Namespace eindeutig sein. Daher können die WMI-Klassennamen eines Treibers die von einem anderen Treiber definierten nicht duplizieren.
Um Namenskonflikte zu vermeiden, kann ein Treiberschreiber eine treiberspezifische Basisklasse definieren und alle WMI-Klassen des Treibers von dieser Basisklasse ableiten. Der Klassenname und der Basisklassenname zusammen ergeben eher einen eindeutigen Namen. Das folgende Beispiel zeigt eine abstrakte Basisklasse für die Datenblöcke eines seriellen Treibers:
// 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
}
Gerätespezifische benutzerdefinierte Datenblöcke sollten den Hersteller, das Modell und den Typ des Treibers oder Geräts im Basisklassennamen enthalten. Beispiel:
[abstract]
class Adaptec1542 {
}
class Adaptec1542_Bandwidth : Adaptec1542 {
//Data items
}
class Adaptec1542_Speed : Adaptec1542 {
//Data items
}
WMI lässt nur eine abstrakte Basisklasse in einer bestimmten Klassenhierarchie zu. Klassen, die Ereignisblöcke definieren, müssen von WmiEvent abgeleitet werden, bei dem es sich um eine abstrakte Basisklasse handelt, sodass der abstrakte Qualifizierer nicht in einer vom Treiber definierten Basisklasse für Ereignisblöcke verwendet werden kann. Leiten Sie stattdessen eine nichtabstracte Basisklasse von WmiEvent ab, und leiten Sie dann einzelne Ereignisklassen von dieser Basisklasse ab. Beispiel:
//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
}
Weitere Informationen zum Definieren von Basisklassen im MOF-Format finden Sie im Microsoft Windows SDK.