VixHandle
VixVM_AddSharedFolder(VixHandle vmHandle,
const char *shareName,
const char *hostPathName,
VixMsgSharedFolderOptions flags,
VixEventProc *callbackProc,
void *clientData);
This function mounts a new shared folder in the virtual machine.
VixHandle jobHandle;
VixError err;
const char shareName[] = "WorkDir";
const char programExecutableName[] = "myApp";
char *sharesPath;
char *guestPath;
size_t guestPathLength;
jobHandle = VixVM_PowerOn(vmHandle,
VIX_VMPOWEROP_NORMAL,
VIX_INVALID_HANDLE,
NULL,
NULL);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
// handle error
}
jobHandle = VixVM_WaitForToolsInGuest(vmHandle,
180,
NULL,
NULL);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
// handle error
}
jobHandle = VixVM_AddSharedFolder(vmHandle,
shareName,
"/work",
VIX_SHAREDFOLDER_WRITE_ACCESS,
NULL, NULL);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
// handle error
}
jobHandle = VixVM_LoginInGuest(vmHandle,
"user",
"password",
0,
NULL,
NULL);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
// handle error
}
err = Vix_GetProperties(vmHandle,
VIX_PROPERTY_GUEST_SHAREDFOLDERS_SHARES_PATH,
&sharesPath,
VIX_PROPERTY_NONE);
if (VIX_OK != err) {
// handle error
}
guestPathLength = strlen(sharesPath) + 1 + // + 1 for '/'
strlen(shareName) + 1 + // + 1 for '/'
strlen(programExecutableName) + 1; // + 1 for '\0'
guestPath = malloc(guestPathLength);
snprintf(guestPath, guestPathLength, "%s/%s/%s",
sharesPath, shareName, programExecutableName);
Vix_FreeBuffer(sharesPath);
jobHandle = VixVM_RunProgramInGuest(vmHandle,
guestPath,
"",
0,
VIX_INVALID_HANDLE,
NULL,
NULL);
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
free(guestPath);
guestPath = NULL;
// handle error
}
free(guestPath);
jobHandle = VixVM_LogoutFromGuest(vmHandle,
NULL,
NULL);
Vix_ReleaseHandle(jobHandle);
if (VIX_OK != err) {
free(guestPath);
// handle error
}