Referências (WMI)

A palavra-chave ref no MOF descreve um caminho de objeto e é mapeada para um tipo de automação VT_BSTR. O caminho de objeto pode ser um caminho completo para um servidor e namespace ou um caminho relativo para outro objeto no mesmo namespace. Você pode usar a palavra-chave ref para vincular duas ou mais classes. O WMI dá suporte a dois tipos de caminhos de objeto, que são usados para definir caminhos gerais ou específicos no WMI.

A finalidade principal da palavra-chave ref é reduzir o tempo de transporte e a codificação entre objetos que existem inteiramente no repositório WMI. Você também pode usar a palavra-chave ref para criar uma associação entre duas classes. Para obter mais informações, consulte Declarar 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 Criar um alias.

Observação

Quando uma palavra-chave ref é aplicada a uma propriedade de chave, é possível distinguir as referências a objetos pelo valor da cadeia de caracteres do objeto em vez do valor desreferenciado.

 

O MOF dá suporte ao conceito de caminho de objeto de tipagem forte e de tipagem fraca. Um caminho de objeto de tipagem fraca aponta para um objeto de uma classe não especificada e usa a palavra-chave ref 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 de tipagem fraca que pode apontar para qualquer classe ou instância de classe e uma referência RefToClassX que pode apontar apenas para uma classe ou instância ClassX:

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