VirtualBox

Changeset 42214 in vbox for trunk/src/VBox/Main/include


Ignore:
Timestamp:
Jul 18, 2012 6:02:58 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
79230
Message:

Guest Control 2.0: Update.

Location:
trunk/src/VBox/Main/include
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h

    r42194 r42214  
    3737
    3838
    39 /* Builds a context ID out of the session ID, process ID and an
    40  * increasing count. */
     39/** Maximum number of guest sessions a VM can have. */
     40#define VBOX_GUESTCTRL_MAX_SESSIONS     255
     41/** Maximum of guest processes a guest session can have. */
     42#define VBOX_GUESTCTRL_MAX_PROCESSES    255
     43/** Maximum of callback contexts a guest process can have. */
     44#define VBOX_GUESTCTRL_MAX_CONTEXTS     _64K - 1
     45
     46/** Builds a context ID out of the session ID, process ID and an
     47 *  increasing count. */
    4148#define VBOX_GUESTCTRL_CONTEXTID_MAKE(uSession, uProcess, uCount) \
    4249    (  (uint32_t)((uSession) &   0xff) << 24 \
     
    4451     | (uint32_t)((uCount)   & 0xffff)       \
    4552    )
     53/** Gets the session ID out of a context ID. */
     54#define VBOX_GUESTCTRL_CONTEXTID_GET_SESSION(uContextID) \
     55    ((uContextID) >> 24)
     56/** Gets the process ID out of a context ID. */
     57#define VBOX_GUESTCTRL_CONTEXTID_GET_PROCESS(uContextID) \
     58    (((uContextID) >> 16) & 0xff)
     59/** Gets the conext count of a process out of a context ID. */
     60#define VBOX_GUESTCTRL_CONTEXTID_GET_COUNT(uContextID) \
     61    ((uContextID) & 0xffff)
    4662
    4763
     
    6783public:
    6884
     85    int Cancel(void);
     86
     87    bool Canceled(void);
     88
    6989    int Init(eVBoxGuestCtrlCallbackType enmType);
    7090
     
    7393    eVBoxGuestCtrlCallbackType Type(void);
    7494
    75     int Wait(RTMSINTERVAL timeoutMS);
     95    int Wait(ULONG uTimeoutMS);
    7696
    7797protected:
     
    80100    eVBoxGuestCtrlCallbackType  mType;
    81101    /** Callback flags. */
    82     uint32_t                    mFlags;
     102    uint32_t                    uFlags;
     103    /** Was the callback canceled? */
     104    bool                        fCanceled;
    83105    /** Pointer to user-supplied data. */
    84106    void                       *pvData;
     
    86108    size_t                      cbData;
    87109    /** The event semaphore triggering the*/
    88     RTSEMEVENT                  mEventSem;
     110    RTSEMEVENT                  hEventSem;
    89111    /** Extended error information, if any. */
    90112    ErrorInfo                   mErrorInfo;
    91113};
    92 typedef std::map <uint32_t, GuestCtrlCallback> GuestCtrlCallbacks;
     114typedef std::map < uint32_t, GuestCtrlCallback* > GuestCtrlCallbacks;
    93115
    94116/**
     
    112134public:
    113135
    114     int BuildEnvironmentBlock(void **ppvEnv, uint32_t *pcbEnv, uint32_t *pcEnvVars);
     136    int BuildEnvironmentBlock(void **ppvEnv, size_t *pcbEnv, uint32_t *pcEnvVars);
    115137
    116138    void Clear(void);
     
    144166protected:
    145167
    146     int appendToEnvBlock(const char *pszEnv, void **ppvList, uint32_t *pcbList, uint32_t *pcEnvVars);
     168    int appendToEnvBlock(const char *pszEnv, void **ppvList, size_t *pcbList, uint32_t *pcEnvVars);
    147169
    148170protected:
  • trunk/src/VBox/Main/include/GuestImpl.h

    r42160 r42214  
    205205    /** @name Public internal methods.
    206206     * @{ */
     207    int         dispatchToSession(uint32_t uContextID, uint32_t uFunction, void *pvData, size_t cbData);
    207208    Console    *getConsole(void) { return mParent; }
    208209    int         sessionClose(ComObjPtr<GuestSession> pSession);
  • trunk/src/VBox/Main/include/GuestProcessImpl.h

    r42162 r42214  
    4545    DECLARE_EMPTY_CTOR_DTOR(GuestProcess)
    4646
    47     int     init(Console *aConsole, GuestSession *aSession, uint32_t aProcessID, const GuestProcessInfo &aProcInfo);
     47    int     init(Console *aConsole, GuestSession *aSession, ULONG aProcessID, const GuestProcessInfo &aProcInfo);
    4848    void    uninit(void);
    4949    HRESULT FinalConstruct(void);
     
    6969    /** @name Public internal methods.
    7070     * @{ */
    71     int callbackAdd(const GuestCtrlCallback& theCallback, uint32_t *puContextID);
    72     bool callbackExists(uint32_t uContextID);
     71    int callbackAdd(GuestCtrlCallback *pCallback, ULONG *puContextID);
     72    int callbackDispatcher(uint32_t uContextID, uint32_t uFunction, void *pvData, size_t cbData);
     73    bool callbackExists(ULONG uContextID);
    7374    bool isReady(void);
    74     int prepareExecuteEnv(const char *pszEnv, void **ppvList, uint32_t *pcbList, uint32_t *pcEnvVars);
    75     int readData(ULONG aHandle, ULONG aSize, ULONG aTimeoutMS, ComSafeArrayOut(BYTE, aData));
     75    ULONG getPID(void) { return mData.mPID; }
     76    int onGuestDisconnected(void);
     77    int onProcessInputStatus(uint32_t uStatus, uint32_t uFlags, uint32_t cbDataProcessed);
     78    int onProcessStatusChange(uint32_t uStatus, uint32_t uFlags, uint32_t uPID);
     79    int onProcessOutput(uint32_t uHandle, uint32_t uFlags, void *pvData, uint32_t cbData);
     80    int prepareExecuteEnv(const char *pszEnv, void **ppvList, ULONG *pcbList, ULONG *pcEnvVars);
     81    int readData(ULONG uHandle, ULONG uSize, ULONG uTimeoutMS, BYTE *pbData, size_t cbData);
    7682    int startProcess(void);
    7783    static DECLCALLBACK(int) startProcessThread(RTTHREAD Thread, void *pvUser);
    7884    int terminateProcess(void);
    79     int waitFor(ComSafeArrayIn(ProcessWaitForFlag_T, aFlags), ULONG aTimeoutMS, ProcessWaitReason_T *aReason);
    80     int writeData(ULONG aHandle, ComSafeArrayIn(BYTE, aData), ULONG aTimeoutMS, ULONG *aWritten);
     85    int waitFor(uint32_t fFlags, ULONG uTimeoutMS, ProcessWaitReason_T *penmReason);
     86    int writeData(ULONG uHandle, BYTE const *pbData, size_t cbData, ULONG uTimeoutMS, ULONG *puWritten);
    8187    /** @}  */
    8288
     
    99105        ULONG                    mPID;
    100106        /** Internal, host-side process ID. */
    101         uint32_t                 mProcessID;
     107        ULONG                 mProcessID;
    102108        /** The current process status. */
    103109        ProcessStatus_T          mStatus;
     
    105111        bool                     mStarted;
    106112        /** The next upcoming context ID. */
    107         uint32_t                 mNextContextID;
     113        ULONG                    mNextContextID;
     114        /** The waiting event. */
     115        RTSEMEVENT               mEvent;
    108116    } mData;
     117
     118    friend GuestSession; /* Let's be friends! */
    109119};
    110120
  • trunk/src/VBox/Main/include/GuestSessionImpl.h

    r42194 r42214  
    4848    DECLARE_EMPTY_CTOR_DTOR(GuestSession)
    4949
    50     int     init(Guest *aGuest, uint32_t aSessionID, Utf8Str aUser, Utf8Str aPassword, Utf8Str aDomain, Utf8Str aName);
     50    int     init(Guest *aGuest, ULONG aSessionID, Utf8Str aUser, Utf8Str aPassword, Utf8Str aDomain, Utf8Str aName);
    5151    void    uninit(void);
    5252    HRESULT FinalConstruct(void);
     
    113113    typedef std::vector <ComObjPtr<GuestDirectory> > SessionDirectories;
    114114    typedef std::vector <ComObjPtr<GuestFile> > SessionFiles;
    115     typedef std::map <uint32_t, ComObjPtr<GuestProcess> > SessionProcesses;
     115    /** Map of guest processes. The key specifies the internal process number.
     116     *  To retrieve the process' guest PID use the Id() method of the IProgress interface. */
     117    typedef std::map <ULONG, ComObjPtr<GuestProcess> > SessionProcesses;
    116118
    117119public:
     
    119121     * @{ */
    120122    int                     directoryClose(ComObjPtr<GuestDirectory> pDirectory);
     123    int                     dispatchToProcess(uint32_t uContextID, uint32_t uFunction, void *pvData, size_t cbData);
    121124    int                     fileClose(ComObjPtr<GuestFile> pFile);
    122125    const GuestCredentials &getCredentials(void);
     
    124127    int                     processClose(ComObjPtr<GuestProcess> pProcess);
    125128    int                     processCreateExInteral(GuestProcessInfo &aProcInfo, IGuestProcess **aProcess);
    126     inline bool             processExists(uint32_t uProcessID);
     129    inline bool             processExists(ULONG uProcessID, ComObjPtr<GuestProcess> *pProcess);
     130    inline int              processGetByPID(ULONG uPID, ComObjPtr<GuestProcess> *pProcess);
    127131    /** @}  */
    128132
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette