]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.c
Retire Extended HII library class.
[mirror_edk2.git] / MdeModulePkg / Application / PlatOverMngr / PlatOverMngr.c
index aa110226f1f7bb96971f54330acb032a0b331e96..543f896a743858cc448b7c57913521370655fe0b 100644 (file)
@@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/DevicePathToText.h>\r
 #include <Protocol/DevicePath.h>\r
 \r
+#include <Library/DevicePathLib.h>\r
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiLib.h>\r
@@ -47,7 +48,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/PlatformDriverOverrideLib.h>\r
 #include <Library/HiiLib.h>\r
 #include <Library/IfrSupportLib.h>\r
-#include <Library/ExtendedHiiLib.h>\r
 #include <Library/ExtendedIfrSupportLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
@@ -66,6 +66,18 @@ typedef struct {
   EFI_HII_CONFIG_ACCESS_PROTOCOL  ConfigAccess;\r
 } EFI_CALLBACK_INFO;\r
 \r
+#pragma pack(1)\r
+\r
+///\r
+/// HII specific Vendor Device Path definition.\r
+///\r
+typedef struct {\r
+  VENDOR_DEVICE_PATH             VendorDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL       End;\r
+} HII_VENDOR_DEVICE_PATH;\r
+\r
+#pragma pack()\r
+\r
 //\r
 // uni string and Vfr Binary data.\r
 //\r
@@ -92,6 +104,31 @@ UINTN                        mSelectedDriverImageNum;
 UINTN                        mLastSavedDriverImageNum;\r
 UINT16                       mCurrentPage;\r
 \r
+HII_VENDOR_DEVICE_PATH  mHiiVendorDevicePath = {\r
+  {\r
+    {\r
+      HARDWARE_DEVICE_PATH,\r
+      HW_VENDOR_DP,\r
+      {\r
+        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),\r
+        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
+      }\r
+    },\r
+    //\r
+    // {99936717-BF3D-4b04-9787-76CEE324D76F}\r
+    //\r
+    { 0x99936717, 0xbf3d, 0x4b04, { 0x97, 0x87, 0x76, 0xce, 0xe3, 0x24, 0xd7, 0x6f } }\r
+  },\r
+  {\r
+    END_DEVICE_PATH_TYPE,\r
+    END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
+    { \r
+      (UINT8) (END_DEVICE_PATH_LENGTH),\r
+      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)\r
+    }\r
+  }\r
+};\r
+\r
 /**\r
   Converting a given device to an unicode string. \r
   \r
@@ -1276,8 +1313,7 @@ PlatOverMngrInit (
   EFI_HII_DATABASE_PROTOCOL   *HiiDatabase;\r
   EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
   EFI_CALLBACK_INFO           *CallbackInfo;\r
-  EFI_HANDLE                  DriverHandle;\r
-  EFI_FORM_BROWSER2_PROTOCOL       *FormBrowser2;\r
+  EFI_FORM_BROWSER2_PROTOCOL  *FormBrowser2;\r
   \r
   //\r
   // There should only be one HII protocol\r
@@ -1314,22 +1350,15 @@ PlatOverMngrInit (
   CallbackInfo->ConfigAccess.Callback      = PlatOverMngrCallback;\r
 \r
   //\r
-  // Create driver handle used by HII database\r
+  // Install Device Path Protocol and Config Access protocol to driver handle\r
   //\r
-  Status = HiiLibCreateHiiDriverHandle (&DriverHandle);\r
-  if (EFI_ERROR (Status)) {\r
-    goto Finish;\r
-  }\r
-  CallbackInfo->DriverHandle = DriverHandle;\r
-\r
-  //\r
-  // Install Config Access protocol to driver handle\r
-  //\r
-  Status = gBS->InstallProtocolInterface (\r
-                  &DriverHandle,\r
+  Status = gBS->InstallMultipleProtocolInterfaces (\r
+                  &CallbackInfo->DriverHandle,\r
+                  &gEfiDevicePathProtocolGuid,\r
+                  &mHiiVendorDevicePath,\r
                   &gEfiHiiConfigAccessProtocolGuid,\r
-                  EFI_NATIVE_INTERFACE,\r
-                  &CallbackInfo->ConfigAccess\r
+                  &CallbackInfo->ConfigAccess,\r
+                  NULL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
     goto Finish;\r
@@ -1349,7 +1378,7 @@ PlatOverMngrInit (
   Status = HiiDatabase->NewPackageList (\r
                            HiiDatabase,\r
                            PackageList,\r
-                           DriverHandle,\r
+                           CallbackInfo->DriverHandle,\r
                            &CallbackInfo->RegisteredHandle\r
                            );\r
   FreePool (PackageList);\r
@@ -1405,7 +1434,14 @@ PlatOverMngrInit (
 \r
 Finish:\r
   if (CallbackInfo->DriverHandle != NULL) {\r
-    HiiLibDestroyHiiDriverHandle (CallbackInfo->DriverHandle);\r
+    gBS->UninstallMultipleProtocolInterfaces (\r
+           CallbackInfo->DriverHandle,\r
+           &gEfiDevicePathProtocolGuid,\r
+           &mHiiVendorDevicePath,\r
+           &gEfiHiiConfigAccessProtocolGuid,\r
+           &CallbackInfo->ConfigAccess,\r
+           NULL\r
+           );\r
   }\r
   if (CallbackInfo != NULL) {\r
     FreePool (CallbackInfo);\r