VMwareのVIX APIのFindItems()メソッドに登録したVMを照会する際に返すことはありません
質問
私は、Windows Vista x64の上でVMware Workstationの6.5を使用しています。 私は、登録された仮想マシンのリストを取得するには、VMware VIX v1.6.1のCOM APIを使用して、いくつかのC#コードを記述しようとしています。
次のように私が使用していたコードは、次のとおりです。
using System;
using VixCOM;
namespace ConsoleApplication48
{
internal class Program
{
private static void Main()
{
var lib = new VixLibClass();
object results = null;
var job = lib.Connect(Constants.VIX_API_VERSION, Constants.VIX_SERVICEPROVIDER_VMWARE_WORKSTATION, null, 0,
null, null, 0, null, null);
var err = job.Wait(new[] {Constants.VIX_PROPERTY_JOB_RESULT_HANDLE}, ref results);
if (lib.ErrorIndicatesFailure(err))
Console.WriteLine("Error: " + err);
var host = (IHost)((object[])results)[0];
job = host.FindItems(Constants.VIX_FIND_REGISTERED_VMS, null, -1, new DiscoveryCallback(lib));
job.WaitWithoutResults();
host.Disconnect();
}
}
internal class DiscoveryCallback : ICallback
{
protected VixLibClass lib;
public DiscoveryCallback(VixLibClass lib)
{
this.lib = lib;
}
#region ICallback Members
public void OnVixEvent(IJob job, int eventType, IVixHandle moreEventInfo)
{
// this method is never called
}
#endregion
}
}
私は、COM DLLは32ビットであることを承知していますので、私は、テストアプリケーションが32ビットとしてコンパイルされていることを確認しました。 また、私はすべてのVMwareサービスが実行されていることを確認しました。
イベントログに書き込まれ、エラーが返されません(私の知る限り)スローは例外なしイベントはありません。
私は一定のVIX_FIND_RUNNING_VMSを使用してVMを実行しているのリストを取得しようとすると、不思議なことに、上記のコードは動作します。
何がこれを引き起こしている可能性があります上の任意のアイデア?
おかげで、
アーニー
解決
状況に関するクイックアップデートます。
私は FindItems()メソッドの公式ドキュメントに。定数VIX_FIND_REGISTERED_VMSがサポートパラメータとして記載されていません - 。唯一の定数VIX_FIND_RUNNING_VMSがある
私の推測では、これは現在、VIX APIは、VMware Workstationのインスタンスに登録されている仮想マシンのリストを取得する方法を提供しないことを意味している。
vmrun.exeコマンドラインユーティリティは、登録されたばかりのない方法を提供しない理由も説明するだろうということのVMます。
私は、私はちょうどVIXのAPIの次のバージョンがリリースされるまで待機する必要がありますね。