Changeset 91880 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Oct 20, 2021 11:37:06 AM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 147683
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/USBProxyDevice.cpp
r90051 r91880 816 816 * @param pFilter The filter. 817 817 * @param enmFieldIdx The filter field indext. 818 * @param pHlp The USB helper callback table. 818 819 * @param pNode The CFGM node. 819 820 * @param pszExact The exact value name. 820 821 * @param pszExpr The expression value name. 821 822 */ 822 static int usbProxyQueryNum(PUSBFILTER pFilter, USBFILTERIDX enmFieldIdx, PCFGMNODE pNode, const char *pszExact, const char *pszExpr) 823 static int usbProxyQueryNum(PUSBFILTER pFilter, USBFILTERIDX enmFieldIdx, 824 PCPDMUSBHLP pHlp, PCFGMNODE pNode, 825 const char *pszExact, const char *pszExpr) 823 826 { 824 827 char szTmp[256]; … … 826 829 /* try exact first */ 827 830 uint16_t u16; 828 int rc = CFGMR3QueryU16(pNode, pszExact, &u16);831 int rc = pHlp->pfnCFGMQueryU16(pNode, pszExact, &u16); 829 832 if (RT_SUCCESS(rc)) 830 833 { … … 833 836 834 837 /* 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)); 836 839 if (RT_UNLIKELY(rc != VERR_CFGM_VALUE_NOT_FOUND)) 837 840 { 838 841 szTmp[0] = '\0'; 839 CFGMR3GetName(pNode, szTmp, sizeof(szTmp));842 pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp)); 840 843 LogRel(("usbProxyConstruct: %s: Both %s and %s are present!\n", szTmp, pszExact, pszExpr)); 841 844 return VERR_INVALID_PARAMETER; … … 846 849 { 847 850 szTmp[0] = '\0'; 848 CFGMR3GetName(pNode, szTmp, sizeof(szTmp));851 pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp)); 849 852 LogRel(("usbProxyConstruct: %s: %s query failed, rc=%Rrc\n", szTmp, pszExact, rc)); 850 853 return rc; … … 852 855 853 856 /* expression? */ 854 rc = CFGMR3QueryString(pNode, pszExpr, szTmp, sizeof(szTmp));857 rc = pHlp->pfnCFGMQueryString(pNode, pszExpr, szTmp, sizeof(szTmp)); 855 858 if (RT_SUCCESS(rc)) 856 859 { … … 862 865 { 863 866 szTmp[0] = '\0'; 864 CFGMR3GetName(pNode, szTmp, sizeof(szTmp));867 pHlp->pfnCFGMGetName(pNode, szTmp, sizeof(szTmp)); 865 868 LogRel(("usbProxyConstruct: %s: %s query failed, rc=%Rrc\n", szTmp, pszExpr, rc)); 866 869 return rc; … … 876 879 PDMUSB_CHECK_VERSIONS_RETURN(pUsbIns); 877 880 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 879 884 LogFlow(("usbProxyConstruct: pUsbIns=%p iInstance=%d\n", pUsbIns, iInstance)); 880 885 … … 893 898 */ 894 899 char szAddress[1024]; 895 int rc = CFGMR3QueryString(pCfg, "Address", szAddress, sizeof(szAddress));900 int rc = pHlp->pfnCFGMQueryString(pCfg, "Address", szAddress, sizeof(szAddress)); 896 901 AssertRCReturn(rc, rc); 897 902 898 903 char szBackend[64]; 899 rc = CFGMR3QueryString(pCfg, "Backend", szBackend, sizeof(szBackend));904 rc = pHlp->pfnCFGMQueryString(pCfg, "Backend", szBackend, sizeof(szBackend)); 900 905 AssertRCReturn(rc, rc); 901 906 902 907 void *pvBackend; 903 rc = CFGMR3QueryPtr(pCfg, "pvBackend", &pvBackend);908 rc = pHlp->pfnCFGMQueryPtr(pCfg, "pvBackend", &pvBackend); 904 909 AssertRCReturn(rc, rc); 905 910 … … 977 982 */ 978 983 PCFGMNODE pCfgGlobalDev = pCfgGlobal; 979 PCFGMNODE pCur = CFGMR3GetFirstChild(pCfgGlobal);984 PCFGMNODE pCur = pHlp->pfnCFGMGetFirstChild(pCfgGlobal); 980 985 if (pCur) 981 986 { … … 996 1001 int iBestMatchRate = -1; 997 1002 PCFGMNODE pBestMatch = NULL; 998 for (pCur = CFGMR3GetFirstChild(pCfgGlobal); pCur; pCur = CFGMR3GetNextChild(pCur))1003 for (pCur = pHlp->pfnCFGMGetFirstChild(pCfgGlobal); pCur; pCur = pHlp->pfnCFGMGetNextChild(pCur)) 999 1004 { 1000 1005 /* … … 1005 1010 1006 1011 /* numeric */ 1007 if ( RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_VENDOR_ID, p Cur, "idVendor", "idVendorExpr"))1008 || RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_PRODUCT_ID, p Cur, "idProduct", "idProcutExpr"))1009 || RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_REV, p Cur, "bcdDevice", "bcdDeviceExpr"))1010 || RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_CLASS, p Cur, "bDeviceClass", "bDeviceClassExpr"))1011 || RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_SUB_CLASS, p Cur, "bDeviceSubClass", "bDeviceSubClassExpr"))1012 || RT_FAILURE(usbProxyQueryNum(&Filter, USBFILTERIDX_DEVICE_PROTOCOL, p Cur, "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"))) 1013 1018 continue; /* skip it */ 1014 1019 … … 1017 1022 1018 1023 /* 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")) 1026 1031 LogRel(("usbProxyConstruct: Unknown value(s) in config filter (ignored)!\n")); 1027 1032 … … 1040 1045 } 1041 1046 if (pBestMatch) 1042 pCfgGlobalDev = CFGMR3GetChild(pBestMatch, "Config");1047 pCfgGlobalDev = pHlp->pfnCFGMGetChild(pBestMatch, "Config"); 1043 1048 if (pCfgGlobalDev) 1044 1049 pCfgGlobalDev = pCfgGlobal; … … 1048 1053 * Query the rest of the configuration using the global as fallback. 1049 1054 */ 1050 rc = CFGMR3QueryU32(pCfg, "MaskedIfs", &pThis->fMaskedIfs);1055 rc = pHlp->pfnCFGMQueryU32(pCfg, "MaskedIfs", &pThis->fMaskedIfs); 1051 1056 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1052 rc = CFGMR3QueryU32(pCfgGlobalDev, "MaskedIfs", &pThis->fMaskedIfs);1057 rc = pHlp->pfnCFGMQueryU32(pCfgGlobalDev, "MaskedIfs", &pThis->fMaskedIfs); 1053 1058 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1054 1059 pThis->fMaskedIfs = 0; … … 1057 1062 1058 1063 bool fForce11Device; 1059 rc = CFGMR3QueryBool(pCfg, "Force11Device", &fForce11Device);1064 rc = pHlp->pfnCFGMQueryBool(pCfg, "Force11Device", &fForce11Device); 1060 1065 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1061 rc = CFGMR3QueryBool(pCfgGlobalDev, "Force11Device", &fForce11Device);1066 rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "Force11Device", &fForce11Device); 1062 1067 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1063 1068 fForce11Device = false; … … 1066 1071 1067 1072 bool fForce11PacketSize; 1068 rc = CFGMR3QueryBool(pCfg, "Force11PacketSize", &fForce11PacketSize);1073 rc = pHlp->pfnCFGMQueryBool(pCfg, "Force11PacketSize", &fForce11PacketSize); 1069 1074 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1070 rc = CFGMR3QueryBool(pCfgGlobalDev, "Force11PacketSize", &fForce11PacketSize);1075 rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "Force11PacketSize", &fForce11PacketSize); 1071 1076 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1072 1077 fForce11PacketSize = false; … … 1075 1080 1076 1081 bool fEditAudioSyncEp; 1077 rc = CFGMR3QueryBool(pCfg, "EditAudioSyncEp", &fEditAudioSyncEp);1082 rc = pHlp->pfnCFGMQueryBool(pCfg, "EditAudioSyncEp", &fEditAudioSyncEp); 1078 1083 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1079 rc = CFGMR3QueryBool(pCfgGlobalDev, "EditAudioSyncEp", &fEditAudioSyncEp);1084 rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "EditAudioSyncEp", &fEditAudioSyncEp); 1080 1085 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1081 1086 fEditAudioSyncEp = true; /* NB: On by default! */ … … 1084 1089 1085 1090 bool fEditRemoteWake; 1086 rc = CFGMR3QueryBool(pCfg, "EditRemoteWake", &fEditRemoteWake);1091 rc = pHlp->pfnCFGMQueryBool(pCfg, "EditRemoteWake", &fEditRemoteWake); 1087 1092 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1088 rc = CFGMR3QueryBool(pCfgGlobalDev, "EditRemoteWake", &fEditRemoteWake);1093 rc = pHlp->pfnCFGMQueryBool(pCfgGlobalDev, "EditRemoteWake", &fEditRemoteWake); 1089 1094 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 1090 1095 fEditRemoteWake = true; /* NB: On by default! */
Note:
See TracChangeset
for help on using the changeset viewer.