Changeset 50228 in vbox for trunk/src/VBox/Devices/USB/win
- Timestamp:
- Jan 24, 2014 9:16:37 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 91829
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/win/USBProxyDevice-win.cpp
r49814 r50228 9 9 10 10 /* 11 * Copyright (C) 2006-201 1Oracle Corporation11 * Copyright (C) 2006-2014 Oracle Corporation 12 12 * 13 13 * This file is part of VirtualBox Open Source Edition (OSE), as … … 90 90 * @returns VBox status code. 91 91 */ 92 static int usbProxyWinOpen(PUSBPROXYDEV pProxyDev, const char *pszAddress, void *pvBackend) 93 { 94 /* Here you just need to use pProxyDev->priv to store whatever per-device 95 * data is needed 96 */ 97 /* 98 * Allocate private device instance data and use USBPROXYDEV::Backend::pv to point to it. 99 */ 100 PPRIV_USBW32 pPriv = (PPRIV_USBW32)RTMemAllocZ(sizeof(PRIV_USBW32)); 101 if (!pPriv) 102 return VERR_NO_MEMORY; 103 pProxyDev->Backend.pv = pPriv; 92 static DECLCALLBACK(int) usbProxyWinOpen(PUSBPROXYDEV pProxyDev, const char *pszAddress, void *pvBackend) 93 { 94 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 104 95 105 96 int rc = VINF_SUCCESS; … … 192 183 RTMemFree(pPriv->paQueuedUrbs); 193 184 RTMemFree(pPriv->paHandles); 194 RTMemFree(pPriv);195 pProxyDev->Backend.pv = NULL;196 185 return rc; 197 186 } … … 200 189 * Copy the device and free resources associated with the backend. 201 190 */ 202 static voidusbProxyWinClose(PUSBPROXYDEV pProxyDev)191 static DECLCALLBACK(void) usbProxyWinClose(PUSBPROXYDEV pProxyDev) 203 192 { 204 193 /* Here we just close the device and free up p->priv … … 206 195 * that will have been done already 207 196 */ 208 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;197 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 209 198 Assert(pPriv); 210 199 if (!pPriv) … … 233 222 RTMemFree(pPriv->paQueuedUrbs); 234 223 RTMemFree(pPriv->paHandles); 235 RTMemFree(pPriv); 236 pProxyDev->Backend.pv = NULL; 237 } 238 239 240 static int usbProxyWinReset(PUSBPROXYDEV pProxyDev, bool fResetOnLinux) 241 { 242 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv; 224 } 225 226 227 static DECLCALLBACK(int) usbProxyWinReset(PUSBPROXYDEV pProxyDev, bool fResetOnLinux) 228 { 229 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 243 230 DWORD cbReturned; 244 231 int rc; … … 271 258 } 272 259 273 static intusbProxyWinSetConfig(PUSBPROXYDEV pProxyDev, int cfg)260 static DECLCALLBACK(int) usbProxyWinSetConfig(PUSBPROXYDEV pProxyDev, int cfg) 274 261 { 275 262 /* Send a SET_CONFIGURATION command to the device. We don't do this … … 280 267 * point but it has to be synchronous. 281 268 */ 282 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;269 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 283 270 USBSUP_SET_CONFIG in; 284 271 DWORD cbReturned; … … 306 293 } 307 294 308 static intusbProxyWinClaimInterface(PUSBPROXYDEV p, int ifnum)295 static DECLCALLBACK(int) usbProxyWinClaimInterface(PUSBPROXYDEV p, int ifnum) 309 296 { 310 297 /* Called just before we use an interface. Needed on Linux to claim … … 313 300 * Not relevant for Windows. 314 301 */ 315 PPRIV_USBW32 pPriv = (PPRIV_USBW32)p->Backend.pv;302 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 316 303 317 304 pPriv->bInterfaceNumber = ifnum; … … 321 308 } 322 309 323 static intusbProxyWinReleaseInterface(PUSBPROXYDEV p, int ifnum)310 static DECLCALLBACK(int) usbProxyWinReleaseInterface(PUSBPROXYDEV p, int ifnum) 324 311 { 325 312 /* The opposite of claim_interface. */ 326 PPRIV_USBW32 pPriv = (PPRIV_USBW32)p->Backend.pv;313 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 327 314 328 315 Assert(pPriv); … … 330 317 } 331 318 332 static intusbProxyWinSetInterface(PUSBPROXYDEV pProxyDev, int ifnum, int setting)319 static DECLCALLBACK(int) usbProxyWinSetInterface(PUSBPROXYDEV pProxyDev, int ifnum, int setting) 333 320 { 334 321 /* Select an alternate setting for an interface, the same applies … … 336 323 * message if you want but it must be synchronous 337 324 */ 338 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;325 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 339 326 USBSUP_SELECT_INTERFACE in; 340 327 DWORD cbReturned; … … 365 352 * Clears the halted endpoint 'ep'. 366 353 */ 367 static boolusbProxyWinClearHaltedEndPt(PUSBPROXYDEV pProxyDev, unsigned int ep)368 { 369 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;354 static DECLCALLBACK(bool) usbProxyWinClearHaltedEndPt(PUSBPROXYDEV pProxyDev, unsigned int ep) 355 { 356 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 370 357 USBSUP_CLEAR_ENDPOINT in; 371 358 DWORD cbReturned; … … 396 383 static int usbProxyWinAbortEndPt(PUSBPROXYDEV pProxyDev, unsigned int ep) 397 384 { 398 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;385 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 399 386 USBSUP_CLEAR_ENDPOINT in; 400 387 DWORD cbReturned; … … 425 412 * @copydoc USBPROXYBACK::pfnUrbQueue 426 413 */ 427 static intusbProxyWinUrbQueue(PVUSBURB pUrb)414 static DECLCALLBACK(int) usbProxyWinUrbQueue(PVUSBURB pUrb) 428 415 { 429 416 PUSBPROXYDEV pProxyDev = PDMINS_2_DATA(pUrb->pUsbIns, PUSBPROXYDEV); 430 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;417 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 431 418 Assert(pPriv); 432 419 … … 571 558 * wait at all. 572 559 */ 573 static PVUSBURBusbProxyWinUrbReap(PUSBPROXYDEV pProxyDev, RTMSINTERVAL cMillies)574 { 575 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;560 static DECLCALLBACK(PVUSBURB) usbProxyWinUrbReap(PUSBPROXYDEV pProxyDev, RTMSINTERVAL cMillies) 561 { 562 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 576 563 AssertReturn(pPriv, NULL); 577 564 … … 732 719 * exactly what the guest wants to do. 733 720 */ 734 static voidusbProxyWinUrbCancel(PVUSBURB pUrb)721 static DECLCALLBACK(void) usbProxyWinUrbCancel(PVUSBURB pUrb) 735 722 { 736 723 PUSBPROXYDEV pProxyDev = PDMINS_2_DATA(pUrb->pUsbIns, PUSBPROXYDEV); 737 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;724 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 738 725 PQUEUED_URB pQUrbWin = (PQUEUED_URB)pUrb->Dev.pvPrivate; 739 726 int rc; … … 760 747 } 761 748 762 static intusbProxyWinWakeup(PUSBPROXYDEV pProxyDev)763 { 764 PPRIV_USBW32 pPriv = (PPRIV_USBW32)pProxyDev->Backend.pv;749 static DECLCALLBACK(int) usbProxyWinWakeup(PUSBPROXYDEV pProxyDev) 750 { 751 PPRIV_USBW32 pPriv = USBPROXYDEV_2_DATA(pProxyDev, PPRIV_USBW32); 765 752 766 753 SetEvent(pPriv->hEventWakeup); … … 773 760 extern const USBPROXYBACK g_USBProxyDeviceHost = 774 761 { 762 /* pszName */ 775 763 "host", 764 /* cbBackend */ 765 sizeof(PRIV_USBW32), 776 766 usbProxyWinOpen, 777 767 NULL,
Note:
See TracChangeset
for help on using the changeset viewer.