CONST EFI_HII_STRING_PROTOCOL *mHiiStringProt = NULL;\r
\r
/**\r
-\r
This function locate Hii relative protocols for later usage.\r
+ \r
+ The constructor function caches the protocol pointer of HII Database Protocol\r
+ and Hii String Protocol.\r
+ \r
+ It will ASSERT() if either of the protocol can't be located.\r
+\r
+ @param ImageHandle The firmware allocated handle for the EFI image.\r
+ @param SystemTable A pointer to the EFI System Table.\r
+\r
+ @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.\r
\r
**/\r
-VOID\r
-LocateHiiProtocols (\r
- VOID\r
+EFI_STATUS\r
+EFIAPI\r
+HiiLibConstructor (\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
EFI_STATUS Status;\r
\r
- if (mHiiStringProt != NULL && mHiiDatabaseProt != NULL) {\r
- //\r
- // Only need to initialize the protocol instance once.\r
- //\r
- return;\r
- }\r
-\r
Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &mHiiDatabaseProt);\r
ASSERT_EFI_ERROR (Status);\r
\r
Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &mHiiStringProt);\r
ASSERT_EFI_ERROR (Status);\r
+\r
+ return EFI_SUCCESS;\r
}\r
\r
\r
\r
ASSERT (HiiHandle != NULL);\r
\r
- LocateHiiProtocols ();\r
-\r
VA_START (Args, HiiHandle);\r
PackageListHeader = InternalHiiLibPreparePackages (NumberOfPackages, GuidId, Args);\r
\r
EFI_STATUS Status;\r
ASSERT (IsHiiHandleRegistered (HiiHandle));\r
\r
- LocateHiiProtocols ();\r
-\r
Status = mHiiDatabaseProt->RemovePackageList (mHiiDatabaseProt, HiiHandle);\r
ASSERT_EFI_ERROR (Status);\r
}\r
\r
BufferLength = 0;\r
\r
- LocateHiiProtocols ();\r
-\r
//\r
// Try to find the actual buffer size for HiiHandle Buffer.\r
//\r
BufferSize = 0;\r
HiiPackageList = NULL;\r
\r
- LocateHiiProtocols ();\r
-\r
Status = mHiiDatabaseProt->ExportPackageLists (mHiiDatabaseProt, Handle, &BufferSize, HiiPackageList);\r
ASSERT (Status != EFI_NOT_FOUND);\r
\r
return NULL;\r
}\r
\r
- LocateHiiProtocols ();\r
-\r
//\r
// Retrieve all Hii Handles from HII database\r
//\r
ASSERT (PackageListSize != NULL);\r
ASSERT (PackageListHeader != NULL);\r
\r
- LocateHiiProtocols ();\r
-\r
if (Handle != NULL) {\r
ASSERT (IsHiiHandleRegistered (Handle));\r
}\r
*HandleBufferLength = 0;\r
*HandleBuffer = NULL;\r
\r
- LocateHiiProtocols ();\r
-\r
Status = mHiiDatabaseProt->ListPackageLists (\r
mHiiDatabaseProt,\r
PackageType,\r
HiiPackageList = NULL;\r
BufferSize = 0;\r
\r
- LocateHiiProtocols ();\r
-\r
Status = mHiiDatabaseProt->ExportPackageLists (\r
mHiiDatabaseProt,\r
HiiHandle,\r