Verweise (WMI)

Das MOF-Schlüsselwort ref beschreibt einen Objektpfad und wird einem VT_BSTR-Automatisierungstyp zugeordnet. Der Objektpfad kann entweder ein vollständiger Pfad zu einem Server und einem Namespace oder ein relativer Pfad zu einem anderen Objekt im selben Namespace sein. Sie können ein ref-Schlüsselwort verwenden, um zwei oder mehr Klassen miteinander zu verknüpfen. WMI unterstützt zwei Arten von Objektpfaden, die allgemeine oder spezifische Pfade innerhalb von WMI definieren.

Der Hauptzweck des ref-Schlüsselworts besteht darin, die Transportzeit und die Codierung zwischen Objekten zu reduzieren, die vollständig im WMI-Repository vorliegen. Sie können das Schlüsselwort ref auch verwenden, um eine Zuordnung zwischen zwei Klassen zu erstellen. Weitere Informationen finden Sie unter Deklarieren einer Zuordnungsklasse. Wenn sich das Element, auf das verwiesen wird, in derselben MOF-Datei befindet, verwenden Sie einen Alias, um den ref-Wert zu initialisieren. Weitere Informationen finden Sie unter Erstellen eines Alias.

Hinweis

Wenn ein ref-Schlüsselwort auf eine Schlüsseleigenschaft angewendet wird, können Sie Objektverweise anhand des Objektzeichenfolgenwerts anstelle des dereferenzierten Werts unterscheiden.

 

MOF unterstützt das Konzept eines schwach bzw. stark typisierten Objektpfads. Ein schwach typisierter Objektpfad zeigt auf ein Objekt einer nicht angegebenen Klasse und verwendet das ref-Schlüsselwort mit dem OBJECT-Schlüsselwort. Ein stark typisiertes Objekt zeigt auf ein Objekt einer bestimmten Klasse und verwendet ref mit dem Klassennamen. Das folgende Beispiel beschreibt einen schwach typisierten RefToAnyClass-Verweis, der auf eine beliebige Klasse oder Klasseninstanz zeigen kann, sowie einen RefToClassX-Verweis, der nur auf eine ClassX-Klasse oder -Instanz verweisen kann:

class MyClass
{
    object ref RefToAnyClass;       // Weakly typed
    ClassX ref RefToClassX;         // Strongly typed
};

Im folgenden Beispiel werden zwei Instanzen und ein Zuordnungsobjekt beschrieben, das auf die vorherigen Instanzen verweist:

#pragma namespace("\\\\.\\root")

instance of __Namespace
{
    Name = "WMI" ;
} ;

#pragma namespace("\\\\.\\root\\WMI")

Class A{
    [key] string aKey;
};

Class C{
    [key] string cKey;
};

// The following class creates an association 
// between the "A" class and the "C" class
    [Association] Class B{
    [key] A ref aRef;
    [Key, Min(1)] C ref cRef;
};

instance of a
{
    aKey = "This is the key for the A class";
};

instance of c
{
    cKey = "This is the key for the c class";
};