EFI_HANDLE mHandle = NULL;\r
EFI_EVENT mVirtualAddressChangeEvent = NULL;\r
EFI_EVENT mFtwRegistration = NULL;\r
-extern LIST_ENTRY mLockedVariableList;\r
-extern LIST_ENTRY mVarCheckVariableList;\r
-extern UINT32 mNumberOfHandler;\r
-extern VAR_CHECK_SET_VARIABLE_CHECK_HANDLER *mHandlerTable;\r
extern BOOLEAN mEndOfDxe;\r
+VOID ***mVarCheckAddressPointer = NULL;\r
+UINTN mVarCheckAddressPointerCount = 0;\r
EDKII_VARIABLE_LOCK_PROTOCOL mVariableLock = { VariableLockRequestToLock };\r
EDKII_VAR_CHECK_PROTOCOL mVarCheck = { VarCheckRegisterSetVariableCheckHandler,\r
VarCheckVariablePropertySet,\r
IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
UINTN Index;\r
\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetBlockSize);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->VariableGlobal.HobVariableBase);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);\r
EfiConvertPointer (0x0, (VOID **) &mNvVariableCache);\r
- EfiConvertPointer (0x0, (VOID **) &mHandlerTable);\r
- for (Index = 0; Index < mNumberOfHandler; Index++) {\r
- EfiConvertPointer (0x0, (VOID **) &mHandlerTable[Index]);\r
- }\r
-\r
- Status = EfiConvertList (0x0, &mLockedVariableList);\r
- ASSERT_EFI_ERROR (Status);\r
\r
- Status = EfiConvertList (0x0, &mVarCheckVariableList);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (mAuthContextOut.AddressPointer != NULL) {\r
+ for (Index = 0; Index < mAuthContextOut.AddressPointerCount; Index++) {\r
+ EfiConvertPointer (0x0, (VOID **) mAuthContextOut.AddressPointer[Index]);\r
+ }\r
+ }\r
\r
- if (mContextOut.AddressPointer != NULL) {\r
- for (Index = 0; Index < mContextOut.AddressPointerCount; Index++) {\r
- EfiConvertPointer (0x0, (VOID **) mContextOut.AddressPointer[Index]);\r
+ if (mVarCheckAddressPointer != NULL) {\r
+ for (Index = 0; Index < mVarCheckAddressPointerCount; Index++) {\r
+ EfiConvertPointer (0x0, (VOID **) mVarCheckAddressPointer[Index]);\r
}\r
}\r
}\r
VOID *Context\r
)\r
{\r
- //\r
- // Set the End Of DXE bit in case the EFI_END_OF_DXE_EVENT_GROUP_GUID event is not signaled.\r
- //\r
- mEndOfDxe = TRUE;\r
- //\r
- // The initialization for variable quota.\r
- //\r
- InitializeVariableQuota ();\r
+ if (!mEndOfDxe) {\r
+ //\r
+ // Set the End Of DXE bit in case the EFI_END_OF_DXE_EVENT_GROUP_GUID event is not signaled.\r
+ //\r
+ mEndOfDxe = TRUE;\r
+ mVarCheckAddressPointer = VarCheckLibInitializeAtEndOfDxe (&mVarCheckAddressPointerCount);\r
+ //\r
+ // The initialization for variable quota.\r
+ //\r
+ InitializeVariableQuota ();\r
+ }\r
ReclaimForOS ();\r
if (FeaturePcdGet (PcdVariableCollectStatistics)) {\r
if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
VOID *Context\r
)\r
{\r
+ DEBUG ((EFI_D_INFO, "[Variable]END_OF_DXE is signaled\n"));\r
mEndOfDxe = TRUE;\r
+ mVarCheckAddressPointer = VarCheckLibInitializeAtEndOfDxe (&mVarCheckAddressPointerCount);\r
//\r
// The initialization for variable quota.\r
//\r