Pergunta

Estou usando o VMware Workstation 6.5 no Windows Vista x64. Eu estou tentando escrever algum código C # que usa VMware Vix v1.6.1 COM API para obter uma lista de máquinas virtuais registradas.

O código que estou usando é a seguinte:

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
    }
}

Estou ciente de que a DLL é de 32 bits, por isso tenho a certeza que o aplicativo de teste é compilado como de 32 bits. Também tenho a certeza que todos os serviços VMware estão em execução.

Não há exceções lançadas, há erros retornados (tanto quanto eu posso ver) e há eventos escritos no log de eventos.

Curiosamente o código acima funciona quando eu tentar obter uma lista de execução VMs usando VIX_FIND_RUNNING_VMS constantes.

Algumas ideias sobre o que poderia estar causando isso?

Obrigado,

Arnie

Foi útil?

Solução

Rápida atualização sobre a situação.

Eu tive um olhar mais atento ao documentação oficial para o método FindItems (). VIX_FIND_REGISTERED_VMS constantes não está listado como um parâmetro suportado -. Apenas VIX_FIND_RUNNING_VMS constantes é

Meu palpite é isto significa que atualmente VIX ofertas API nenhuma maneira de obter uma lista de VMs registrados em uma instância VMware Workstation.

Isso também explicaria por que os de linha de comando vmrun.exe ofertas utilidade nenhuma maneira de ser registradas VMs.

Eu acho que eu vou ter que esperar até a próxima versão da API do VIX é liberado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top