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

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM