From: rsun3 Date: Thu, 2 Apr 2009 08:48:03 +0000 (+0000) Subject: Retire Extended HII library class. X-Git-Tag: edk2-stable201903~18253 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=f6f910dd125144707e3516bbb517b8ec7a388c06 Retire Extended HII library class. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8011 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/DuetPkg/DuetPkg.dsc b/DuetPkg/DuetPkg.dsc index 7c8153b3d2..cfb02df523 100644 --- a/DuetPkg/DuetPkg.dsc +++ b/DuetPkg/DuetPkg.dsc @@ -32,7 +32,6 @@ ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c index 6be0496c61..341d31cb1c 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c @@ -19,6 +19,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. BOOLEAN mHiiPackageListUpdated = FALSE; +HII_VENDOR_DEVICE_PATH mUefiHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {2A1F1827-03E2-4b2f-83DE-89B6073A0182} + // + { 0x2a1f1827, 0x3e2, 0x4b2f, { 0x83, 0xde, 0x89, 0xb6, 0x7, 0x3a, 0x1, 0x82 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + CONFIG_ACCESS_PRIVATE gConfigAccessPrivateTempate = { CONFIG_ACCESS_PRIVATE_SIGNATURE, { @@ -198,9 +223,6 @@ InstallDefaultConfigAccessProtocol ( ASSERT (ThunkContext->IfrPackageCount != 0); - Status = HiiLibCreateHiiDriverHandle (&ThunkContext->UefiHiiDriverHandle); - ASSERT_EFI_ERROR (Status); - ConfigAccessInstance = AllocateCopyPool ( sizeof (CONFIG_ACCESS_PRIVATE), &gConfigAccessPrivateTempate @@ -209,6 +231,8 @@ InstallDefaultConfigAccessProtocol ( Status = gBS->InstallMultipleProtocolInterfaces ( &ThunkContext->UefiHiiDriverHandle, + &gEfiDevicePathProtocolGuid, + &mUefiHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, &ConfigAccessInstance->ConfigAccessProtocol, NULL @@ -237,8 +261,6 @@ UninstallDefaultConfigAccessProtocol ( EFI_STATUS Status; EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; - HiiLibDestroyHiiDriverHandle (ThunkContext->UefiHiiDriverHandle); - Status = gBS->HandleProtocol ( ThunkContext->UefiHiiDriverHandle, &gEfiHiiConfigAccessProtocolGuid, @@ -246,10 +268,13 @@ UninstallDefaultConfigAccessProtocol ( ); ASSERT_EFI_ERROR (Status); - Status = gBS->UninstallProtocolInterface ( + Status = gBS->UninstallMultipleProtocolInterfaces ( ThunkContext->UefiHiiDriverHandle, + &gEfiDevicePathProtocolGuid, + &mUefiHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - ConfigAccess + ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf index 4a7ae4d0f8..9b09c0b52d 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf @@ -76,7 +76,6 @@ DebugLib BaseLib HiiLib - ExtendedHiiLib IfrSupportLib ExtendedIfrSupportLib PrintLib diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h index f09c3cea92..94b79e5e2d 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h @@ -45,7 +45,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include +#include #include #include @@ -185,7 +185,17 @@ typedef struct { UINT16 VarStoreId; } BUFFER_STORAGE_ENTRY; +#pragma pack(1) +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() #define CONFIG_ACCESS_PRIVATE_SIGNATURE SIGNATURE_32 ('H', 'T', 'c', 'a') #define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE) diff --git a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc index b73fce94c3..00c08bdca6 100644 --- a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc +++ b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc @@ -46,7 +46,6 @@ define GCC_MACRO = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf diff --git a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc index 058b100b5b..3fc9e41b9f 100644 --- a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc +++ b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc @@ -63,7 +63,6 @@ ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf PlatformBdsLib|IntelFrameworkModulePkg/Library/PlatformBdsLibNull/PlatformBdsLibNull.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h b/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h index 50e5689cce..34327ce77e 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h @@ -60,7 +60,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include +#include #include #include @@ -73,6 +73,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. EFI_BDS_ARCH_PROTOCOL_INSTANCE_SIGNATURE \ ) +#pragma pack(1) + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() + /** Show progress bar with title above it. It only works in Graphics mode. diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf index 2daacb6d6f..08f36f247c 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf @@ -107,7 +107,6 @@ DebugLib PrintLib HiiLib - ExtendedHiiLib UefiDriverEntryPoint PlatformBdsLib CapsuleLib diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c index d935347487..efc862e64b 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c @@ -28,6 +28,55 @@ EFI_DEVICE_PATH_PROTOCOL EndDevicePath[] = { } }; +HII_VENDOR_DEVICE_PATH mBmmHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {165A028F-0BB2-4b5f-8747-77592E3F6499} + // + { 0x165a028f, 0xbb2, 0x4b5f, { 0x87, 0x47, 0x77, 0x59, 0x2e, 0x3f, 0x64, 0x99 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + +HII_VENDOR_DEVICE_PATH mFeHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {91DB4238-B0C8-472e-BBCF-F3A6541010F4} + // + { 0x91db4238, 0xb0c8, 0x472e, { 0xbb, 0xcf, 0xf3, 0xa6, 0x54, 0x10, 0x10, 0xf4 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; EFI_GUID EfiLegacyDevOrderGuid = EFI_LEGACY_DEV_ORDER_VARIABLE_GUID; EFI_GUID mBootMaintGuid = BOOT_MAINT_FORMSET_GUID; @@ -850,42 +899,30 @@ InitializeBM ( BmmCallbackInfo->FeDisplayContext = UNKNOWN_CONTEXT; // - // Create driver handle used by HII database + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = HiiLibCreateHiiDriverHandle (&BmmCallbackInfo->BmmDriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Install Config Access protocol to driver handle - // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &BmmCallbackInfo->BmmDriverHandle, + &gEfiDevicePathProtocolGuid, + &mBmmHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &BmmCallbackInfo->BmmConfigAccess + &BmmCallbackInfo->BmmConfigAccess, + NULL ); if (EFI_ERROR (Status)) { return Status; } // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&BmmCallbackInfo->FeDriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Install Config Access protocol to driver handle + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &BmmCallbackInfo->FeDriverHandle, + &gEfiDevicePathProtocolGuid, + &mFeHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &BmmCallbackInfo->FeConfigAccess + &BmmCallbackInfo->FeConfigAccess, + NULL ); if (EFI_ERROR (Status)) { return Status; diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c index a1612cd1b1..615c189d8d 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c @@ -19,6 +19,31 @@ EFI_GUID mBootManagerGuid = BOOT_MANAGER_FORMSET_GUID; LIST_ENTRY *mBootOptionsList; BDS_COMMON_OPTION *gOption; +HII_VENDOR_DEVICE_PATH mBootManagerHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {1DDDBE15-481D-4d2b-8277-B191EAF66525} + // + { 0x1dddbe15, 0x481d, 0x4d2b, { 0x82, 0x77, 0xb1, 0x91, 0xea, 0xf6, 0x65, 0x25 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + BOOT_MANAGER_CALLBACK_DATA gBootManagerPrivate = { BOOT_MANAGER_CALLBACK_DATA_SIGNATURE, NULL, @@ -104,7 +129,7 @@ BootManagerCallback ( Registers HII packages for the Boot Manger to HII Database. It also registers the browser call back function. - @return Status of HiiLibCreateHiiDriverHandle() and gHiiDatabase->NewPackageList() + @return Status of gBS->InstallMultipleProtocolInterfaces() and gHiiDatabase->NewPackageList() **/ EFI_STATUS @@ -116,21 +141,15 @@ InitializeBootManager ( EFI_HII_PACKAGE_LIST_HEADER *PackageList; // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&gBootManagerPrivate.DriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Install Config Access protocol to driver handle + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &gBootManagerPrivate.DriverHandle, + &gEfiDevicePathProtocolGuid, + &mBootManagerHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &gBootManagerPrivate.ConfigAccess + &gBootManagerPrivate.ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.h b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.h index 4e460788a7..d7566f4ccf 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.h +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.h @@ -86,7 +86,7 @@ BootManagerCallback ( Registers HII packages for the Boot Manger to HII Database. It also registers the browser call back function. - @return Status of HiiLibCreateHiiDriverHandle() and gHiiDatabase->NewPackageList() + @return Status of gBS->InstallMultipleProtocolInterfaces() and gHiiDatabase->NewPackageList() **/ EFI_STATUS InitializeBootManager ( diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c index 9492de441c..9264734ddc 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c @@ -36,6 +36,31 @@ DEVICE_MANAGER_MENU_ITEM mDeviceManagerMenuItemTable[] = { { STRING_TOKEN (STR_OTHER_DEVICE), EFI_OTHER_DEVICE_CLASS } }; +HII_VENDOR_DEVICE_PATH mDeviceManagerHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {102579A0-3686-466e-ACD8-80C087044F4A} + // + { 0x102579a0, 0x3686, 0x466e, { 0xac, 0xd8, 0x80, 0xc0, 0x87, 0x4, 0x4f, 0x4a } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + #define MENU_ITEM_NUM \ (sizeof (mDeviceManagerMenuItemTable) / sizeof (DEVICE_MANAGER_MENU_ITEM)) @@ -100,21 +125,15 @@ InitializeDeviceManager ( EFI_HII_PACKAGE_LIST_HEADER *PackageList; // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&gDeviceManagerPrivate.DriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Install Config Access protocol to driver handle + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &gDeviceManagerPrivate.DriverHandle, + &gEfiDevicePathProtocolGuid, + &mDeviceManagerHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &gDeviceManagerPrivate.ConfigAccess + &gDeviceManagerPrivate.ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c index 29974769bb..fbfac08178 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c @@ -37,6 +37,31 @@ FRONT_PAGE_CALLBACK_DATA gFrontPagePrivate = { } }; +HII_VENDOR_DEVICE_PATH mFrontPageHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {8E6D99EE-7531-48f8-8745-7F6144468FF2} + // + { 0x8e6d99ee, 0x7531, 0x48f8, { 0x87, 0x45, 0x7f, 0x61, 0x44, 0x46, 0x8f, 0xf2 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + /** This function allows a caller to extract the current configuration for one or more named elements from the target driver. @@ -324,21 +349,15 @@ InitializeFrontPage ( } // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&gFrontPagePrivate.DriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Install Config Access protocol to driver handle + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &gFrontPagePrivate.DriverHandle, + &gEfiDevicePathProtocolGuid, + &mFrontPageHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &gFrontPagePrivate.ConfigAccess + &gFrontPagePrivate.ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/Language.c b/IntelFrameworkModulePkg/Universal/BdsDxe/Language.c index 4e7537c9e4..c9e19c5ff0 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/Language.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/Language.c @@ -259,23 +259,13 @@ ExportFonts ( VOID ) { - EFI_STATUS Status; - EFI_HANDLE DriverHandle; EFI_HII_HANDLE HiiHandle; EFI_HII_PACKAGE_LIST_HEADER *PackageList; - // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&DriverHandle); - if (EFI_ERROR (Status)) { - return ; - } - PackageList = HiiLibPreparePackageList (1, &mFontPackageGuid, &mFontBin); ASSERT (PackageList != NULL); - gHiiDatabase->NewPackageList (gHiiDatabase, PackageList, DriverHandle, &HiiHandle); + gHiiDatabase->NewPackageList (gHiiDatabase, PackageList, mBdsImageHandle, &HiiHandle); FreePool (PackageList); } diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/String.c b/IntelFrameworkModulePkg/Universal/BdsDxe/String.c index d1c6651977..a509a85df1 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/String.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/String.c @@ -34,7 +34,6 @@ InitializeStringSupport ( ) { EFI_STATUS Status; - EFI_HANDLE DriverHandle; EFI_HII_PACKAGE_LIST_HEADER *PackageList; Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gHiiDatabase); @@ -42,21 +41,13 @@ InitializeStringSupport ( return Status; } - // - // Create driver handle used by HII database - // - Status = HiiLibCreateHiiDriverHandle (&DriverHandle); - if (EFI_ERROR (Status)) { - return Status; - } - PackageList = HiiLibPreparePackageList (1, &mBdsStringPackGuid, &BdsDxeStrings); ASSERT (PackageList != NULL); Status = gHiiDatabase->NewPackageList ( gHiiDatabase, PackageList, - DriverHandle, + mBdsImageHandle, &gStringPackHandle ); diff --git a/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.c b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.c index aa110226f1..543f896a74 100644 --- a/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.c +++ b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.c @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include +#include #include #include #include @@ -47,7 +48,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include #include #include #include @@ -66,6 +66,18 @@ typedef struct { EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; } EFI_CALLBACK_INFO; +#pragma pack(1) + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() + // // uni string and Vfr Binary data. // @@ -92,6 +104,31 @@ UINTN mSelectedDriverImageNum; UINTN mLastSavedDriverImageNum; UINT16 mCurrentPage; +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {99936717-BF3D-4b04-9787-76CEE324D76F} + // + { 0x99936717, 0xbf3d, 0x4b04, { 0x97, 0x87, 0x76, 0xce, 0xe3, 0x24, 0xd7, 0x6f } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + /** Converting a given device to an unicode string. @@ -1276,8 +1313,7 @@ PlatOverMngrInit ( EFI_HII_DATABASE_PROTOCOL *HiiDatabase; EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_CALLBACK_INFO *CallbackInfo; - EFI_HANDLE DriverHandle; - EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2; + EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2; // // There should only be one HII protocol @@ -1314,22 +1350,15 @@ PlatOverMngrInit ( CallbackInfo->ConfigAccess.Callback = PlatOverMngrCallback; // - // Create driver handle used by HII database + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = HiiLibCreateHiiDriverHandle (&DriverHandle); - if (EFI_ERROR (Status)) { - goto Finish; - } - CallbackInfo->DriverHandle = DriverHandle; - - // - // Install Config Access protocol to driver handle - // - Status = gBS->InstallProtocolInterface ( - &DriverHandle, + Status = gBS->InstallMultipleProtocolInterfaces ( + &CallbackInfo->DriverHandle, + &gEfiDevicePathProtocolGuid, + &mHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &CallbackInfo->ConfigAccess + &CallbackInfo->ConfigAccess, + NULL ); if (EFI_ERROR (Status)) { goto Finish; @@ -1349,7 +1378,7 @@ PlatOverMngrInit ( Status = HiiDatabase->NewPackageList ( HiiDatabase, PackageList, - DriverHandle, + CallbackInfo->DriverHandle, &CallbackInfo->RegisteredHandle ); FreePool (PackageList); @@ -1405,7 +1434,14 @@ PlatOverMngrInit ( Finish: if (CallbackInfo->DriverHandle != NULL) { - HiiLibDestroyHiiDriverHandle (CallbackInfo->DriverHandle); + gBS->UninstallMultipleProtocolInterfaces ( + CallbackInfo->DriverHandle, + &gEfiDevicePathProtocolGuid, + &mHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &CallbackInfo->ConfigAccess, + NULL + ); } if (CallbackInfo != NULL) { FreePool (CallbackInfo); diff --git a/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.inf b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.inf index 8d22f62b4b..6b42f05bdf 100644 --- a/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.inf +++ b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.inf @@ -58,7 +58,6 @@ PlatformDriverOverrideLib HiiLib IfrSupportLib - ExtendedHiiLib ExtendedIfrSupportLib BaseMemoryLib MemoryAllocationLib @@ -85,4 +84,4 @@ gEfiFormBrowser2ProtocolGuid ## CONSUMED gEfiHiiConfigRoutingProtocolGuid ## CONSUMED gEfiHiiConfigAccessProtocolGuid ## PRODUCED - gEfiDevicePathToTextProtocolGuid ## CONSUMED \ No newline at end of file + gEfiDevicePathToTextProtocolGuid ## CONSUMED diff --git a/MdeModulePkg/Include/Guid/MdeModuleHii.h b/MdeModulePkg/Include/Guid/MdeModuleHii.h index e66a944c08..f5795ef31f 100644 --- a/MdeModulePkg/Include/Guid/MdeModuleHii.h +++ b/MdeModulePkg/Include/Guid/MdeModuleHii.h @@ -25,26 +25,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define BROWSER_STATE_VALIDATE_PASSWORD 0 #define BROWSER_STATE_SET_PASSWORD 1 - -/// -/// HII specific Vendor Device Path Node definition. -/// -#pragma pack(1) -typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - UINT32 Reserved; - UINT64 UniqueId; -} HII_VENDOR_DEVICE_PATH_NODE; -#pragma pack() - -/// -/// HII specific Vendor Device Path definition. -/// -typedef struct { - HII_VENDOR_DEVICE_PATH_NODE Node; - EFI_DEVICE_PATH_PROTOCOL End; -} HII_VENDOR_DEVICE_PATH; - /// /// GUIDed opcodes defined for EDKII implementation /// diff --git a/MdeModulePkg/Include/Library/ExtendedHiiLib.h b/MdeModulePkg/Include/Library/ExtendedHiiLib.h deleted file mode 100644 index 15c9760355..0000000000 --- a/MdeModulePkg/Include/Library/ExtendedHiiLib.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file - This library includes two extended HII functions to - create and destory Hii Package by create the virtual Driver Handle. - -Copyright (c) 2008, Intel Corporation.
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __EXTENDED_HII_LIB_H__ -#define __EXTENDED_HII_LIB_H__ - -/** - The HII driver handle passed in for HiiDatabase.NewPackageList() requires - that there should be DevicePath Protocol installed on it. - This routine create a virtual Driver Handle by installing a vendor device - path on it, so as to use it to invoke HiiDatabase.NewPackageList(). - The Device Path created is a Vendor Device Path specific to Intel's implemenation - and it is defined as HII_VENDOR_DEVICE_PATH_NODE. - - - @param DriverHandle Handle to be returned - - @retval EFI_SUCCESS Handle destroy success. - @retval EFI_OUT_OF_RESOURCES Not enough memory. - -**/ -EFI_STATUS -EFIAPI -HiiLibCreateHiiDriverHandle ( - OUT EFI_HANDLE *DriverHandle - ); - -/** - Destroy the Driver Handle created by CreateHiiDriverHandle(). - - If no Device Path protocol is installed on the DriverHandle, then ASSERT. - If this Device Path protocol is failed to be uninstalled, then ASSERT. - - @param DriverHandle Handle returned by CreateHiiDriverHandle() - - -**/ -VOID -EFIAPI -HiiLibDestroyHiiDriverHandle ( - IN EFI_HANDLE DriverHandle - ); - - -#endif diff --git a/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.c b/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.c deleted file mode 100644 index 4aaf123f68..0000000000 --- a/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.c +++ /dev/null @@ -1,145 +0,0 @@ -/** @file -Library instance for ExtendedHiiLib. - -This library instance implements the common HII routines which is -related to HII but reference data structures that are not defined in -UEFI specification, for example HII_VENDOR_DEVICE_PATH. - - -Copyright (c) 2006 - 2008, Intel Corporation.
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include -#include -#include -#include -#include -#include -#include - - -// -// Hii vendor device path template -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST HII_VENDOR_DEVICE_PATH mHiiVendorDevicePathTemplate = { - { - { - { - HARDWARE_DEVICE_PATH, - HW_VENDOR_DP, - { - (UINT8) (sizeof (HII_VENDOR_DEVICE_PATH_NODE)), - (UINT8) ((sizeof (HII_VENDOR_DEVICE_PATH_NODE)) >> 8) - } - }, - EFI_IFR_TIANO_GUID - }, - 0, - 0 - }, - { - END_DEVICE_PATH_TYPE, - END_ENTIRE_DEVICE_PATH_SUBTYPE, - { - END_DEVICE_PATH_LENGTH - } - } -}; - -/** - The HII driver handle passed in for HiiDatabase.NewPackageList() requires - that there should be DevicePath Protocol installed on it. - This routine create a virtual Driver Handle by installing a vendor device - path on it, so as to use it to invoke HiiDatabase.NewPackageList(). - The Device Path created is a Vendor Device Path specific to Intel's implemenation - and it is defined as HII_VENDOR_DEVICE_PATH_NODE. - - - @param DriverHandle Handle to be returned - - @retval EFI_SUCCESS Handle destroy success. - @retval EFI_OUT_OF_RESOURCES Not enough memory. - -**/ -EFI_STATUS -EFIAPI -HiiLibCreateHiiDriverHandle ( - OUT EFI_HANDLE *DriverHandle - ) -{ - EFI_STATUS Status; - HII_VENDOR_DEVICE_PATH_NODE *VendorDevicePath; - - VendorDevicePath = AllocateCopyPool (sizeof (HII_VENDOR_DEVICE_PATH), &mHiiVendorDevicePathTemplate); - if (VendorDevicePath == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - // - // Use memory address as unique ID to distinguish from different device paths - // - VendorDevicePath->UniqueId = (UINT64) ((UINTN) VendorDevicePath); - - *DriverHandle = NULL; - Status = gBS->InstallMultipleProtocolInterfaces ( - DriverHandle, - &gEfiDevicePathProtocolGuid, - VendorDevicePath, - NULL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - return EFI_SUCCESS; -} - - -/** - Destroy the Driver Handle created by CreateHiiDriverHandle(). - - If no Device Path protocol is installed on the DriverHandle, then ASSERT. - If this Device Path protocol is failed to be uninstalled, then ASSERT. - - @param DriverHandle Handle returned by CreateHiiDriverHandle() - - -**/ -VOID -EFIAPI -HiiLibDestroyHiiDriverHandle ( - IN EFI_HANDLE DriverHandle - ) -{ - EFI_STATUS Status; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - - Status = gBS->HandleProtocol ( - DriverHandle, - &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath - ); - ASSERT_EFI_ERROR (Status); - - Status = gBS->UninstallProtocolInterface ( - DriverHandle, - &gEfiDevicePathProtocolGuid, - DevicePath - ); - ASSERT_EFI_ERROR (Status); - - FreePool (DevicePath); - -} - - - diff --git a/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf b/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf deleted file mode 100644 index e485edaf43..0000000000 --- a/MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf +++ /dev/null @@ -1,48 +0,0 @@ -#/** @file -# -# Library instance for ExtendedHiiLib. -# -# This library instance implements the common HII routines which is -# related to HII but reference data structures that are not defined in -# UEFI specification, for example HII_VENDOR_DEVICE_PATH. -# -# Copyright (c) 2006 - 2008, Intel Corporation.
-# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ExtendedHiiLib - FILE_GUID = 35961516-ABA1-4636-A4C0-608E62BE8BB0 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = ExtendedHiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER - EFI_SPECIFICATION_VERSION = 0x0002000A - -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - ExtendedHiiLib.c - - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - -[LibraryClasses] - MemoryAllocationLib - DebugLib - DevicePathLib - -[Protocols] - gEfiDevicePathProtocolGuid ## SOMETIMES_PRODUCES - diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 95c7e7a583..366a4be8d9 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -60,11 +60,6 @@ ## @libraryclass Provides a set of interfaces to do IFR opcode creation and interact with a UEFI Form Browser. IfrSupportLib|Include/Library/IfrSupportLib.h - ## @libraryclass Includes two extended HII functions to create and destory Hii Package - # by create the virtual Driver Handle. - ## - ExtendedHiiLib|Include/Library/ExtendedHiiLib.h - ## @libraryclass Defines APIs that is related to IFR operations but specific to EDK II # implementation. ## diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 2644557e45..a38c73c013 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -62,7 +62,6 @@ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf @@ -276,7 +275,6 @@ MdeModulePkg/Library/DxePlatDriOverLib/DxePlatDriOverLib.inf MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf - MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c index e470a82cc7..8fcce40327 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c @@ -23,6 +23,56 @@ EFI_GUID mInventoryGuid = INVENTORY_GUID; CHAR16 VariableName[] = L"MyIfrNVData"; +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {C153B68D-EBFC-488e-B110-662867745B87} + // + { 0xc153b68d, 0xebfc, 0x488e, { 0xb1, 0x10, 0x66, 0x28, 0x67, 0x74, 0x5b, 0x87 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + +HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath2 = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {06F37F07-0C48-40e9-8436-0A08A0BB76B0} + // + { 0x6f37f07, 0xc48, 0x40e9, { 0x84, 0x36, 0xa, 0x8, 0xa0, 0xbb, 0x76, 0xb0 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + /** Encode the password using a simple algorithm. @@ -689,7 +739,7 @@ DriverSampleInit ( EFI_STATUS SavedStatus; EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_HANDLE HiiHandle[2]; - EFI_HANDLE DriverHandle[2]; + EFI_HANDLE DriverHandle[2] = {NULL, NULL}; DRIVER_SAMPLE_PRIVATE_DATA *PrivateData; EFI_SCREEN_DESCRIPTOR Screen; EFI_HII_DATABASE_PROTOCOL *HiiDatabase; @@ -766,23 +816,18 @@ DriverSampleInit ( } PrivateData->HiiConfigRouting = HiiConfigRouting; - // - // Install Config Access protocol - // - Status = HiiLibCreateHiiDriverHandle (&DriverHandle[0]); - if (EFI_ERROR (Status)) { - return Status; - } - PrivateData->DriverHandle[0] = DriverHandle[0]; - - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &DriverHandle[0], + &gEfiDevicePathProtocolGuid, + &mHiiVendorDevicePath1, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &PrivateData->ConfigAccess + &PrivateData->ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); + PrivateData->DriverHandle[0] = DriverHandle[0]; + // // Publish our HII data // @@ -811,10 +856,14 @@ DriverSampleInit ( // // Publish another Fromset // - Status = HiiLibCreateHiiDriverHandle (&DriverHandle[1]); - if (EFI_ERROR (Status)) { - return Status; - } + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverHandle[1], + &gEfiDevicePathProtocolGuid, + &mHiiVendorDevicePath2, + NULL + ); + ASSERT_EFI_ERROR (Status); + PrivateData->DriverHandle[1] = DriverHandle[1]; PackageList = HiiLibPreparePackageList ( diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h index d33740826c..cdecddbfe7 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h @@ -42,7 +42,7 @@ Revision History #include #include #include -#include +#include #include "NVDataStruc.h" @@ -97,4 +97,16 @@ typedef struct { #define DRIVER_SAMPLE_PRIVATE_FROM_THIS(a) CR (a, DRIVER_SAMPLE_PRIVATE_DATA, ConfigAccess, DRIVER_SAMPLE_PRIVATE_SIGNATURE) +#pragma pack(1) + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() + #endif diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf b/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf index d1da67da04..bba6ab0abf 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf @@ -53,7 +53,6 @@ DebugLib HiiLib IfrSupportLib - ExtendedHiiLib ExtendedIfrSupportLib [Protocols] diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c index feb1118edd..2bb0ba3df1 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c @@ -24,6 +24,31 @@ LIST_ENTRY mIScsiConfigFormList = { &mIScsiConfigFormList }; +HII_VENDOR_DEVICE_PATH mIScsiHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + // + // {49D7B73E-143D-4716-977B-C45F1CB038CC} + // + { 0x49d7b73e, 0x143d, 0x4716, { 0x97, 0x7b, 0xc4, 0x5f, 0x1c, 0xb0, 0x38, 0xcc } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + /** Convert the IPv4 address into a dotted string. @@ -908,7 +933,7 @@ IScsiConfigFormInit ( return Status; } - CallbackInfo = (ISCSI_FORM_CALLBACK_INFO *) AllocatePool (sizeof (ISCSI_FORM_CALLBACK_INFO)); + CallbackInfo = (ISCSI_FORM_CALLBACK_INFO *) AllocateZeroPool (sizeof (ISCSI_FORM_CALLBACK_INFO)); if (CallbackInfo == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -928,22 +953,15 @@ IScsiConfigFormInit ( } // - // Create driver handle used by HII database + // Install Device Path Protocol and Config Access protocol to driver handle // - Status = HiiLibCreateHiiDriverHandle (&CallbackInfo->DriverHandle); - if (EFI_ERROR (Status)) { - FreePool(CallbackInfo); - return Status; - } - - // - // Install Config Access protocol to driver handle - // - Status = gBS->InstallProtocolInterface ( + Status = gBS->InstallMultipleProtocolInterfaces ( &CallbackInfo->DriverHandle, + &gEfiDevicePathProtocolGuid, + &mIScsiHiiVendorDevicePath, &gEfiHiiConfigAccessProtocolGuid, - EFI_NATIVE_INTERFACE, - &CallbackInfo->ConfigAccess + &CallbackInfo->ConfigAccess, + NULL ); ASSERT_EFI_ERROR (Status); @@ -1010,13 +1028,14 @@ IScsiConfigFormUnload ( // // Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL // - gBS->UninstallProtocolInterface ( - mCallbackInfo->DriverHandle, - &gEfiHiiConfigAccessProtocolGuid, - &mCallbackInfo->ConfigAccess - ); - HiiLibDestroyHiiDriverHandle (mCallbackInfo->DriverHandle); - + gBS->UninstallMultipleProtocolInterfaces ( + mCallbackInfo->DriverHandle, + &gEfiDevicePathProtocolGuid, + &mIScsiHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &mCallbackInfo->ConfigAccess, + NULL + ); gBS->FreePool (mCallbackInfo); return EFI_SUCCESS; diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h index e89d2d4914..fd6a2c41cf 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h @@ -17,7 +17,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include -#include +#include #include #include #include @@ -103,6 +103,18 @@ typedef struct _ISCSI_FORM_CALLBACK_INFO { ISCSI_CONFIG_FORM_ENTRY *Current; } ISCSI_FORM_CALLBACK_INFO; +#pragma pack(1) + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#pragma pack() + /** Updates the iSCSI configuration form to add/delete an entry for the iSCSI device specified by the Controller. diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf index 8710845abe..29509911e7 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf @@ -79,7 +79,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. PrintLib HiiLib IfrSupportLib - ExtendedHiiLib ExtendedIfrSupportLib NetLib diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index 1096462306..7e948b3058 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -525,7 +525,6 @@ InitializeSetup ( ) { EFI_STATUS Status; - EFI_HANDLE HiiDriverHandle; EFI_HII_PACKAGE_LIST_HEADER *PackageList; // @@ -555,15 +554,12 @@ InitializeSetup ( // // Publish our HII data // - Status = HiiLibCreateHiiDriverHandle (&HiiDriverHandle); - ASSERT_EFI_ERROR (Status); - PackageList = HiiLibPreparePackageList (1, &gSetupBrowserGuid, SetupBrowserStrings); ASSERT (PackageList != NULL); Status = mHiiDatabase->NewPackageList ( mHiiDatabase, PackageList, - HiiDriverHandle, + ImageHandle, &gHiiHandle ); ASSERT_EFI_ERROR (Status); diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h index d8e7ca2d2e..ebd9a47d73 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h @@ -42,7 +42,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include #include #include "Colors.h" diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf b/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf index b945322920..d531d7b9af 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf +++ b/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf @@ -61,7 +61,6 @@ PrintLib IfrSupportLib HiiLib - ExtendedHiiLib [Guids] gEfiIfrTianoGuid ## CONSUMES ## GUID diff --git a/Nt32Pkg/Nt32Pkg.dsc b/Nt32Pkg/Nt32Pkg.dsc index 68fbe44621..59c49db146 100644 --- a/Nt32Pkg/Nt32Pkg.dsc +++ b/Nt32Pkg/Nt32Pkg.dsc @@ -65,7 +65,6 @@ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf diff --git a/UnixPkg/UnixPkg.dsc b/UnixPkg/UnixPkg.dsc index 7c45fd0318..e48096b85c 100644 --- a/UnixPkg/UnixPkg.dsc +++ b/UnixPkg/UnixPkg.dsc @@ -61,7 +61,6 @@ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf