+ Status = RegisterVariablePolicy (NewPolicy);\r
+\r
+ //\r
+ // If the error returned is EFI_ALREADY_STARTED, we need to check the\r
+ // current database for the variable and see whether it's locked. If it's\r
+ // locked, we're still fine, but also generate a DEBUG_ERROR message so the\r
+ // duplicate lock can be removed.\r
+ //\r
+ if (Status == EFI_ALREADY_STARTED) {\r
+ Status = ValidateSetVariable (VariableName, VendorGuid, 0, 0, NULL);\r
+ if (Status == EFI_WRITE_PROTECTED) {\r
+ DEBUG ((DEBUG_ERROR, " Variable: %g %s is already locked!\n", VendorGuid, VariableName));\r
+ Status = EFI_SUCCESS;\r
+ } else {\r
+ DEBUG ((DEBUG_ERROR, " Variable: %g %s can not be locked!\n", VendorGuid, VariableName));\r
+ Status = EFI_ACCESS_DENIED;\r
+ }\r
+ }\r