GuestCtrlPrivate.cpp revision 64a9bca762c181bd885d17357938a0412d775e1b
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * Internal helpers/structures for guest control functionality.
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * Copyright (C) 2011-2013 Oracle Corporation
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * available from http://www.virtualbox.org. This file is free software;
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * you can redistribute it and/or modify it under the terms of the GNU
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * General Public License (GPL) as published by the Free Software
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync/******************************************************************************
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * Header Files *
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync ******************************************************************************/
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync#endif /* DEBUG */
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync/******************************************************************************
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync * Structures and Typedefs *
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync ******************************************************************************/
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsyncint GuestCtrlEvent::Signal(int rc /*= VINF_SUCCESS*/)
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync AssertReturn(hEventSem != NIL_RTSEMEVENT, VERR_CANCELLED);
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync AssertReturn(hEventSem != NIL_RTSEMEVENT, VERR_CANCELLED);
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync///////////////////////////////////////////////////////////////////////////////
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsyncGuestCtrlCallback::GuestCtrlCallback(CALLBACKTYPE enmType)
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync AssertReturn(enmType > CALLBACKTYPE_UNKNOWN, VERR_INVALID_PARAMETER);
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync pvData = (PCALLBACKDATA_SESSION_NOTIFY)RTMemAllocZ(sizeof(CALLBACKDATA_SESSION_NOTIFY));
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync pvData = (PCALLBACKDATA_PROC_STATUS)RTMemAllocZ(sizeof(CALLBACKDATA_PROC_STATUS));
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync pvData = (PCALLBACKDATA_PROC_OUTPUT)RTMemAllocZ(sizeof(CALLBACKDATA_PROC_OUTPUT));
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync pvData = (PCALLBACKDATA_PROC_INPUT)RTMemAllocZ(sizeof(CALLBACKDATA_PROC_INPUT));
46633cdb66707c52c31cadcfbc4ce38c68f47d2evboxsync AssertMsgFailed(("Unknown callback type specified (%ld)\n", enmType));
return rc;
switch (mType)
case CALLBACKTYPE_PROC_OUTPUT:
case CALLBACKTYPE_FILE_READ:
if (pvData)
cbData = 0;
if (pvPayload)
cbPayload = 0;
if (!cbCallback)
return VINF_SUCCESS;
switch (mType)
case CALLBACKTYPE_PROC_STATUS:
case CALLBACKTYPE_PROC_OUTPUT:
case CALLBACKTYPE_PROC_INPUT:
case CALLBACKTYPE_FILE_OPEN:
case CALLBACKTYPE_FILE_CLOSE:
case CALLBACKTYPE_FILE_READ:
case CALLBACKTYPE_FILE_WRITE:
case CALLBACKTYPE_FILE_SEEK:
case CALLBACKTYPE_FILE_TELL:
return rc;
if (!cbToWrite)
return VINF_SUCCESS;
if (!pvPayload)
return VERR_NO_MEMORY;
return VINF_SUCCESS;
: mFlags(0),
Destroy();
if (cEnv)
char *pszEnv;
if (pcbEnv)
if (pcEnvVars)
return rc;
++it)
return rc;
size_t s = 0;
++it, ++s)
return VINF_SUCCESS;
if (pvEnv)
return strRet;
return VERR_INVALID_PARAMETER;
*pszString++;
return rc;
return VINF_SUCCESS;
size_t p = 0;
#ifdef DEBUG
return rc;
return VINF_SUCCESS;
return VERR_NOT_FOUND;
++it)
int GuestEnvironment::appendToEnvBlock(const char *pszEnv, void **ppvList, size_t *pcbList, uint32_t *pcEnvVars)
if (*ppvList)
char *pszTmp;
*pcEnvVars = 0;
*pcbList = 0;
return rc;
#ifdef DEBUG
catch (int rc2)
return rc;
#ifdef DEBUG
catch (int rc2)
return rc;
Clear();
#ifdef DEBUG
if (pszValue)
return VINF_SUCCESS;
return VERR_NOT_FOUND;
return iVal;
return NULL;
if (pszValue)
return VINF_SUCCESS;
return VERR_NOT_FOUND;
return uVal;
if (pszValue)
return rc;
: m_cbAllocated(0),
m_cbSize(0),
m_cbOffset(0),
Destroy();
if (fAddToSet)
if (cbInBuf == 0)
m_cbOffset = 0;
if (pvNew)
return rc;
if (m_pbBuffer)
m_cbAllocated = 0;
m_cbSize = 0;
m_cbOffset = 0;
#ifdef DEBUG
int rc = RTFileOpen(&hFile, pszFile, RTFILE_O_CREATE_REPLACE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE);
return m_cbOffset;
return m_cbSize;
if ( !m_pbBuffer
|| !m_cbSize)
return VERR_NO_DATA;
return VERR_NO_DATA;
while (*pszStart)
if (pszSep)
return rc;
if ( !uDistance
uDistance++;
return rc;
return VINF_SUCCESS;
uCount = 0;
uCount++;
if (puContextID)
return vrc;
uContextID));
return VINF_SUCCESS;
return VERR_NOT_FOUND;
return vrc;
#ifndef VBOX_GUESTCTRL_TEST_CASE
return vrc;