VirtualBox

Changeset 91880 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Oct 20, 2021 11:37:06 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
147683
Message:

Devices/USB: Change the USB proxy device to access the CFGM API through the USB helper callback table only, bugref:10074

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/USB/USBProxyDevice.cpp

    r90051 r91880  
    816816 * @param   pFilter         The filter.
    817817 * @param   enmFieldIdx     The filter field indext.
     818 * @param   pHlp            The USB helper callback table.
    818819 * @param   pNode           The CFGM node.
    819820 * @param   pszExact        The exact value name.
    820821 * @param   pszExpr         The expression value name.
    821822 */
    822 static int usbProxyQueryNum(PUSBFILTER pFilter, USBFILTERIDX enmFieldIdx, PCFGMNODE pNode, const char *pszExact, const char *pszExpr)
     823static int usbProxyQueryNum(PUSBFILTER pFilter, USBFILTERIDX enmFieldIdx,
     824                            PCPDMUSBHLP pHlp, PCFGMNODE pNode,
     825                            const char *pszExact, const char *pszExpr)
    823826{
    824827    char szTmp[256];
     
    826829    /* try exact first */
    827830    uint16_t u16;
    828     int rc = CFGMR3QueryU16(pNode, pszExact, &u16);
     831    int rc = pHlp->pfnCFGMQueryU16(pNode, pszExact, &u16);
    829832    if (RT_SUCCESS(rc))
    830833    {
     
    833836
    834837        /* make sure only the exact attribute is present. */
    835         rc = CFGMR3QueryString(pNode, pszExpr, szTmp, sizeof(szTmp));
     838        rc = pHlp->pfnCFGMQueryString(pNode, pszExpr, szTmp, sizeof(szTmp));
    836839        if (RT_UNLIKELY(rc != VERR_CFGM_VALUE_NOT_FOUND))
    837840        {
    838841            szTmp[0] = '\0';
    839             CFGMR3GetName(pNode, szTmp, sizeof(szTmp));
     842            pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp));
    840843            LogRel(("usbProxyConstruct: %s: Both %s and %s are present!\n", szTmp, pszExact, pszExpr));
    841844            return VERR_INVALID_PARAMETER;
     
    846849    {
    847850        szTmp[0] = '\0';
    848         CFGMR3GetName(pNode, szTmp, sizeof(szTmp));
     851        pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp));
    849852        LogRel(("usbProxyConstruct: %s: %s query failed, rc=%Rrc\n", szTmp, pszExact, rc));
    850853        return rc;
     
    852855
    853856    /* expression? */
    854     rc = CFGMR3QueryString(pNode, pszExpr, szTmp, sizeof(szTmp));
     857    rc = pHlp->pfnCFGMQueryString(pNode, pszExpr, szTmp, sizeof(szTmp));
    855858    if (RT_SUCCESS(rc))
    856859    {
     
    862865    {
    863866        szTmp[0] = '\0';
    864         CFGMR3GetName(pNode, szTmp, sizeof(szTmp));
     867        pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp));
    865868        LogRel(("usbProxyConstruct: %s: %s query failed, rc=%Rrc\n", szTmp, pszExpr, rc));
    866869        return rc;
     
    876879    PDMUSB_CHECK_VERSIONS_RETURN(pUsbIns);
    877880    RT_NOREF(iInstance);
    878     PUSBPROXYDEV pThis = PDMINS_2_DATA(pUsbIns, PUSBPROXYDEV);
     881    PUSBPROXYDEV    pThis = PDMINS_2_DATA(pUsbIns, PUSBPROXYDEV);
     882    PCPDMUSBHLP     pHlp  = pUsbIns->pHlpR3;
     883
    879884    LogFlow(("usbProxyConstruct: pUsbIns=%p iInstance=%d\n", pUsbIns, iInstance));
    880885
     
    893898     */
    894899    char szAddress[1024];
    895     int rc = CFGMR3QueryString(pCfg, "Address", szAddress, sizeof(szAddress));
     900    int rc = pHlp->pfnCFGMQueryString(pCfg, "Address", szAddress, sizeof(szAddress));
    896901    AssertRCReturn(rc, rc);
    897902
    898903    char szBackend[64];
    899     rc = CFGMR3QueryString(pCfg, "Backend", szBackend, sizeof(szBackend));
     904    rc = pHlp->pfnCFGMQueryString(pCfg, "Backend", szBackend, sizeof(szBackend));
    900905    AssertRCReturn(rc, rc);
    901906
    902907    void *pvBackend;
    903     rc = CFGMR3QueryPtr(pCfg, "pvBackend", &pvBackend);
     908    rc = pHlp->pfnCFGMQueryPtr(pCfg, "pvBackend", &pvBackend);
    904909    AssertRCReturn(rc, rc);
    905910
     
    977982     */
    978983    PCFGMNODE pCfgGlobalDev = pCfgGlobal;
    979     PCFGMNODE pCur = CFGMR3GetFirstChild(pCfgGlobal);
     984    PCFGMNODE pCur = pHlp->pfnCFGMGetFirstChild(pCfgGlobal);
    980985    if (pCur)
    981986    {
     
    9961001        int iBestMatchRate = -1;
    9971002        PCFGMNODE pBestMatch = NULL;
    998         for (pCur = CFGMR3GetFirstChild(pCfgGlobal); pCur; pCur = CFGMR3GetNextChild(pCur))
     1003        for (pCur = pHlp->pfnCFGMGetFirstChild(pCfgGlobal); pCur; pCur = pHlp->pfnCFGMGetNextChild(pCur))
    9991004        {
    10001005            /*
     
    10051010
    10061011            /* numeric */
    1007             if (    RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_VENDOR_ID,        pCur, "idVendor",        "idVendorExpr"))
    1008                 ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_PRODUCT_ID,       pCur, "idProduct",       "idProcutExpr"))
    1009                 ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_REV,       pCur, "bcdDevice",       "bcdDeviceExpr"))
    1010                 ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_CLASS,     pCur, "bDeviceClass",    "bDeviceClassExpr"))
    1011                 ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_SUB_CLASS, pCur, "bDeviceSubClass", "bDeviceSubClassExpr"))
    1012                 ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_PROTOCOL,  pCur, "bDeviceProtocol", "bDeviceProtocolExpr")))
     1012            if (    RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_VENDOR_ID,        pHlp, pCur, "idVendor",        "idVendorExpr"))
     1013                ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_PRODUCT_ID,       pHlp, pCur, "idProduct",       "idProcutExpr"))
     1014                ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_REV,       pHlp, pCur, "bcdDevice",       "bcdDeviceExpr"))
     1015                ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_CLASS,     pHlp, pCur, "bDeviceClass",    "bDeviceClassExpr"))
     1016                ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_SUB_CLASS, pHlp, pCur, "bDeviceSubClass", "bDeviceSubClassExpr"))
     1017                ||  RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_PROTOCOL,  pHlp, pCur, "bDeviceProtocol", "bDeviceProtocolExpr")))
    10131018                continue; /* skip it */
    10141019
     
    10171022
    10181023            /* ignore unknown config values, but not without bitching. */
    1019             if (!CFGMR3AreValuesValid(pCur,
    1020                                       "idVendor\0idVendorExpr\0"
    1021                                       "idProduct\0idProductExpr\0"
    1022                                       "bcdDevice\0bcdDeviceExpr\0"
    1023                                       "bDeviceClass\0bDeviceClassExpr\0"
    1024                                       "bDeviceSubClass\0bDeviceSubClassExpr\0"
    1025                                       "bDeviceProtocol\0bDeviceProtocolExpr\0"))
     1024            if (!pHlp->pfnCFGMAreValuesValid(pCur,
     1025                                             "idVendor\0idVendorExpr\0"
     1026                                             "idProduct\0idProductExpr\0"
     1027                                             "bcdDevice\0bcdDeviceExpr\0"
     1028                                             "bDeviceClass\0bDeviceClassExpr\0"
     1029                                             "bDeviceSubClass\0bDeviceSubClassExpr\0"
     1030                                             "bDeviceProtocol\0bDeviceProtocolExpr\0"))
    10261031                LogRel(("usbProxyConstruct: Unknown value(s) in config filter (ignored)!\n"));
    10271032
     
    10401045        }
    10411046        if (pBestMatch)
    1042             pCfgGlobalDev = CFGMR3GetChild(pBestMatch, "Config");
     1047            pCfgGlobalDev = pHlp->pfnCFGMGetChild(pBestMatch, "Config");
    10431048        if (pCfgGlobalDev)
    10441049            pCfgGlobalDev = pCfgGlobal;
     
    10481053     * Query the rest of the configuration using the global as fallback.
    10491054     */
    1050     rc = CFGMR3QueryU32(pCfg, "MaskedIfs", &pThis->fMaskedIfs);
     1055    rc = pHlp->pfnCFGMQueryU32(pCfg, "MaskedIfs", &pThis->fMaskedIfs);
    10511056    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    1052         rc = CFGMR3QueryU32(pCfgGlobalDev, "MaskedIfs", &pThis->fMaskedIfs);
     1057        rc = pHlp->pfnCFGMQueryU32(pCfgGlobalDev, "MaskedIfs", &pThis->fMaskedIfs);
    10531058    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    10541059        pThis->fMaskedIfs = 0;
     
    10571062
    10581063    bool fForce11Device;
    1059     rc = CFGMR3QueryBool(pCfg, "Force11Device", &fForce11Device);
     1064    rc = pHlp->pfnCFGMQueryBool(pCfg, "Force11Device", &fForce11Device);
    10601065    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    1061         rc = CFGMR3QueryBool(pCfgGlobalDev, "Force11Device", &fForce11Device);
     1066        rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "Force11Device", &fForce11Device);
    10621067    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    10631068        fForce11Device = false;
     
    10661071
    10671072    bool fForce11PacketSize;
    1068     rc = CFGMR3QueryBool(pCfg, "Force11PacketSize", &fForce11PacketSize);
     1073    rc = pHlp->pfnCFGMQueryBool(pCfg, "Force11PacketSize", &fForce11PacketSize);
    10691074    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    1070         rc = CFGMR3QueryBool(pCfgGlobalDev, "Force11PacketSize", &fForce11PacketSize);
     1075        rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "Force11PacketSize", &fForce11PacketSize);
    10711076    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    10721077        fForce11PacketSize = false;
     
    10751080
    10761081    bool fEditAudioSyncEp;
    1077     rc = CFGMR3QueryBool(pCfg, "EditAudioSyncEp", &fEditAudioSyncEp);
     1082    rc = pHlp->pfnCFGMQueryBool(pCfg, "EditAudioSyncEp", &fEditAudioSyncEp);
    10781083    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    1079         rc = CFGMR3QueryBool(pCfgGlobalDev, "EditAudioSyncEp", &fEditAudioSyncEp);
     1084        rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "EditAudioSyncEp", &fEditAudioSyncEp);
    10801085    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    10811086        fEditAudioSyncEp = true;    /* NB: On by default! */
     
    10841089
    10851090    bool fEditRemoteWake;
    1086     rc = CFGMR3QueryBool(pCfg, "EditRemoteWake", &fEditRemoteWake);
     1091    rc = pHlp->pfnCFGMQueryBool(pCfg, "EditRemoteWake", &fEditRemoteWake);
    10871092    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    1088         rc = CFGMR3QueryBool(pCfgGlobalDev, "EditRemoteWake", &fEditRemoteWake);
     1093        rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "EditRemoteWake", &fEditRemoteWake);
    10891094    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    10901095        fEditRemoteWake = true;    /* NB: On by default! */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette