VixHandle
VixVM_LoginInGuest(VixHandle vmHandle,
char *userName,
char *password,
int options,
VixEventProc *callbackProc,
void *clientData);
This function establishes a guest operating system authentication context that can be used with guest functions for the given virtual machine handle.
VixError err = VIX_OK;
VixHandle hostHandle = VIX_INVALID_HANDLE;
VixHandle jobHandle = VIX_INVALID_HANDLE;
VixHandle vmHandle = VIX_INVALID_HANDLE;
int isLoggedIn = 0;
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
err = VixJob_Wait(jobHandle,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&vmHandle,
VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
Vix_ReleaseHandle(jobHandle);
// Power on the virtual machine before copying file.
jobHandle = VixVM_PowerOn(vmHandle,
0, // powerOnOptions
VIX_INVALID_HANDLE, // propertyListHandle
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle,VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
Vix_ReleaseHandle(jobHandle);
// Wait until guest is completely booted.
jobHandle = VixVM_WaitForToolsInGuest(vmHandle,
300, // timeoutInSeconds
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
Vix_ReleaseHandle(jobHandle);
// Authenticate for guest operations.
jobHandle = VixVM_LoginInGuest(vmHandle,
"vixuser", // userName
"secret", // password
0, // options
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
isLoggedIn = 1;
Vix_ReleaseHandle(jobHandle);
// Copy the file.
jobHandle = VixVM_CopyFileFromGuestToHost(vmHandle,
"c:\\guestDir\\helloworld.o", // src name
"c:\\hostDir\\helloworld.o", // dest name
0, // options
VIX_INVALID_HANDLE, // propertyListHan
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error...
goto abort;
}
abort:
if (isLoggedIn) {
Vix_ReleaseHandle(jobHandle);
// Clear the authentication
jobHandle = VixVM_LogoutFromGuest(vmHandle,
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// Handle the error, but do not go to abort.
}
}
Vix_ReleaseHandle(jobHandle);
Vix_ReleaseHandle(vmHandle);
VixHost_Disconnect(hostHandle);