vmware vix api finditems () 메소드는 등록 된 vms에 대한 쿼리시 반환되지 않습니다.
문제
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 서비스가 실행되고 있는지 확인했습니다.
예외가 발생하지 않고, 오류가 반환되지 않았으며 (내가 볼 수있는 한) 이벤트 로그에 작성된 이벤트가 없습니다.
이상하게도 위의 코드는 constant vix_find_running_vms를 사용하여 실행중인 VM 목록을 얻으려고 할 때 작동합니다.
이것을 일으킬 수있는 것에 대한 아이디어가 있습니까?
감사,
아르니
해결책
상황에 대한 빠른 업데이트.
나는 자세히 살펴 보았다 공식 문서 finditems () 메소드 용. Constant VIX_FIND_REGISTERED_VMS는 지원되는 매개 변수로 나열되지 않습니다.
내 생각에 이것은 현재 VIX API가 VMware Workstation 인스턴스에 등록 된 VM 목록을 얻을 방법이 없다는 것을 의미합니다.
또한 vmrun.exe 명령 줄 유틸리티가 등록 VM을 얻는 방법을 제공하지 않는 이유를 설명합니다.
다음 버전의 VIX API가 출시 될 때까지 기다려야 할 것 같습니다.
제휴하지 않습니다 StackOverflow