0

このためだけに C++ を再学習する必要はありません。どんなライブラリ/URLも素晴らしいでしょうし、そうです、Googleはここではあまり役に立ちませんでした:-(

これは、私の製品 (Java ベース) が Microsoft の Hyper-V 仮想化プラットフォームのサポートを提供する予定のプロジェクトです。Web サービスを提供する VMware とは異なり、Hyper-V API は WMI の単なる拡張機能です。Java を COM/WMI に統合するための J-Integra などの商用ツールは使用したくありません。私が見つけたいくつかのオープン ソース ツールはかなり時代遅れです。

私は、C++ よりも C で JNI を使用したいと考えています。WMI操作にCを使用するためのライブラリなどを見つけることができる場所を知っている人はいますか? Python クライアントと同じように使用できますか? (そして、はい、C は OOP 言語ではないことを知っています :D )。

前もって感謝します。

4

3 に答える 3

3

WMI は COM 経由でアクセスできますか?

これは冗長でエラーが発生しやすい (vtable と "this" パラメーターに誤って異なるポインターを使用しやすい) 一方で、C 言語から COM を使用することもできます。

C++ を使用することもできますが、「COM の使用を容易にする言語拡張機能を備えた C」として扱います。

于 2008-11-13T10:53:52.227 に答える
0

JNI インターフェース自体は COM の派生物であり、十分な C++ を使用してインターフェースを C++ クラスによって実装されているものとして扱うと、これらのメソッドと WMI インターフェースのメソッドがはるかに使いやすくなります。

もう 1 つの便利な点は、COM インターフェイスのライフサイクルを JNI で実装された Java クラスのライフサイクルにバインドする方法として、COM インターフェイス ポインターと参照カウントを使用できることです。

このようなアプローチを使用して、JNI を介して、Windows 上の一部の C 言語インターフェースへの Java ブリッジを実装しました。COM インターフェイスと、JNI DLL の構築に使用される .lib を手動で作成しました。

WMI で難しいのは、標準の COM API を使用して COM オブジェクトをインスタンス化することですが、私は独自のカスタム "ファクトリ" コードを作成しました。

ODMJNI 1.0 0.50beta Function-Complete Releaseの私の開発ツリーのスナップショットをダウンロードできます。開発ツリーの info.odma.odmjni100 を見ると、JNI DLL がどのように構築されているか (VC++ 2005 Express Edition を使用) と Java 1.5 がわかります。OdmJniBind.java クラスは、Java クラスと COM オブジェクト インターフェイス間のオブジェクト ライフサイクルを調整するために Java クラスで使用される静的メソッドで構成されます。(ツリーの OdmNative ピア セクションは、JNI 経由で使用される odmjni100.dll のコンパイルに使用される OdmNative100.lib の実装を提供します。

于 2008-11-13T20:34:18.163 に答える
0

@z0ltan

コードは C で記述できますが、ファイルを CPP として保存する必要があります。誰かが先に述べたように、DCOM をサポートするには、ファイルが CPP ファイルである必要があります。

@Umi For Java Integration - C/CPP で WMI コードを (適切な JNI ヘッダー ファイルを使用して) DLL としてコンパイルし、次に DLL ライブラリ ファイルをロードする必要があります。これが完了すると、Java メソッドを呼び出すのと同じように、DLL ファイル内の WMI メソッドにアクセスできます。

于 2009-01-20T08:51:03.883 に答える