プロバイダによってサポートされるクラス内のメソッドを呼び出すには、invokeMethod インタフェースを使用します。メソッドのシグニチャを取得するには、まず、そのメソッドが属するクラスの定義を取得する必要があります。invokeMethod インタフェースは、次の表に示す 4 つの引数を受け取ります。
表 4–11 invokeMethod へのパラメータ|
パラメータ |
データ型 |
説明 |
|---|---|---|
|
name |
CIMObjectPath |
インスタンスの名前。このインスタンスでメソッドを呼び出す必要がある。 |
|
methodName |
String |
呼び出すメソッドの名前。 |
|
inParams |
Vector |
メソッドに渡す入力パラメータ。 |
|
outParams |
Vector |
メソッドから受け取る出力パラメータ。 |
invokeMethod メソッドは CIMValue を返します。呼び出したメソッドが戻り値を定義していない場合には、戻り値は null です。
例 4–17 のコードセグメントでは、CIM_Service クラスのインスタンス (デバイスやソフトウェアの機能を管理するサービス) を取得してから、invokeMethod メソッドを使って各サービスを停止します。
{
...
/* CIM_Service クラスの CIMObjectPath を CIM Object Manager に渡す。
この例では、このクラスに定義されているメソッドを呼び出す */
CIMObjectPath op = new CIMObjectPath("CIM_Service");
/* CIM Object Manager がインスタンスオブジェクトパスの列挙
(CIM_Service クラスの各インスタンスの名前) を返す */
Enumeration e = cc.enumInstances(op, cc.DEEP);
/* インスタンスオブジェクトパスを含む列挙のサイズ分だけ繰り返す。
各オブジェクトパスによって参照されるインスタンスを取得するには、
CIMClient の getInstance クラスを使用する。*/
while(e.hasMoreElements()) {
// インスタンスを取得する
CIMInstance ci = cc.getInstance(e.nextElement(), true);
// StopService メソッドを使って CIM サービスを停止する
cc.invokeMethod(ci, "StopService", null, null);
}
}