third_party/virtualbox/src/VBox/Devices/USB/VUSBUrb.cpp
/**
 * This is a worker function for vusbMsgCompletion and
 * vusbMsgSubmitSynchronously used to complete the original URB.
 *
 * @param   pUrb    The URB originating from the HCI.
 */
This is a worker function for vusbMsgCompletion and
vusbMsgSubmitSynchronously used to complete the original URB.

@param   pUrb    The URB originating from the HCI.
This is a worker function for vusbMsgCompletion and vusbMsgSubmitSynchronously used to complete the original URB . @param pUrb The URB originating from the HCI .
static void vusbCtrlCompletion(PVUSBURB pUrb)
{
    PVUSBDEV        pDev = pUrb->pVUsb->pDev;
    PVUSBPIPE       pPipe = &pDev->aPipes[pUrb->EndPt];
    PVUSBCTRLEXTRA  pExtra = pPipe->pCtrl;
    LogFlow(("%s: vusbCtrlCompletion: pDev=%p[%s]\n", pUrb->pszDesc, pDev, pDev->pUsbIns->pszName));
    switch (pExtra->enmStage)
    {
        case CTLSTAGE_SETUP:
            vusbMsgSetupCompletion(pUrb);
            break;
        case CTLSTAGE_DATA:
            vusbMsgDataCompletion(pUrb);
            break;
        case CTLSTAGE_STATUS:
            vusbMsgStatusCompletion(pUrb);
            break;
    }
}
static void vusbCtrlCompletion ( PVUSBURB pUrb ) { PVUSBDEV pDev = pUrb -> pVUsb -> pDev ; PVUSBPIPE pPipe = & pDev -> aPipes [ pUrb -> EndPt ] ; PVUSBCTRLEXTRA pExtra = pPipe -> pCtrl ; LogFlow ( ( " \n " , pUrb -> pszDesc , pDev , pDev -> pUsbIns -> pszName ) ) ; switch ( pExtra -> enmStage ) { case CTLSTAGE_SETUP : vusbMsgSetupCompletion ( pUrb ) ; break ; case CTLSTAGE_DATA : vusbMsgDataCompletion ( pUrb ) ; break ; case CTLSTAGE_STATUS : vusbMsgStatusCompletion ( pUrb ) ; break ; } }
This is a worker function for vusbMsgCompletion and
 vusbMsgSubmitSynchronously used to complete the original URB.
This is a worker function for vusbMsgCompletion and vusbMsgSubmitSynchronously used to complete the original URB .