GuestImpl.h revision c31578d36637d7ab03bf8d8e9db2ab056ca7e692
/** @file
*
* VirtualBox COM class implementation
*/
/*
* Copyright (C) 2006-2010 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef ____H_GUESTIMPL
#define ____H_GUESTIMPL
#include "VirtualBoxBase.h"
#ifdef VBOX_WITH_GUEST_CONTROL
#endif
typedef enum
{
#ifdef VBOX_WITH_GUEST_CONTROL
#endif
{
void FinalRelease();
// Public initializer/uninitializer for internal purposes only
void uninit();
// IGuest properties
/** @todo Remove later by replacing it by AdditionsFeatureAvailable(). */
#if 0
/** @todo Will replace SupportsSeamless, SupportsGraphics, ... */
#endif
// IGuest methods
STDMETHOD(GetProcessOutput)(ULONG aPID, ULONG aFlags, ULONG aTimeoutMS, LONG64 aSize, ComSafeArrayOut(BYTE, aData));
STDMETHOD(SetProcessInput)(ULONG aPID, ULONG aFlags, ComSafeArrayIn(BYTE, aData), ULONG *aBytesWritten);
STDMETHOD(CopyToGuest)(IN_BSTR aSource, IN_BSTR aDest, IN_BSTR aUserName, IN_BSTR aPassword, ULONG aFlags, IProgress **aProgress);
ULONG *aPageTotal, ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, ULONG *aMemBalloonTotal, ULONG *aMemSharedTotal);
// Public methods that are not in IDL (only called internally).
void setAdditionsStatus(VBoxGuestStatusFacility Facility, VBoxGuestStatusCurrent Status, ULONG ulFlags);
# ifdef VBOX_WITH_GUEST_CONTROL
/** Static callback for handling guest notifications. */
static DECLCALLBACK(int) doGuestCtrlNotification(void *pvExtension, uint32_t u32Function, void *pvParms, uint32_t cbParms);
# endif
{
return setErrorInternal(aResultCode, getStaticClassIID(), getStaticComponentName(), aText, false, true);
}
// Internal tasks
struct TaskGuest; /* Worker thread helper. */
#ifdef VBOX_WITH_GUEST_CONTROL
struct CallbackContext
{
/** Pointer to user-supplied data. */
void *pvData;
/** Size of user-supplied data. */
/** Pointer to user-supplied IProgress. */
};
/*
* The map key is the context ID.
*/
struct GuestProcess
{
};
/*
* The map key is the PID (process identifier).
*/
int directoryRead(const char *pszDirectory, const char *pszFilter, ULONG uFlags, ULONG *pcObjects, PRTLISTNODE pList);
/** Handler for guest execution control notifications. */
uint32_t addCtrlCallbackContext(eVBoxGuestCtrlCallbackType enmType, void *pvData, uint32_t cbData, Progress* pProgress);
# endif
struct Data
{
mSupportsGraphics (FALSE) {}
};
# ifdef VBOX_WITH_GUEST_CONTROL
/** General extension callback for guest control. */
volatile uint32_t mNextContextID;
# endif
};
#endif // ____H_GUESTIMPL
/* vi: set tabstop=4 shiftwidth=4 expandtab: */