查询已注册的VM时,VMware VIX API FindItems()方法永远不会返回
我在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的列表时,上述代码可以正常工作。
关于可能导致这种情况的任何想法?
谢谢,
阿尼
没有找到相关结果
已邀请:
1 个回复
视蕉梁拌客