GuestSessionImpl.h revision cd059a6642b11828bd0ad8b3108f5f7f611d144f
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * VirtualBox Main - XXX.
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * Copyright (C) 2012 Oracle Corporation
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * available from http://www.virtualbox.org. This file is free software;
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * you can redistribute it and/or modify it under the terms of the GNU
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * General Public License (GPL) as published by the Free Software
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ee4d840f54fd2dcea8a73b1b86d5ec0db370b05dvboxsync * Abstract base class for a lenghtly per-session operation which
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * runs in a Main worker thread.
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync virtual int RunAsync(const Utf8Str &strDesc, ComObjPtr<Progress> &pProgress) = 0;
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync int getGuestProperty(const ComObjPtr<Guest> &pGuest,
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync HRESULT setProgressErrorMsg(HRESULT hr, const Utf8Str &strMsg);
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync /** Progress object for getting updated when running
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * asynchronously. Optional. */
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * Task for copying files from host to the guest.
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync const Utf8Str &strSource, const Utf8Str &strDest, uint32_t uFlags);
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync PRTFILE pSourceFile, size_t cbSourceOffset, uint64_t cbSourceSize,
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync int RunAsync(const Utf8Str &strDesc, ComObjPtr<Progress> &pProgress);
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync static int taskThread(RTTHREAD Thread, void *pvUser);
ad77e3ec3cde24263bc7537575f5cae442bee3b1vboxsync * Task for copying files from guest to the host.
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync const Utf8Str &strSource, const Utf8Str &strDest, uint32_t uFlags);
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync int RunAsync(const Utf8Str &strDesc, ComObjPtr<Progress> &pProgress);
ad77e3ec3cde24263bc7537575f5cae442bee3b1vboxsync static int taskThread(RTTHREAD Thread, void *pvUser);
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsync * Task for automatically updating the Guest Additions on the guest.
eb90548e8e40e597d65cdcc16ec958a3e09c1d73vboxsyncclass SessionTaskUpdateAdditions : public GuestSessionTask
int Run(void);
enum eOSType
eOSType_Unknown = 0,
struct InstallerFile
int init(Guest *aGuest, ULONG aSessionID, Utf8Str aUser, Utf8Str aPassword, Utf8Str aDomain, Utf8Str aName);
void uninit(void);
void FinalRelease(void);
STDMETHOD(CopyFrom)(IN_BSTR aSource, IN_BSTR aDest, ComSafeArrayIn(CopyFileFlag_T, aFlags), IProgress **aProgress);
STDMETHOD(CopyTo)(IN_BSTR aSource, IN_BSTR aDest, ComSafeArrayIn(CopyFileFlag_T, aFlags), IProgress **aProgress);
STDMETHOD(DirectoryCreate)(IN_BSTR aPath, ULONG aMode, ComSafeArrayIn(DirectoryCreateFlag_T, aFlags));
STDMETHOD(DirectoryCreateTemp)(IN_BSTR aTemplate, ULONG aMode, IN_BSTR aPath, BOOL aSecure, BSTR *aDirectory);
STDMETHOD(DirectoryOpen)(IN_BSTR aPath, IN_BSTR aFilter, ComSafeArrayIn(DirectoryOpenFlag_T, aFlags), IGuestDirectory **aDirectory);
STDMETHOD(DirectoryRemoveRecursive)(IN_BSTR aPath, ComSafeArrayIn(DirectoryRemoveRecFlag_T, aFlags), IProgress **aProgress);
STDMETHOD(DirectoryRename)(IN_BSTR aSource, IN_BSTR aDest, ComSafeArrayIn(PathRenameFlag_T, aFlags));
STDMETHOD(FileCreateTemp)(IN_BSTR aTemplate, ULONG aMode, IN_BSTR aPath, BOOL aSecure, IGuestFile **aFile);
STDMETHOD(FileOpen)(IN_BSTR aPath, IN_BSTR aOpenMode, IN_BSTR aDisposition, ULONG aCreationMode, LONG64 aOffset, IGuestFile **aFile);
STDMETHOD(ProcessCreate)(IN_BSTR aCommand, ComSafeArrayIn(IN_BSTR, aArguments), ComSafeArrayIn(IN_BSTR, aEnvironment),
STDMETHOD(ProcessCreateEx)(IN_BSTR aCommand, ComSafeArrayIn(IN_BSTR, aArguments), ComSafeArrayIn(IN_BSTR, aEnvironment),
bool fDirectory,
int *prc);
int directoryOpenInternal(const Utf8Str &strPath, const Utf8Str &strFilter, uint32_t uFlags, ComObjPtr<GuestDirectory> &pDirectory);
int fileOpenInternal(const Utf8Str &strPath, const Utf8Str &strOpenMode, const Utf8Str &strDisposition,
int startTaskAsync(const Utf8Str &strTaskDesc, GuestSessionTask *pTask, ComObjPtr<Progress> &pProgress);
int queryInfo(void);
struct Data
bool fInternal;
* overwritten/extended by ProcessCreate(Ex). */
} mData;