Ссылки (WMI)

Ключевое слово ссылки MOF описывает путь к объекту и сопоставляется с типом автоматизации VT_BSTR. Путь к объекту может быть полным путем к серверу и пространству имен или относительным путем к другому объекту в том же пространстве имен. Ключевое слово ref можно использовать для связывания двух или более классов. WMI поддерживает два типа путей объектов, которые используются для определения общих или конкретных путей в WMI.

Цель main ключевого слова ссылки заключается в сокращении времени передачи и кодирования между объектами, полностью существующими в репозитории WMI. Вы также можете использовать ключевое слово ref для создания связи между двумя классами. Дополнительные сведения см. в разделе Объявление класса ассоциации. Если элемент, на который ссылается ссылка, находится в том же MOF-файле, используйте псевдоним для инициализации значения ссылки . Дополнительные сведения см. в разделе Создание псевдонима.

Примечание

Если ключевое слово ссылки применяется к свойству ключа, ссылки на объекты можно различать по значению строки объекта, а не по разыменовываемого значения.

 

MOF поддерживает концепцию слабо типизированного и строго типизированного пути объекта. Слабо типизированный путь к объекту указывает на объект неопределенного класса и использует ключевое слово ref с ключевое слово OBJECT. Строго типизированный объект указывает на объект определенного класса и использует ссылку с именем класса. В следующем примере описывается ссылка RefToAnyClass со слабой типизацией, которая может указывать на любой класс или экземпляр класса, и ссылка RefToClassX , которая может указывать только на класс ClassX или экземпляр.

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

В следующем примере описываются два экземпляра и объект связи, который ссылается на предыдущие экземпляры:

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