VMware Vix使用
本文简单的介绍如何使用VMware Vix API来控制Vmware虚拟机
什么是VM VIX
VM Vix是Vmware提供的一组API接口来操作虚拟机的一系列行为,其可以帮助我们完成很多软件系统的自动化工作,可以以控制系统的方式来实现某些特殊软件的自动化运行
官网: https://www.vmware.com/support/developer/vix-api/
在线文档: https://www.vmware.com/support/developer/vix-api/vix113_reference/
获取VMware Vix SDK
一.百度搜索VMware Vix

二.下载VMware Vix SDK

然后出现

四.然后下载安装即可,安装完毕如下所示

如何使用
函数文档(在SDK的此目录下VMware VIX\doc\lang\c\functions)

注意自己虚拟机的版本

在工程中包含相应的头文件和库

实例代码
下面是一个开启虚拟机并关闭虚拟机的代码
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "vix.h"
#pragma comment(lib,"vix.lib")
#pragma comment(lib,"vixd.lib")
#define CONNTYPE VIX_SERVICEPROVIDER_VMWARE_WORKSTATION
#define HOSTNAME ""
#define HOSTPORT 0
#define USERNAME ""
#define PASSWORD ""
#define VMPOWEROPTIONS VIX_VMPOWEROP_LAUNCH_GUI
int main()
{
VixError err;
char *vmxPath="E:\\vm\\Windows XP AVG\\Windows XP AVG.vmx";
VixHandle hostHandle = VIX_INVALID_HANDLE;
VixHandle jobHandle = VIX_INVALID_HANDLE;
VixHandle vmHandle = VIX_INVALID_HANDLE;
jobHandle = VixHost_Connect(VIX_API_VERSION,
CONNTYPE,
HOSTNAME, // *hostName,
HOSTPORT, // hostPort,
USERNAME, // *userName,
PASSWORD, // *password,
0, // options,
VIX_INVALID_HANDLE, // propertyListHandle,
NULL, // *callbackProc,
NULL); // *clientData);
err = VixJob_Wait(jobHandle,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&hostHandle,
VIX_PROPERTY_NONE);
if (VIX_FAILED(err))
{
goto abort;
}
Vix_ReleaseHandle(jobHandle);
jobHandle = VIX_INVALID_HANDLE;
jobHandle = VixVM_Open(hostHandle,
vmxPath,
NULL, // VixEventProc *callbackProc,
NULL); // void *clientData);
err = VixJob_Wait(jobHandle,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&vmHandle,
VIX_PROPERTY_NONE);
if (VIX_FAILED(err))
{
printf("VM_Open error\n");
goto abort;
}
Vix_ReleaseHandle(jobHandle);
jobHandle = VixVM_PowerOn(vmHandle,
VMPOWEROPTIONS,
VIX_INVALID_HANDLE,
NULL, // *callbackProc,
NULL); // *clientData);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_FAILED(err))
{
goto abort;
}
Vix_ReleaseHandle(jobHandle);
jobHandle = VixVM_PowerOff(vmHandle,
VIX_VMPOWEROP_NORMAL,
NULL, // *callbackProc,
NULL); // *clientData);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_FAILED(err))
{
goto abort;
}
abort:
Vix_ReleaseHandle(jobHandle);
Vix_ReleaseHandle(vmHandle);
VixHost_Disconnect(hostHandle);
return 0;
}

浙公网安备 33010602011771号