C语言调用VIX_API开关虚拟机
#include <stdio.h> #include <stdlib.h> #include "vix.h" #define USE_WORKSTATION #ifdef USE_WORKSTATION #define CONNTYPE VIX_SERVICEPROVIDER_VMWARE_WORKSTATION #define HOSTNAME "" #define HOSTPORT 0 #define USERNAME "" #define PASSWORD "" #define VMPOWEROPTIONS VIX_VMPOWEROP_LAUNCH_GUI #endif // USE_WORKSTATION int main() { VixError err; char *vmxPath= "E:\\win7\\Windows 7 x64.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 = 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)) { 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; }
这是一个在CodeBlocks上写的c程序,安装了虚拟机的,具体源码请在“C:\Program Files (x86)\VMware\VMware VIX\Samples\powerOn.c”里查看,
注:
1、在project->Properties->C/C++->添加头文件所在文件夹(把头文件放程序文件夹里)
2、添加头文件vix.h与vm_basic_types.h
3、在project->Properties->Project Setting->Project build options->linker settings->添加动态链接库VixAllProductsDyn.lib
4、在debug下添加VixAllProductsDyn.dll