Changeset 60107 in vbox for trunk/src/VBox/Main/src-server/generic
- Timestamp:
- Mar 19, 2016 10:22:46 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 106110
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/generic/USBProxyBackendUsbIp.cpp
r60089 r60107 286 286 USBProxyBackend::init(aUsbProxyService, strId, strAddress); 287 287 288 unconst(m_strBackend) = Utf8Str("USBIP"); 289 288 290 m = new Data; 289 291 … … 327 329 int rc2 = RTPollSetDestroy(m->hPollSet); 328 330 AssertRC(rc2); 331 m->hPollSet = NIL_RTPOLLSET; 329 332 } 330 333 } … … 336 339 rc2 = RTPipeClose(m->hWakeupPipeW); 337 340 AssertRC(rc2); 341 m->hWakeupPipeR = m->hWakeupPipeW = NIL_RTPIPE; 338 342 } 339 343 } 340 344 if (RT_FAILURE(rc)) 345 { 341 346 RTSemFastMutexDestroy(m->hMtxDevices); 347 m->hMtxDevices = NIL_RTSEMFASTMUTEX; 348 } 342 349 } 343 350 … … 888 895 /* Make sure the Bus id is 0 terminated. */ 889 896 pDev->szBusId[31] = '\0'; 890 RTStrAPrintf((char **)&pNew->pszAddress, "usbip://%s:%u:%s", m->pszHost, m->uPort, &pDev->szBusId[0]); 891 892 pNew->idVendor = pDev->u16VendorId; 893 pNew->idProduct = pDev->u16ProductId; 894 pNew->bcdDevice = pDev->u16BcdDevice; 895 pNew->bDeviceClass = pDev->bDeviceClass; 896 pNew->bDeviceSubClass = pDev->bDeviceSubClass; 897 pNew->bDeviceProtocol = pDev->bDeviceProtocol; 898 pNew->bNumConfigurations = pDev->bNumConfigurations; 899 pNew->enmState = USBDEVICESTATE_USED_BY_HOST_CAPTURABLE; 900 pNew->u64SerialHash = 0; 901 pNew->bBus = (uint8_t)pDev->u32BusNum; 902 pNew->bPort = (uint8_t)pDev->u32DevNum; 903 904 switch (pDev->u32Speed) 905 { 906 case USBIP_SPEED_LOW: 907 pNew->enmSpeed = USBDEVICESPEED_LOW; 908 pNew->bcdUSB = 1 << 8; 909 break; 910 case USBIP_SPEED_FULL: 911 pNew->enmSpeed = USBDEVICESPEED_FULL; 912 pNew->bcdUSB = 1 << 8; 913 break; 914 case USBIP_SPEED_HIGH: 915 pNew->enmSpeed = USBDEVICESPEED_HIGH; 916 pNew->bcdUSB = 2 << 8; 917 break; 918 case USBIP_SPEED_WIRELESS: 919 pNew->enmSpeed = USBDEVICESPEED_VARIABLE; 920 pNew->bcdUSB = 1 << 8; 921 break; 922 case USBIP_SPEED_SUPER: 923 pNew->enmSpeed = USBDEVICESPEED_SUPER; 924 pNew->bcdUSB = 3 << 8; 925 break; 926 case USBIP_SPEED_UNKNOWN: 927 default: 928 pNew->bcdUSB = 1 << 8; 929 pNew->enmSpeed = USBDEVICESPEED_UNKNOWN; 930 } 931 932 /* link it */ 933 pNew->pNext = NULL; 934 pNew->pPrev = *m->ppNext; 935 *m->ppNext = pNew; 936 m->ppNext = &pNew->pNext; 937 m->cDevicesCur++; 938 939 return VINF_SUCCESS; 897 int rc = RTStrAPrintf((char **)&pNew->pszAddress, "usbip://%s:%u:%s", m->pszHost, m->uPort, &pDev->szBusId[0]); 898 if (RT_SUCCESS(rc)) 899 { 900 pNew->idVendor = pDev->u16VendorId; 901 pNew->idProduct = pDev->u16ProductId; 902 pNew->bcdDevice = pDev->u16BcdDevice; 903 pNew->bDeviceClass = pDev->bDeviceClass; 904 pNew->bDeviceSubClass = pDev->bDeviceSubClass; 905 pNew->bDeviceProtocol = pDev->bDeviceProtocol; 906 pNew->bNumConfigurations = pDev->bNumConfigurations; 907 pNew->enmState = USBDEVICESTATE_USED_BY_HOST_CAPTURABLE; 908 pNew->u64SerialHash = 0; 909 pNew->bBus = (uint8_t)pDev->u32BusNum; 910 pNew->bPort = (uint8_t)pDev->u32DevNum; 911 912 switch (pDev->u32Speed) 913 { 914 case USBIP_SPEED_LOW: 915 pNew->enmSpeed = USBDEVICESPEED_LOW; 916 pNew->bcdUSB = 1 << 8; 917 break; 918 case USBIP_SPEED_FULL: 919 pNew->enmSpeed = USBDEVICESPEED_FULL; 920 pNew->bcdUSB = 1 << 8; 921 break; 922 case USBIP_SPEED_HIGH: 923 pNew->enmSpeed = USBDEVICESPEED_HIGH; 924 pNew->bcdUSB = 2 << 8; 925 break; 926 case USBIP_SPEED_WIRELESS: 927 pNew->enmSpeed = USBDEVICESPEED_VARIABLE; 928 pNew->bcdUSB = 1 << 8; 929 break; 930 case USBIP_SPEED_SUPER: 931 pNew->enmSpeed = USBDEVICESPEED_SUPER; 932 pNew->bcdUSB = 3 << 8; 933 break; 934 case USBIP_SPEED_UNKNOWN: 935 default: 936 pNew->bcdUSB = 1 << 8; 937 pNew->enmSpeed = USBDEVICESPEED_UNKNOWN; 938 } 939 940 /* link it */ 941 pNew->pNext = NULL; 942 pNew->pPrev = *m->ppNext; 943 *m->ppNext = pNew; 944 m->ppNext = &pNew->pNext; 945 m->cDevicesCur++; 946 } 947 948 if (RT_FAILURE(rc)) 949 { 950 if (pNew->pszManufacturer) 951 RTStrFree((char *)pNew->pszManufacturer); 952 if (pNew->pszProduct) 953 RTStrFree((char *)pNew->pszProduct); 954 if (pNew->pszBackend) 955 RTStrFree((char *)pNew->pszBackend); 956 if (pNew->pszAddress) 957 RTStrFree((char *)pNew->pszAddress); 958 RTMemFree(pNew); 959 } 960 961 return rc; 940 962 } 941 963
Note:
See TracChangeset
for help on using the changeset viewer.