Beschreiben eines Instanzobjektpfads
Ein Instanzobjektpfad beschreibt den Ort einer Instanz einer bestimmten Klasse innerhalb eines spezifischen Namespace.
Sie können mehrere verschiedene Arten von Instanzobjektpfaden haben:
Vollständig
Ein vollständiger Instanzobjektpfad fügt den Namen und den Wert der Schlüsseleigenschaft für die Klasse an einen vollständigen Klassenobjektpfad an.
Das folgende Beispiel zeigt die Definition des vollständigen Instanzobjektpfads.
\\Server\Namespace:Class.KeyName="KeyValue"
Relativ
Ein relativer Objektpfad verweist auf eine Instanz, die sich im aktuellen Namespace auf dem aktuellen Server befindet. Der relative Pfad besteht aus dem Klassennamen, gefolgt von den Namen und Werten der Schlüsseleigenschaften dieser Instanz.
Das folgende Beispiel zeigt die Definition des relativen Instanzobjektpfads.
MyClass.MyProp="e:"
Relativ mit einem einzelnen Schlüssel
Bei Klassen mit nur einer Eigenschaft, die als Schlüssel festgelegt ist, können Sie den Namen der Schlüsseleigenschaft weglassen.
Das folgende Beispiel zeigt die Definition des relativen Instanzobjektpfads mit einem einzelnen Schlüssel.
MyClass="e:"
Relativ mit mehreren Schlüsseln
Verwenden Sie ein Komma, um zwischen den Schlüsseln einer Instanz mit mehreren Schlüsseln zu unterscheiden.
Das folgende Beispiel zeigt die Definitionen des relativen Instanzobjektpfads mit mehreren Schlüsseln.
MyOtherClass.FirstKey=1,SecondKey=2
Relativ für eine Singleton-Klasse
Der relative Objektpfad für eine Singleton-Klasse besteht aus dem Namen der Klasse, gefolgt von der Notation „=@“.
Das folgende Beispiel zeigt die Definition des relativen Instanzobjektpfads für eine Singleton-Klasse.
MySingletonClass=@
Im folgenden Verfahren wird beschrieben, wie eine Klasseninstanz abgerufen wird.
Abrufen einer Klasseninstanz
Initialisieren Sie eine Zeichenfolge, die den Objektpfad enthält, mit einem Aufruf der SysAllocString-Funktion.
Initialisieren Sie ein Objekt, das die Instanz entgegennimmt.
Rufen Sie das Objekt mit einem Aufruf von IWbemServices::GetObject oder IWbemServices::GetObjectAsync ab.
Um GetObjectAsync zu verwenden, müssen Sie die IWbemSink-Schnittstelle implementieren.
Die folgende #include-Anweisung ist erforderlich, damit der später in diesem Themenbereich aufgeführte Code korrekt kompiliert werden kann.
#include <wbemidl.h>
Im folgenden Codebeispiel wird beschrieben, wie eine Klasseninstanz mithilfe eines Objektpfads abgerufen wird.
IWbemServices* pWbemSvcs = 0;
BSTR Path = SysAllocString(L"ComPort=2");
IWbemClassObject *pComPort = 0;
pWbemSvcs->GetObject(Path, 0, 0, &pComPort, 0);
Für Klasseninstanzen, die mehrere Eigenschaften als Schlüssel angeben, erfordert WMI keine spezifische Sortierung der Schlüsseleigenschaften in Objektpfaden. Sie müssen nur den Wert der einzelnen Eigenschaften im Objektpfad angeben.
Im folgenden Codebeispiel sind zwei gleichwertige Schlüsselbeschreibungen aufgeführt.
MyClass.IntVal=33,StrVal="AAA"
MyClass.StrVal="AAA",IntVal=33