]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/HiiLib/HiiLib.c
HiiLibGetCurrentLanguage returns the current UEFI variable "PlatformLang" (if this...
[mirror_edk2.git] / MdePkg / Library / HiiLib / HiiLib.c
index d5d66704054c7af62e846a4cb64f6e461011b4ba..cee31b20ae9cba6286454b786622b2a0a3108fcd 100644 (file)
@@ -18,29 +18,35 @@ CONST EFI_HII_DATABASE_PROTOCOL   *mHiiDatabaseProt = NULL;
 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
@@ -213,8 +219,6 @@ HiiLibAddPackages (
 \r
   ASSERT (HiiHandle != NULL);\r
 \r
-  LocateHiiProtocols ();\r
-\r
   VA_START (Args, HiiHandle);\r
   PackageListHeader = InternalHiiLibPreparePackages (NumberOfPackages, GuidId, Args);\r
 \r
@@ -250,8 +254,6 @@ HiiLibRemovePackages (
   EFI_STATUS Status;\r
   ASSERT (IsHiiHandleRegistered (HiiHandle));\r
 \r
-  LocateHiiProtocols ();\r
-\r
   Status = mHiiDatabaseProt->RemovePackageList (mHiiDatabaseProt, HiiHandle);\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
@@ -287,8 +289,6 @@ HiiLibGetHiiHandles (
 \r
   BufferLength = 0;\r
 \r
-  LocateHiiProtocols ();\r
-\r
   //\r
   // Try to find the actual buffer size for HiiHandle Buffer.\r
   //\r
@@ -353,8 +353,6 @@ HiiLibExtractGuidFromHiiHandle (
   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
@@ -450,8 +448,6 @@ HiiLibDevicePathToHiiHandle (
     return NULL;\r
   }\r
 \r
-  LocateHiiProtocols ();\r
-\r
   //\r
   // Retrieve all Hii Handles from HII database\r
   //\r
@@ -538,8 +534,6 @@ HiiLibExportPackageLists (
   ASSERT (PackageListSize != NULL);\r
   ASSERT (PackageListHeader != NULL);\r
 \r
-  LocateHiiProtocols ();\r
-\r
   if (Handle != NULL) {\r
     ASSERT (IsHiiHandleRegistered (Handle));\r
   }\r
@@ -597,8 +591,6 @@ HiiLibListPackageLists (
   *HandleBufferLength = 0;\r
   *HandleBuffer       = NULL;\r
 \r
-  LocateHiiProtocols ();\r
-\r
   Status = mHiiDatabaseProt->ListPackageLists (\r
                             mHiiDatabaseProt,\r
                             PackageType,\r
@@ -652,8 +644,6 @@ IsHiiHandleRegistered (
   HiiPackageList = NULL;\r
   BufferSize = 0;\r
 \r
-  LocateHiiProtocols ();\r
-\r
   Status = mHiiDatabaseProt->ExportPackageLists (\r
              mHiiDatabaseProt,\r
              HiiHandle,\r