FindItems API VMware VIX () metodo non ritorna mai durante la ricerca di macchine virtuali registrato

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

  •  23-08-2019
  •  | 
  •  

Domanda

Sono utilizzando VMware Workstation 6.5 su Windows Vista x64. Sto cercando di scrivere del codice C # che utilizza VMware Vix v1.6.1 COM API per ottenere un elenco di macchine virtuali registrati.

Il codice che sto usando è la seguente:

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

Sono consapevole del fatto che la DLL COM è a 32 bit, quindi ho fatto in modo che l'applicazione di test viene compilata a 32 bit. Inoltre ho fatto in modo che tutti i servizi VMware sono in esecuzione.

Non ci sono eccezioni generate, nessun errore restituito (per quanto posso vedere) e eventi scritti nel registro eventi.

Stranamente il codice qui sopra funziona quando si tenta di ottenere un elenco di VM in esecuzione utilizzando VIX_FIND_RUNNING_VMS costanti.

Tutte le idee su che cosa potrebbe causare questo?

Grazie,

Arnie

È stato utile?

Soluzione

Rapido aggiornamento sulla situazione.

Ho avuto uno sguardo più da vicino il documentazione ufficiale per i FindItems () metodo. VIX_FIND_REGISTERED_VMS costante non è elencato come parametro supportato -. Solo VIX_FIND_RUNNING_VMS costante è

La mia ipotesi è che questo significa API attualmente VIX offre alcun modo per ottenere un elenco di macchine virtuali registrate su un'istanza VMware Workstation.

Questo spiegherebbe anche il motivo per cui l'utilità della riga di comando vmrun.exe offre alcun modo di di iscriversi macchine virtuali.

Credo che dovrò solo aspettare fino a quando viene rilasciata la prossima versione delle API VIX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top