VMware Vix API 操作虚拟机

mark一下,为了学习VIX API,花了两天时间才搞定,要么编译不过,各种link的lib错误,要么是VixHost_Connect连接不上,要么是VixVM_Open打开失败,今天总算是搞定了,下面是一个示例, 效果是启动VMware的界面并启动虚拟机系统,然后再关机.


#include "stdafx.h"

#include <stdio.h>
#include <stdlib.h>

#include "vix.h"

#pragma comment(lib,"user32.lib")

//#pragma comment(lib,"C:\\Program Files (x86)\\VMware\\VMware VIX\\VixAllProducts.lib")
//#pragma comment(lib,"C:\\Program Files (x86)\\VMware\\VMware VIX\\VixAllProductsd.lib")
//#pragma comment(lib,"C:\\Program Files (x86)\\VMware\\VMware VIX\\VixAllProductsDyn.lib")
#pragma comment(lib,"C:\\Program Files (x86)\\VMware\\VMware VIX\\Workstation-10.0.0-and-vSphere-5.5.0\\32bit\\vix.lib")
#pragma comment(lib,"C:\\Program Files (x86)\\VMware\\VMware VIX\\Workstation-10.0.0-and-vSphere-5.5.0\\32bit\\vixd.lib")
#pragma comment(lib,"ws2_32.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;
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值