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