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 のリストを取得しようとすると、上記のコードが機能します。
これを引き起こしている可能性のあるアイデアはありますか?
ありがとう、
アーニー