\r
EFI_VFR_RETURN_CODE\r
CVfrDataStorage::DeclareNameVarStoreBegin (\r
- IN CHAR8 *StoreName\r
+ IN CHAR8 *StoreName,\r
+ IN EFI_VARSTORE_ID VarStoreId\r
)\r
{\r
SVfrVarStorageNode *pNode = NULL;\r
- EFI_VARSTORE_ID VarStoreId;\r
+ EFI_VARSTORE_ID TmpVarStoreId;\r
\r
if (StoreName == NULL) {\r
return VFR_RETURN_FATAL_ERROR;\r
}\r
\r
- if (GetVarStoreId (StoreName, &VarStoreId) == VFR_RETURN_SUCCESS) {\r
+ if (GetVarStoreId (StoreName, &TmpVarStoreId) == VFR_RETURN_SUCCESS) {\r
return VFR_RETURN_REDEFINED;\r
}\r
+ \r
+ if (VarStoreId == EFI_VARSTORE_ID_INVALID) {\r
+ VarStoreId = GetFreeVarStoreId (EFI_VFR_VARSTORE_NAME);\r
+ } else {\r
+ if (ChekVarStoreIdFree (VarStoreId) == FALSE) {\r
+ return VFR_RETURN_VARSTOREID_REDEFINED;\r
+ }\r
+ MarkVarStoreIdUsed (VarStoreId);\r
+ }\r
\r
- VarStoreId = GetFreeVarStoreId (EFI_VFR_VARSTORE_NAME);\r
if ((pNode = new SVfrVarStorageNode (StoreName, VarStoreId)) == NULL) {\r
return VFR_RETURN_UNDEFINED;\r
}\r
CHAR8 Index;\r
\r
if (BaseVarId == NULL && Name == NULL) {\r
+ if (QuestionId == EFI_QUESTION_ID_INVALID) {\r
+ QuestionId = GetFreeQuestionId ();\r
+ } else {\r
+ if (ChekQuestionIdFree (QuestionId) == FALSE) {\r
+ goto Err;\r
+ }\r
+ MarkQuestionIdUsed (QuestionId);\r
+ }\r
return;\r
}\r
\r
CHAR8 Index;\r
\r
if (BaseVarId == NULL && Name == NULL) {\r
+ if (QuestionId == EFI_QUESTION_ID_INVALID) {\r
+ QuestionId = GetFreeQuestionId ();\r
+ } else {\r
+ if (ChekQuestionIdFree (QuestionId) == FALSE) {\r
+ goto Err;\r
+ }\r
+ MarkQuestionIdUsed (QuestionId);\r
+ }\r
return;\r
}\r
\r