Referências (WMI)
O MOF ref palavra-chave descreve um caminho de objeto e é mapeado para um tipo de Automação VT_BSTR. O caminho do objeto pode ser um caminho completo para um servidor e namespace ou um caminho relativo para outro objeto no mesmo namespace. Você pode usar um ref palavra-chave para vincular duas ou mais classes. O WMI dá suporte a dois tipos de caminhos de objeto, que usam para definir caminhos gerais ou específicos dentro do WMI.
A principal finalidade do ref palavra-chave é reduzir o tempo de transporte e a codificação entre objetos que existem inteiramente dentro do repositório WMI. Você também pode usar o ref palavra-chave para criar uma associação entre duas classes. Para obter mais informações, consulte Declarando uma classe de associação. Se o item referenciado estiver localizado no mesmo arquivo MOF, use um alias para inicializar o valor ref. Para obter mais informações, consulte Criando um alias.
Nota
Quando uma ref palavra-chave é aplicada a uma propriedade de chave, você pode distinguir referências de objeto pelo valor da cadeia de caracteres do objeto em vez do valor desreferenciado.
O MOF dá suporte ao conceito de um caminho de objeto com tipo fraco e fortemente tipado. Um caminho de objeto com tipo fraco aponta para um objeto de uma classe não especificada e usa o ref palavra-chave com a palavra-chave OBJECT. Um objeto fortemente tipado aponta para um objeto de uma classe específica e usa ref com o nome da classe. O exemplo a seguir descreve uma referência RefToAnyClass com tipo fraco que pode apontar para qualquer instância de classe ou classe e uma referência RefToClassX que pode apontar apenas para uma classe classX ou instância:
class MyClass
{
object ref RefToAnyClass; // Weakly typed
ClassX ref RefToClassX; // Strongly typed
};
O exemplo a seguir descreve duas instâncias e um objeto de associação que faz referência às instâncias anteriores:
#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";
};