JS-WMI (2)

cuzic です。

JS-WMI というライブラリを開発していて、 WMI の Qaulifier について、ちょっと詳しくなりました。

WMI ではオブジェクト、プロパティ、メソッド、メソッドパラメータについて、付加的な情報を Qualifier で取得できます。
Qualifier は CIM Studio を使うことで、実際にどのような値が割り振られているかを確認できます。

頻繁に利用する Qualifier の中には Description というものがあります。Description から、そのプロパティ等の概要について、知ることができます。WMI の各オブジェクト等にはこの Description がかなり充実して記載されているのです。

そこで、この Description 情報を利用して、JS-WMI では各メソッド等についてコメントを作成するようにしました。

具体的には下記のとおりです。
WMI クラスとしては、Win32_Process の Terminate メソッドを例にしています。

/** METHOD NAME: Terminate
/* Terminate メソッドはプロセスとそのスレッドのすべてを強制終了します。メソッドは次のように変換される整数値を返します: 
0 - 正常に完了しました。
2 - ユーザーは要求された情報に対するアクセス権がありません。
3 - ユーザーには十分な特権がありません。
8 - 不明なエラーです。
9 - 指定されたパスは存在しません。
21 - 指定されたパラメータは無効です。
その他 - 上の一覧以外の整数値については Win32 エラー コードのドキュメントを参照してください。*/
//  (in) Reason AS uint32
/*   Reason パラメータにより、プロセスとこの呼び出しの結果強制終了したスレッドすべてに対する終了コードが指定されます。*/
    function Terminate(Reason){
        var in_params = wmiobject_.Methods_.Item("Terminate").InParameters.SpawnInstance_();
        if(Reason !== undefined ){
            in_params.Properties_.Item("Reason").Value = Reason;
        }

        var out_params = wmiobject_.ExecMethod_("Terminate", in_params);
        return WMIClass_convert_out_params(out_params);
    }

この JS-WMI で自動生成されたコードを見ることで、WMI メソッドが実際にはどのようなメソッドで、何を引数にとり、何を返すのかが JavaScript の形で簡単に理解できるようになっています。

ソースコードDoxygen 形式で出力させて、自動的にドキュメントを生成するということもできそうです。