Пример #1
0
DECLVBGL(int) VbglHGCMConnect (VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData)
{
    int rc;
    struct VBGLHGCMHANDLEDATA *pHandleData;

    if (!pHandle || !pData)
        return VERR_INVALID_PARAMETER;

    pHandleData = vbglHGCMHandleAlloc();
    if (!pHandleData)
        rc = VERR_NO_MEMORY;
    else
    {
        rc = vbglDriverOpen (&pHandleData->driver);
        if (RT_SUCCESS(rc))
        {
            rc = vbglDriverIOCtl (&pHandleData->driver, VBOXGUEST_IOCTL_HGCM_CONNECT, pData, sizeof (*pData));
            if (RT_SUCCESS(rc))
                rc = pData->result;
            if (RT_SUCCESS(rc))
            {
                *pHandle = pHandleData;
                return rc;
            }

            vbglDriverClose (&pHandleData->driver);
        }

        vbglHGCMHandleFree (pHandleData);
    }

    return rc;
}
Пример #2
0
DECLVBGL(int) VbglR0CrCtlCreate(VBGLCRCTLHANDLE *phCtl)
{
    int rc;

    if (phCtl)
    {
        struct VBGLHGCMHANDLEDATA *pHandleData = vbglHGCMHandleAlloc();

        if (pHandleData)
        {
            rc = vbglDriverOpen(&pHandleData->driver);

            if (RT_SUCCESS(rc))
            {
                *phCtl = pHandleData;
                return VINF_SUCCESS;
            }

            vbglHGCMHandleFree(pHandleData);
        }
        else
            rc = VERR_NO_MEMORY;

        *phCtl = NULL;
    }
    else
        rc = VERR_INVALID_PARAMETER;

    return rc;
}
Пример #3
0
DECLVBGL(int) vboxCrCtlCreate(HVBOXCRCTL *phCtl)
{
    int rc;
    struct VBGLHGCMHANDLEDATA *pHandleData;

    if (!phCtl)
        return VERR_INVALID_PARAMETER;

    pHandleData = vbglHGCMHandleAlloc ();

    rc = VINF_SUCCESS;

    if (!pHandleData)
    {
        rc = VERR_NO_MEMORY;
    }
    else
    {
        rc = vbglDriverOpen (&pHandleData->driver);

        if (RT_SUCCESS(rc))
        {
            *phCtl = pHandleData;
            return VINF_SUCCESS;
        }

        vbglHGCMHandleFree (pHandleData);
    }

    *phCtl = NULL;
    return rc;
}
Пример #4
0
DECLVBGL(int) VbglR0CrCtlDestroy(VBGLCRCTLHANDLE hCtl)
{
    vbglDriverClose(&hCtl->driver);

    vbglHGCMHandleFree(hCtl);

    return VINF_SUCCESS;
}
Пример #5
0
DECLVBGL(int) vboxCrCtlDestroy(HVBOXCRCTL hCtl)
{
    vbglDriverClose(&hCtl->driver);

    vbglHGCMHandleFree(hCtl);

    return VINF_SUCCESS;
}
Пример #6
0
DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData)
{
    int rc = VINF_SUCCESS;

    rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_DISCONNECT, pData, sizeof (*pData));

    vbglDriverClose (&handle->driver);

    vbglHGCMHandleFree (handle);

    return rc;
}