Frage

Ich bin mit VMware Workstation 6.5 auf Windows Vista x64. Ich versuche, einige C # -Code zu schreiben, die VMware Vix v1.6.1 COM API verwendet eine Liste der registrierten virtuellen Maschinen zu erhalten.

Der Code Ich verwende ist wie folgt:

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

Ich bin mir bewusst, dass der COM-DLL ist 32-Bit, also machte ich sicher, dass die Testanwendung als 32-Bit kompiliert wird. Auch stellte ich sicher, dass alle VMware-Dienste ausgeführt werden.

Es gibt keine Ausnahmen geworfen, keine Fehler zurückgegeben (soweit ich sehen kann) und keine Ereignisse geschrieben in das Ereignisprotokoll.

Merkwürdiger der obige Code funktioniert, wenn ich versuche, eine Liste zu erhalten laufenden VMs mit konstanter VIX_FIND_RUNNING_VMS.

Alle Ideen, was könnte die Ursache sein?

Danke,

Arnie

War es hilfreich?

Lösung

Quick Update auf die Situation.

Ich habe einen genaueren Blick auf die offizielle Dokumentation für die FindItems () -Methode. Constant VIX_FIND_REGISTERED_VMS wird nicht als unterstützten Parameter aufgelistet -. Einzige Konstante VIX_FIND_RUNNING_VMS ist

Meine Vermutung ist, bedeutet dies, dass derzeit VIX API keine Möglichkeit bietet eine Liste der VMs registriert auf einer VMware Workstation Instanz zu erhalten.

Das würde auch erklären, warum das vmrun.exe Befehlszeilenprogramm keine Möglichkeit bekommen registrierte VMs bietet.

Ich glaube, ich werde nur noch die nächste Version des VIX API warten, bis sie freigegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top