Changeset 43256 in vbox for trunk/src/VBox/Main/src-client
- Timestamp:
- Sep 8, 2012 3:38:02 AM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 80666
- Location:
- trunk/src/VBox/Main/src-client
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r43131 r43256 1518 1518 InsertConfigNode(pLunL0, "Config", &pCfg); 1519 1519 InsertConfigInteger(pCfg, "Object", (uint64_t)mNvram); 1520 #ifdef DEBUG_vvl 1521 InsertConfigInteger(pCfg, "PermanentSave", 1); 1522 #endif 1520 1523 } 1521 1524 -
trunk/src/VBox/Main/src-client/Nvram.cpp
r43234 r43256 50 50 PDMINVRAM INvram; 51 51 int cLoadedVariables; 52 bool fPermanentSave; 52 53 }; 53 54 … … 94 95 cbValue)); 95 96 PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram); 97 if (!pThis->fPermanentSave) 98 { 99 LogFlowFuncLeaveRC(rc); 100 return rc; 101 } 102 103 bool fFlushVariable = (!pu8Value); 96 104 97 105 RT_ZERO(szExtraDataKey); 98 106 RT_ZERO(szExtraDataValue); 99 107 RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VariableName", idxVariable); 100 RTStrPrintf(szExtraDataValue, 1024, "%s", pcszVariableName? pcszVariableName: ""); 108 if (!fFlushVariable) 109 RTStrPrintf(szExtraDataValue, 1024, "%s", pcszVariableName); 101 110 pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw()); 102 111 … … 104 113 RT_ZERO(szExtraDataValue); 105 114 RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VendorGuid", idxVariable); 106 if ( pVendorUuid)115 if (!fFlushVariable) 107 116 RTUuidToStr(pVendorUuid, szExtraDataValue, 1024); 108 117 pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw()); … … 111 120 RT_ZERO(szExtraDataValue); 112 121 RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VariableValueLength", idxVariable); 113 if (! cbValue)122 if (!fFlushVariable) 114 123 RTStrPrintf(szExtraDataValue, 1024, "%d", cbValue); 115 124 pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw()); … … 137 146 LogFlowFuncEnter(); 138 147 PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram); 148 if (!pThis->fPermanentSave) 149 { 150 LogFlowFuncLeaveRC(rc); 151 return rc; 152 } 153 139 154 for (int idxVariable = 0; idxVariable < pThis->cLoadedVariables; ++idxVariable) 140 155 { … … 166 181 *pcbValue)); 167 182 PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram); 183 if (!pThis->fPermanentSave) 184 { 185 rc = VERR_NOT_FOUND; 186 LogFlowFuncLeaveRC(rc); 187 return rc; 188 } 189 168 190 169 191 RT_ZERO(szExtraDataKey); … … 231 253 PNVRAM pThis = PDMINS_2_DATA(pDrvIns, PNVRAM); 232 254 233 if (!CFGMR3AreValuesValid(pCfg, "Object\0")) 255 if (!CFGMR3AreValuesValid(pCfg, "Object\0" 256 "PermanentSave\0")) 234 257 return VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES; 235 258 AssertMsgReturn(PDMDrvHlpNoAttach(pDrvIns) == VERR_PDM_NO_ATTACHED_DRIVER, … … 241 264 AssertMsgRCReturn(rc, ("Configuration error: No/bad \"Object\" value! rc=%Rrc\n", rc), rc); 242 265 pThis->pNvram = (Nvram *)pv; 266 267 bool fPermanentSave = false; 268 rc = CFGMR3QueryBool(pCfg, "PermanentSave", &fPermanentSave); 269 if ( RT_SUCCESS(rc) 270 || rc == VERR_CFGM_VALUE_NOT_FOUND) 271 pThis->fPermanentSave = fPermanentSave; 272 else 273 AssertRCReturn(rc, rc); 243 274 244 275 pDrvIns->IBase.pfnQueryInterface = Nvram::drvNvram_QueryInterface;
Note:
See TracChangeset
for help on using the changeset viewer.