VixHandle VixHost_OpenVM(VixHandle hostHandle, const char *vmxFilePathName, VixVMOpenOptions options, VixHandle propertyListHandle, VixEventProc *callbackProc, void *clientData);
This function opens a virtual machine on the host that is identified by the hostHandle parameter and returns a context to that machine as a virtual machine handle. This function supercedes VixVM_Open().
VixError err; VixHandle hostHandle = VIX_INVALID_HANDLE; VixHandle jobHandle = VIX_INVALID_HANDLE; VixHandle vmHandle = VIX_INVALID_HANDLE; // Connect to the local host: jobHandle = VixHost_Connect(VIX_API_VERSION, VIX_SERVICEPROVIDER_VMWARE_WORKSTATION, NULL, // hostName 0, // hostPort NULL, // userName NULL, // 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_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle); // Open the virtual machine: jobHandle = VixHost_OpenVM(hostHandle, "c:\\Virtual Machines\\vm1\\win2000.vmx", VIX_VMOPEN_NORMAL, VIX_INVALID_HANDLE, NULL, // callbackProc NULL); // clientData err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &vmHandle, VIX_PROPERTY_NONE); if (VIX_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle);The following sample illustrates how to open a regular virtual machine on a VMware ESX host:
VixError err; VixHandle hostHandle = VIX_INVALID_HANDLE; VixHandle jobHandle = VIX_INVALID_HANDLE; VixHandle vmHandle = VIX_INVALID_HANDLE; // Connect to the local host: jobHandle = VixHost_Connect(VIX_API_VERSION, VIX_SERVICEPROVIDER_VMWARE_VI_SERVER, "https://10.20.30.40/sdk", // hostName 0, // 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_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle); // Open the virtual machine: jobHandle = VixHost_OpenVM(hostHandle, "[datastore] vm1/vm1.vmx", VIX_VMOPEN_NORMAL, VIX_INVALID_HANDLE, NULL, // callbackProc NULL); // clientData err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &vmHandle, VIX_PROPERTY_NONE); if (VIX_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle);The following sample illustrates how to open an encrypted virtual machine on a VMware Workstation host:
VixError err; VixHandle hostHandle = VIX_INVALID_HANDLE; VixHandle jobHandle = VIX_INVALID_HANDLE; VixHandle vmHandle = VIX_INVALID_HANDLE; VixHandle propertyHandle = VIX_INVALID_HANDLE; // Connect to the local host: jobHandle = VixHost_Connect(VIX_API_VERSION, VIX_SERVICEPROVIDER_VMWARE_WORKSTATION, NULL, // hostName 0, // hostPort NULL, // userName NULL, // 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_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle); err = VixPropertyList_AllocPropertyList(hostHandle, &propertyHandle, VIX_PROPERTY_VM_ENCRYPTION_PASSWORD, "vmPassword", VIX_PROPERTY_NONE); if (err != VIX_OK) { // Handle the error... goto abort; } // Open the virtual machine: jobHandle = VixHost_OpenVM(hostHandle, "c:\\Virtual Machines\\vm1\\win2000.vmx", VIX_VMOPEN_NORMAL, propertyHandle, NULL, // callbackProc NULL); // clientData err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &vmHandle, VIX_PROPERTY_NONE); if (VIX_OK != err) { // Handle the error... goto abort; } // Release handle when done: Vix_ReleaseHandle(jobHandle); Vix_ReleaseHandle(propertyHandle);