Ссылки (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";
};