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