Changeset 42214 in vbox for trunk/src/VBox/Main/include
- Timestamp:
- Jul 18, 2012 6:02:58 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 79230
- Location:
- trunk/src/VBox/Main/include
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h
r42194 r42214 37 37 38 38 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. */ 41 48 #define VBOX_GUESTCTRL_CONTEXTID_MAKE(uSession, uProcess, uCount) \ 42 49 ( (uint32_t)((uSession) & 0xff) << 24 \ … … 44 51 | (uint32_t)((uCount) & 0xffff) \ 45 52 ) 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) 46 62 47 63 … … 67 83 public: 68 84 85 int Cancel(void); 86 87 bool Canceled(void); 88 69 89 int Init(eVBoxGuestCtrlCallbackType enmType); 70 90 … … 73 93 eVBoxGuestCtrlCallbackType Type(void); 74 94 75 int Wait( RTMSINTERVAL timeoutMS);95 int Wait(ULONG uTimeoutMS); 76 96 77 97 protected: … … 80 100 eVBoxGuestCtrlCallbackType mType; 81 101 /** Callback flags. */ 82 uint32_t mFlags; 102 uint32_t uFlags; 103 /** Was the callback canceled? */ 104 bool fCanceled; 83 105 /** Pointer to user-supplied data. */ 84 106 void *pvData; … … 86 108 size_t cbData; 87 109 /** The event semaphore triggering the*/ 88 RTSEMEVENT mEventSem;110 RTSEMEVENT hEventSem; 89 111 /** Extended error information, if any. */ 90 112 ErrorInfo mErrorInfo; 91 113 }; 92 typedef std::map < uint32_t, GuestCtrlCallback> GuestCtrlCallbacks;114 typedef std::map < uint32_t, GuestCtrlCallback* > GuestCtrlCallbacks; 93 115 94 116 /** … … 112 134 public: 113 135 114 int BuildEnvironmentBlock(void **ppvEnv, uint32_t *pcbEnv, uint32_t *pcEnvVars);136 int BuildEnvironmentBlock(void **ppvEnv, size_t *pcbEnv, uint32_t *pcEnvVars); 115 137 116 138 void Clear(void); … … 144 166 protected: 145 167 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); 147 169 148 170 protected: -
trunk/src/VBox/Main/include/GuestImpl.h
r42160 r42214 205 205 /** @name Public internal methods. 206 206 * @{ */ 207 int dispatchToSession(uint32_t uContextID, uint32_t uFunction, void *pvData, size_t cbData); 207 208 Console *getConsole(void) { return mParent; } 208 209 int sessionClose(ComObjPtr<GuestSession> pSession); -
trunk/src/VBox/Main/include/GuestProcessImpl.h
r42162 r42214 45 45 DECLARE_EMPTY_CTOR_DTOR(GuestProcess) 46 46 47 int init(Console *aConsole, GuestSession *aSession, uint32_taProcessID, const GuestProcessInfo &aProcInfo);47 int init(Console *aConsole, GuestSession *aSession, ULONG aProcessID, const GuestProcessInfo &aProcInfo); 48 48 void uninit(void); 49 49 HRESULT FinalConstruct(void); … … 69 69 /** @name Public internal methods. 70 70 * @{ */ 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); 73 74 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); 76 82 int startProcess(void); 77 83 static DECLCALLBACK(int) startProcessThread(RTTHREAD Thread, void *pvUser); 78 84 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); 81 87 /** @} */ 82 88 … … 99 105 ULONG mPID; 100 106 /** Internal, host-side process ID. */ 101 uint32_tmProcessID;107 ULONG mProcessID; 102 108 /** The current process status. */ 103 109 ProcessStatus_T mStatus; … … 105 111 bool mStarted; 106 112 /** The next upcoming context ID. */ 107 uint32_t mNextContextID; 113 ULONG mNextContextID; 114 /** The waiting event. */ 115 RTSEMEVENT mEvent; 108 116 } mData; 117 118 friend GuestSession; /* Let's be friends! */ 109 119 }; 110 120 -
trunk/src/VBox/Main/include/GuestSessionImpl.h
r42194 r42214 48 48 DECLARE_EMPTY_CTOR_DTOR(GuestSession) 49 49 50 int init(Guest *aGuest, uint32_taSessionID, Utf8Str aUser, Utf8Str aPassword, Utf8Str aDomain, Utf8Str aName);50 int init(Guest *aGuest, ULONG aSessionID, Utf8Str aUser, Utf8Str aPassword, Utf8Str aDomain, Utf8Str aName); 51 51 void uninit(void); 52 52 HRESULT FinalConstruct(void); … … 113 113 typedef std::vector <ComObjPtr<GuestDirectory> > SessionDirectories; 114 114 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; 116 118 117 119 public: … … 119 121 * @{ */ 120 122 int directoryClose(ComObjPtr<GuestDirectory> pDirectory); 123 int dispatchToProcess(uint32_t uContextID, uint32_t uFunction, void *pvData, size_t cbData); 121 124 int fileClose(ComObjPtr<GuestFile> pFile); 122 125 const GuestCredentials &getCredentials(void); … … 124 127 int processClose(ComObjPtr<GuestProcess> pProcess); 125 128 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); 127 131 /** @} */ 128 132
Note:
See TracChangeset
for help on using the changeset viewer.