查询已注册的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的列表时,上述代码可以正常工作。 关于可能导致这种情况的任何想法? 谢谢, 阿尼     
已邀请:
有关情况的快速更新。 我已经仔细研究了FindItems()方法的官方文档。常量VIX_FIND_REGISTERED_VMS未列为受支持的参数 - 仅为常量VIX_FIND_RUNNING_VMS。 我的猜测是,这意味着目前VIX API无法获取在VMware Workstation实例上注册的VM列表。 这也可以解释为什么vmrun.exe命令行实用程序无法获取已注册的VM。 我想我只需要等到下一版本的VIX API发布。     

要回复问题请先登录注册