VixError
VixJob_CheckCompletion(VixHandle jobHandle,
Bool *complete);
This function performs a non-blocking test for completion of an asynchronous operation.
VixError err = VIX_OK;
VixError err1 = VIX_OK;
VixError err2 = VIX_OK;
VixHandle hostHandle = VIX_INVALID_HANDLE;
VixHandle jobHandle = VIX_INVALID_HANDLE;
VixHandle vmHandle = VIX_INVALID_HANDLE;
Bool jobCompleted;
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;
}
Vix_ReleaseHandle(jobHandle);
jobHandle = VixVM_Open(hostHandle,
"c:\\Virtual Machines\\vm1\\win2000.vmx",
NULL, // callbackProc
NULL); // clientData
jobCompleted = FALSE;
while (!jobCompleted) {
err = VixJob_CheckCompletion(jobHandle, &jobCompleted);
if (VIX_OK != err) {
break;
}
// ...Do some processing, sleep, or pump user events...
}
// Get job results. (Same results as VixJob_Wait)
err = Vix_GetProperties(jobHandle,
VIX_PROPERTY_JOB_RESULT_ERROR_CODE,
&err1,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&vmHandle,
VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
// Double-check error results from different functions.
err2 = VixJob_GetError(jobHandle);
ASSERT(err1 == err2);
abort:
Vix_ReleaseHandle(jobHandle);
Vix_ReleaseHandle(vmHandle);
VixHost_Disconnect(hostHandle);