Entwerfen von MOF-Klassen (Managed Object Format)
Ein WMI-Anbieter besteht aus einer MOF-Datei (Managed Object Format, verwaltetes Objektformat) und einer DLL-Datei. Die MOF-Datei definiert die Klassen, für die die Anbieterimplementierung Daten bereitstellt.
Die MOF Klassendefinitionen werden vom Hilfsprogramm mofcomp kompiliert und im WMI-Repository gespeichert, das auch als CIM-Repository (Common Information Model) bezeichnet wird. Eine weniger gängige Möglichkeit zum Erstellen von Klassen ist die Verwendung der Methoden der COM-API für WMI.
Hinweis
Um sicherzustellen, dass nach einem Fehler und Neustart von WMI Ihre sämtlichen WMI-Klassendefinitionen für verwaltete Objekte im WMI-Repository wiederhergestellt werden, verwenden Sie die Präprozessoranweisung #pragma autorecover in Ihrer MOF-Datei.
In diesem Thema werden die folgenden Abschnitte behandelt:
- Definieren der zu verwaltenden Objekte
- Definieren von Eigenschaften oder Methoden
- Erstellen von Beziehungen zwischen Objekten
- Zugehörige Themen
Definieren der zu verwaltenden Objekte
Nachdem Sie den zu verwaltenden Teil Ihres Unternehmens identifiziert haben, definieren Sie die Objekte, die verwaltet werden sollen. Die Definition muss die erforderlichen Daten enthalten und es Ihnen ermöglichen, die relevanten Geschäftsregeln genau zu implementieren. Sie können Objekte sehr detailliert definieren, aber Sie müssen abwägen, wie detailgenau die Definition sein muss, damit sie nützlich ist. Wenn Sie zu einem frühen Zeitpunkt im Prozess Abkürzungen verwenden, sparen Sie vielleicht Zeit, verursachen aber möglicherweise mehr Arbeit in der Zukunft.
Das CIM-Tutorial auf der Website der Distributed Management Task Force (DMTF) enthält sehr gute Informationen zum Entwurfsprozess. Mehr dazu erfahren Sie hier: www.dmtf.org.
Berücksichtigen Sie die folgenden Faktoren, wenn Sie einen Schemaentwurf entwickeln und implementieren:
Qualifizierer
Qualifizierer stellen Informationen zur Beschreibung von Klassen, Objekten, Eigenschaften, Methoden und Parametern bereit und werden auf Klassen- und Eigenschaftsdefinitionen angewendet. Im MOF-Code sind Qualifizierer in eckige Klammern eingeschlossen und können beispielsweise„[key]“ oder „[association]“ lauten. Weitere Informationen finden Sie unter Hinzufügen eines Qualifizierers und WMI-Qualifizierer.
Namespace
Ein Namespace ist eine logische Einheit zum Gruppieren von Klassen und Objekten sowie zum Steuern von Bereich und Sichtbarkeit. In der Regel enthält ein Namespace eine Reihe von Klassen und Objekten, die verwaltete Objekte in einer bestimmten Umgebung repräsentieren. Weitere Informationen finden Sie unter Erstellen von Hierarchien in der WMI.
Object
Ein modelliertes Objekt kann ein physisches oder logisches Element des Schemas sein. Sie können beispielsweise ein physisches Datenträgerlaufwerk (z. B. ein Festplattenlaufwerk) oder einen logischen Datenträger modellieren, der eine Partition auf einem physischen Datenträger sein kann. Ein Entwurf, der zum Modellieren eines physischen Datenträgerlaufwerks eine Klasse verwendet und diese dann erweitert, um einen logischen Datenträger zu modellieren, bietet mehr Erweiterbarkeit als ein Entwurf, in dem versucht wird, für jeden Datenträgertyp eine separate Klasse zu erstellen.
Daten
Daten können dynamisch oder statisch sein. Wenn die Daten dynamisch sind, müssen Sie einen Klassenanbieter dafür erstellen.
Damit Benutzer*innen Daten ändern können, müssen Sie festlegen, ob eine Eigenschaft direkt beschreibbar sein soll oder ob sie nur über eine Methode geändert werden kann, die von Benutzer*innen aufgerufen wird.
Definieren von Eigenschaften oder Methoden
Im Allgemeinen ähnelt eine WMI-Klasseneigenschaft einer Eigenschaft in einer C++-Klasse. Wenn die einzigen Aktionen, die Ihr Code für die Daten implementiert, darin bestehen, den Wert abzurufen oder festzulegen, sollten die Daten als Eigenschaft der WMI-Klasse definiert werden.
Eine WMI-Methode führt im Allgemeinen eine Aktion aus, die den Zustand eines verwalteten Objekts ändert. Wenn die Aktion beispielsweise darin besteht, den Betrieb eines Hardwareobjekts zu aktivieren oder zu deaktivieren, ist eine Methode wahrscheinlich der Erstellung einer Eigenschaft zum Lesen/Schreiben vorzuziehen. Sie können auch eine Eigenschaft erstellen, die den Zustand der Hardware anzeigt.
Wenn Sie eine Klasse oder Instanz erstellen, können Sie Kommentare einschließen. Verwenden Sie diese Technik, um Ihre Klasse zu dokumentieren oder Ihre Programmiertechniken zu erläutern. Weitere Informationen finden Sie unter Erstellen eines Kommentars. Darüber hinaus können Sie Daten hinzufügen, um den Zweck eines Datenobjekts zu qualifizieren. Weitere Informationen finden Sie unter Hinzufügen eines Qualifizierers.
Erstellen von Beziehungen zwischen Objekten
Es gibt zwei Möglichkeiten, Objekte miteinander in Beziehung zu setzen: durch Erstellen separater Objekte und eines Assoziationsobjekts, das eine Beziehung zwischen den Objekten erstellt, oder durch Einbetten eines Objekts in das andere. CIM unterstützt keine eingebetteten Objekte, daher müssen Sie die erste Methode verwenden, damit Ihr Code CIM-konform ist. WMI dagegen unterstützt eingebettete Objekte, Sie können also jede der beiden Methoden verwenden, um eine Beziehung zwischen Objekten darzustellen. Beispiele für eingebettete Objekte finden Sie in den Win32-Klassen. Beispielsweise enthält Win32_SecurityDescriptor das eingebettete Objekt Win32_ACE, das wiederum ein anderes eingebettetes Objekt enthält: Win32_Trustee.
Berücksichtigen Sie folgende Aspekte, wenn Sie entscheiden, wie Beziehungen zwischen Objekten dargestellt werden sollen:
- Wenn eine Instanz an sich nützlich ist, funktioniert eine Zuordnung am besten. Beispiel: Win32_Process und Win32_UserAccount. Weitere Informationen finden Sie unter Deklarieren einer Assoziationsklasse.
- Wenn eine Instanz außerhalb des übergeordneten Objekts nicht vorhanden ist, funktioniert ein eingebettetes Objekt am besten. Beispiel: Win32_SecurityDescriptor und Win32_ACE. Weitere Informationen finden Sie unter Einbetten von Objekten in eine Klasse.
Zugehörige Themen