Ejemplo n.º 1
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 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;
}