Riferimenti (WMI)
La parola chiave di riferimento MOF descrive un percorso oggetto ed esegue il mapping a un tipo di automazione VT_BSTR. Il percorso dell'oggetto può essere un percorso completo di un server e di uno spazio dei nomi oppure un percorso relativo a un altro oggetto nello stesso spazio dei nomi. È possibile usare una parola chiave ref per collegare due o più classi tra loro. WMI supporta due tipi di percorsi oggetto, che usano per definire percorsi generali o specifici all'interno di WMI.
Lo scopo principale della parola chiave di riferimento è ridurre il tempo di trasporto e la codifica tra gli oggetti che esistono interamente all'interno del repository WMI. È anche possibile usare la parola chiave ref per creare un'associazione tra due classi. Per altre informazioni, vedere Dichiarazione di una classe di associazione. Se l'elemento a cui si fa riferimento si trova nello stesso file MOF, usare un alias per inizializzare il valore ref . Per altre informazioni, vedere Creazione di un alias.
Nota
Quando una parola chiave ref viene applicata a una proprietà chiave, è possibile distinguere i riferimenti all'oggetto in base al valore stringa dell'oggetto anziché al valore dereferenziato.
MOF supporta il concetto di percorso di oggetto fortemente tipizzato e tipizzato in modo debole. Un percorso oggetto tipizzato in modo debole punta a un oggetto di una classe non specificata e usa la parola chiave ref con la parola chiave OBJECT . Un oggetto fortemente tipizzato punta a un oggetto di una classe specifica e usa ref con il nome della classe. Nell'esempio seguente viene descritto un riferimento RefToAnyClass tipizzato debole che può puntare a qualsiasi classe o istanza di classe e un riferimento RefToClassX che può puntare solo a una classe o a un'istanza ClassX :
class MyClass
{
object ref RefToAnyClass; // Weakly typed
ClassX ref RefToClassX; // Strongly typed
};
Nell'esempio seguente vengono descritte due istanze e un oggetto associazione che fa riferimento alle istanze precedenti:
#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";
};