インスタンス オブジェクト パスの記述
インスタンス オブジェクト パスは、特定の名前空間内の特定のクラスのインスタンスの場所を表します。
複数の異なる種類のインスタンス オブジェクト パスを使用できます。
[完全]
完全なインスタンス オブジェクト パスは、クラスのキー プロパティの名前と値を完全なクラス オブジェクト パスに追加します。
次の例は、インスタンス オブジェクトの完全パスの定義を示しています。
\\Server\Namespace:Class.KeyName="KeyValue"
相対
相対オブジェクト パスは、現在のサーバー上の現在の名前空間にあるインスタンスを参照します。 相対パスは、クラス名の後に、このインスタンスのキー プロパティの名前と値で構成されます。
次の例は、相対インスタンス オブジェクト パスの定義を示しています。
MyClass.MyProp="e:"
1 つのキーを持つ相対キー
キーとして指定されたプロパティが 1 つだけのクラスの場合は、キー プロパティの名前を省略できます。
次の例は、1 つのキーを持つ相対インスタンス オブジェクト パスの定義を示しています。
MyClass="e:"
複数のキーを持つ相対キー
複数のキーを持つインスタンスのキーを区別するには、コンマを使用します。
次の例は、複数のキーを持つ相対インスタンス オブジェクト パスの定義を示しています。
MyOtherClass.FirstKey=1,SecondKey=2
シングルトン クラスでの相対
シングルトン クラスの相対オブジェクト パスは、クラス名の後に "=@" 表記が続きます。
次の例は、シングルトン クラスの相対インスタンス オブジェクト パスの定義を示しています。
MySingletonClass=@
次の手順では、クラス インスタンスを取得する方法について説明します。
クラス インスタンスを取得するには
SysAllocString 関数の呼び出しを使用して、オブジェクト パスを含む文字列を初期化します。
インスタンスを受け取るオブジェクトを初期化します。
IWbemServices::GetObject または IWbemServices::GetObjectAsync を呼び出してオブジェクトを取得します。
GetObjectAsync を使用するには、IWbemSink インターフェイスを実装する必要があります。
このトピックで後述するコードを正しくコンパイルするには、次の #include ステートメントが必要です。
#include <wbemidl.h>
次のコード例では、オブジェクト パスを使用してクラス インスタンスを取得する方法について説明します。
IWbemServices* pWbemSvcs = 0;
BSTR Path = SysAllocString(L"ComPort=2");
IWbemClassObject *pComPort = 0;
pWbemSvcs->GetObject(Path, 0, 0, &pComPort, 0);
キーとして複数のプロパティを指定するクラスのインスタンスの場合、WMI では、オブジェクト パス内のキー プロパティの特定の順序は必要ありません。 オブジェクト パス内の各プロパティの値のみを指定する必要があります。
次のコード例では、2 つの同等のキーの記述について説明します。
MyClass.IntVal=33,StrVal="AAA"
MyClass.StrVal="AAA",IntVal=33