FindItems API de VMware VIX () método nunca regresa al consultar las máquinas virtuales registrada

StackOverflow https://stackoverflow.com/questions/383768

  •  23-08-2019
  •  | 
  •  

Pregunta

Estoy utilizando VMware Workstation 6.5 en Windows Vista x64. Estoy tratando de escribir algo de código C # que utiliza la API de VMware VIX v1.6.1 COM para obtener una lista de máquinas virtuales registradas.

El código que estoy usando es el siguiente:

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

Soy consciente de que la DLL COM es de 32 bits, así que se aseguró de que la aplicación de prueba se compila como de 32 bits. También se aseguró de que todos los servicios de VMware se están ejecutando.

No hay excepciones lanzadas, no hay errores devueltos (por lo que puedo ver) y no hay eventos escritos en el registro de eventos.

Por extraño que parezca el código anterior funciona cuando intento para obtener una lista de máquinas virtuales en ejecución usando VIX_FIND_RUNNING_VMS constantes.

¿Alguna idea sobre lo que podría estar causando esto?

Gracias,

Arnie

¿Fue útil?

Solución

Rápida actualización de la situación.

He tenido una mirada más cercana a la documentación oficial de los método (FindItems). VIX_FIND_REGISTERED_VMS constantes no aparece como un parámetro apoyado -. Solamente VIX_FIND_RUNNING_VMS constante es

Mi suposición es que esto significa que la API VIX actualmente no ofrece ninguna manera de obtener una lista de máquinas virtuales registrado en una instancia de VMware Workstation.

Esto también explicaría por qué la utilidad de línea de comandos vmrun.exe ofrece ninguna manera de conseguir registrada VM.

Creo que simplemente voy a tener que esperar hasta que se libere la próxima versión de la API VIX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top