USBProxyDevice-vrdp.cpp revision d0e467f88aeb4288b409908dbe1b96d07c7133b2
/* $Id$ */
/** @file
* USB device proxy - the VRDP backend, calls the RemoteUSBBackend methods.
*/
/*
* Copyright (C) 2006-2010 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#define LOG_GROUP LOG_GROUP_DRV_USBPROXY
#include "../USBProxyDevice.h"
/**
* Backend data for the VRDP USB Proxy device backend.
*/
typedef struct USBPROXYDEVVRDP
{
/*
* The USB proxy device functions.
*/
{
LogFlow(("usbProxyVrdpOpen: pProxyDev=%p pszAddress=%s, pvBackend=%p\n", pProxyDev, pszAddress, pvBackend));
int rc = VINF_SUCCESS;
{
if (RT_SUCCESS (rc))
{
if (pDevVrdp)
{
return VINF_SUCCESS;
}
rc = VERR_NO_MEMORY;
}
}
else
{
AssertFailed();
}
return rc;
}
{
}
{
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return rc;
}
{
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
LogFlow(("usbProxyVrdpClaimInterface: pProxyDev=%s ifnum=%#x\n", pProxyDev->pUsbIns->pszName, ifnum));
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
LogFlow(("usbProxyVrdpReleaseInterface: pProxyDev=%s ifnum=%#x\n", pProxyDev->pUsbIns->pszName, ifnum));
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
LogFlow(("usbProxyVrdpSetInterface: pProxyDev=%p ifnum=%#x setting=%#x\n", pProxyDev, ifnum, setting));
int rc = pDevVrdp->pCallback->pfnInterfaceSetting (pDevVrdp->pDevice, (uint8_t)ifnum, (uint8_t)setting);
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
/** @todo implement isochronous transfers for USB over VRDP. */
{
Log(("usbproxy: isochronous transfers aren't implemented yet.\n"));
return false;
}
int rc = pDevVrdp->pCallback->pfnQueueURB (pDevVrdp->pDevice, pUrb->enmType, pUrb->EndPt, pUrb->enmDir, pUrb->cbData,
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return RT_SUCCESS(rc);
}
{
int rc = pDevVrdp->pCallback->pfnReapURB (pDevVrdp->pDevice, cMillies, (void **)&pUrb, &cbData, &u32Err);
{
}
if (rc == VERR_VUSB_DEVICE_NOT_ATTACHED)
{
}
return pUrb;
}
{
}
{
}
/**
* The VRDP USB Proxy Backend operations.
*/
extern const USBPROXYBACK g_USBProxyDeviceVRDP =
{
"vrdp",
NULL,
0
};