Compartir a través de


Referencias (WMI)

La palabra clave ref de MOF describe una ruta de acceso de objeto y se asigna a un tipo de automatización VT_BSTR. La ruta de acceso del objeto puede ser una ruta de acceso completa a un servidor y un espacio de nombres, o bien una ruta de acceso relativa a otro objeto en el mismo espacio de nombres. Puede usar una palabra clave ref para vincular dos o más clases entre sí. WMI admite dos tipos de rutas de acceso de objeto, que se usan para definir rutas de acceso generales o específicas dentro de WMI.

La finalidad principal de la palabra clave ref es reducir el tiempo de transporte y la codificación entre los objetos que existen exclusivamente en el repositorio WMI. También puede usar la palabra clave ref para crear una asociación entre dos clases. Para obtener más información, consulte Declaración de una clase de asociación. Si el elemento al que se hace referencia está en el mismo archivo MOF, use un alias para inicializar el valor ref. Para obtener más información, consulte Creación de un alias.

Nota

Cuando se aplica una palabra clave ref a una propiedad de clave, puede distinguir las referencias de objeto por el valor de la cadena de objeto en lugar de por el valor desreferenciado.

 

MOF admite el concepto de ruta de acceso de objeto con establecimiento flexible de tipos y fuertemente tipado. Una ruta de acceso de objeto con establecimiento flexible de tipos apunta a un objeto de una clase no especificada y usa la palabra clave ref con la palabra clave OBJECT. Un objeto fuertemente tipado apunta a un objeto de una clase específica y usa ref con el nombre de la clase. En el ejemplo siguiente se describe una referencia RefToAnyClass con establecimiento flexible de tipos que puede apuntar a cualquier clase o instancia de clase, así como una referencia RefToClassX que solo puede apuntar a una instancia o una clase ClassX:

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

En el ejemplo siguiente se describen dos instancias y un objeto de asociación que hace referencia a las instancias 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";
};