/* static */ DECLCALLBACK(int) GuestTask::taskThread(RTTHREAD /* aThread */, void *pvUser) { std::auto_ptr<GuestTask> task(static_cast<GuestTask*>(pvUser)); AssertReturn(task.get(), VERR_GENERAL_FAILURE); ComObjPtr<Guest> pGuest = task->pGuest; LogFlowFuncEnter(); HRESULT rc = S_OK; switch (task->taskType) { #ifdef VBOX_WITH_GUEST_CONTROL case TaskType_CopyFileToGuest: { rc = pGuest->taskCopyFileToGuest(task.get()); break; } case TaskType_CopyFileFromGuest: { rc = pGuest->taskCopyFileFromGuest(task.get()); break; } case TaskType_UpdateGuestAdditions: { rc = pGuest->taskUpdateGuestAdditions(task.get()); break; } #endif default: AssertMsgFailed(("Invalid task type %u specified!\n", task->taskType)); break; } LogFlowFunc(("rc=%Rhrc\n", rc)); LogFlowFuncLeave(); return VINF_SUCCESS; }