+EFI_VFR_RETURN_CODE\r
+CVfrDataStorage::AddBufferVarStoreFieldInfo (\r
+ IN EFI_VARSTORE_INFO *Info\r
+ )\r
+{\r
+ BufferVarStoreFieldInfoNode *pNew;\r
+\r
+ if ((pNew = new BufferVarStoreFieldInfoNode(Info)) == NULL) {\r
+ return VFR_RETURN_FATAL_ERROR;\r
+ }\r
+\r
+ if (mBufferFieldInfoListHead == NULL) {\r
+ mBufferFieldInfoListHead = pNew;\r
+ mBufferFieldInfoListTail= pNew;\r
+ } else {\r
+ mBufferFieldInfoListTail->mNext = pNew;\r
+ mBufferFieldInfoListTail = pNew;\r
+ }\r
+\r
+ return VFR_RETURN_SUCCESS;\r
+}\r
+\r
+EFI_VFR_RETURN_CODE\r
+CVfrDataStorage::GetBufferVarStoreFieldInfo (\r
+ IN OUT EFI_VARSTORE_INFO *Info\r
+ )\r
+{\r
+ BufferVarStoreFieldInfoNode *pNode;\r
+\r
+ pNode = mBufferFieldInfoListHead;\r
+ while (pNode != NULL) {\r
+ if (Info->mVarStoreId == pNode->mVarStoreInfo.mVarStoreId &&\r
+ Info->mInfo.mVarOffset == pNode->mVarStoreInfo.mInfo.mVarOffset) {\r
+ Info->mVarTotalSize = pNode->mVarStoreInfo.mVarTotalSize;\r
+ Info->mVarType = pNode->mVarStoreInfo.mVarType;\r
+ return VFR_RETURN_SUCCESS;\r
+ }\r
+ pNode = pNode->mNext;\r
+ }\r
+ return VFR_RETURN_FATAL_ERROR;\r
+}\r
+\r