Partager via


Références (WMI)

Le mot clé de référence MOF décrit un chemin d’accès d’objet et est mappé à un type Automation VT_BSTR. Le chemin d’accès de l’objet peut être un chemin complet vers un serveur et un espace de noms, ou un chemin relatif vers un autre objet dans le même espace de noms. Vous pouvez utiliser un ref mot clé pour lier deux classes ou plus. WMI prend en charge deux types de chemins d’accès d’objet, qui permettent de définir des chemins généraux ou spécifiques dans WMI.

L’objectif principal de la ref mot clé consiste à réduire le temps de transport et l’encodage entre les objets qui existent entièrement dans le référentiel WMI. Vous pouvez également utiliser le ref mot clé pour créer une association entre deux classes. Pour plus d’informations, consultez Déclaration d’une classe d’association. Si l’élément référencé se trouve dans le même fichier MOF, utilisez un alias pour initialiser la valeur ref. Pour plus d’informations, consultez Création d’un alias.

Note

Lorsqu’un ref mot clé est appliqué à une propriété clé, vous pouvez distinguer les références d’objet par la valeur de chaîne d’objet au lieu de la valeur de déréférencement.

 

MOF prend en charge le concept d’un chemin d’accès d’objet faiblement typé et fortement typé. Un chemin d’accès d’objet faiblement typé pointe vers un objet d’une classe non spécifiée et utilise le mot clé ref avec le mot clé OBJECT. Un objet fortement typé pointe vers un objet d’une classe spécifique et utilise ref avec le nom de la classe. L’exemple suivant décrit une référence RefToAnyClass faiblement typée qui peut pointer vers n’importe quelle instance de classe ou de classe, et une référence RefToClassX qui ne peut pointer qu’à une Classe classe ou instance :

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

L’exemple suivant décrit deux instances et un objet d’association qui référence les instances précédentes :

#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";
};