参照 (WMI)

MOF ref キーワードではオブジェクト パスを記述し、VT_BSTR Automation 型にマップされます。 オブジェクト パスには、サーバーと名前空間への完全パス、または同じ名前空間内の別のオブジェクトへの相対パスを指定できます。 ref キーワードを使用して、2 つ以上のクラスを一緒にリンクできます。 WMI では、WMI 内の一般的または特定のパスを定義するために使用する 2 種類のオブジェクト パスがサポートされています。

ref キーワードの主な目的は、WMI リポジトリ内に完全に存在するオブジェクト間のトランスポート時間とエンコードを減らすことです。 ref キーワードを使用して、2 つのクラス間の関連付けを作成することもできます。 詳細については、「関連付けクラスの宣言」を参照してください。 参照先の項目が同じ MOF ファイル内にある場合は、エイリアスを使用して ref 値を初期化します。 詳細については、エイリアスの作成に関する記事を参照してください。

注意

ref キーワードが key プロパティに適用されている場合は、逆参照された値ではなく、オブジェクトの文字列値によってオブジェクト参照を区別できます。

 

MOF では、弱く型指定されたオブジェクト パスと厳密に型指定されたもの概念がサポートされています。 弱く型指定されたオブジェクト パスでは、特定されていないクラスのオブジェクトをポイントし、OBJECT キーワードとともに ref キーワードを使用します。 厳密に型指定されたオブジェクトでは、特定のクラスのオブジェクトをポイントし、そのクラス名とともに ref を使用します。 次の例では、任意のクラスまたはクラス インスタンスをポイントできる弱く型指定された RefToAnyClass 参照と、ClassX クラスまたはインスタンスのみをポイントできる RefToClassX 参照について説明します。

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

次の例では、2 つのインスタンスと、前のインスタンスを参照する関連付けオブジェクトについて説明します。

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