Retire Extended HII library class.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8011 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
rsun3
2009-04-02 08:48:03 +00:00
parent 186ca8b0cd
commit f6f910dd12
34 changed files with 403 additions and 446 deletions

View File

@ -32,7 +32,6 @@
ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf
GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf

View File

@ -19,6 +19,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
BOOLEAN mHiiPackageListUpdated = FALSE; 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 gConfigAccessPrivateTempate = {
CONFIG_ACCESS_PRIVATE_SIGNATURE, CONFIG_ACCESS_PRIVATE_SIGNATURE,
{ {
@ -198,9 +223,6 @@ InstallDefaultConfigAccessProtocol (
ASSERT (ThunkContext->IfrPackageCount != 0); ASSERT (ThunkContext->IfrPackageCount != 0);
Status = HiiLibCreateHiiDriverHandle (&ThunkContext->UefiHiiDriverHandle);
ASSERT_EFI_ERROR (Status);
ConfigAccessInstance = AllocateCopyPool ( ConfigAccessInstance = AllocateCopyPool (
sizeof (CONFIG_ACCESS_PRIVATE), sizeof (CONFIG_ACCESS_PRIVATE),
&gConfigAccessPrivateTempate &gConfigAccessPrivateTempate
@ -209,6 +231,8 @@ InstallDefaultConfigAccessProtocol (
Status = gBS->InstallMultipleProtocolInterfaces ( Status = gBS->InstallMultipleProtocolInterfaces (
&ThunkContext->UefiHiiDriverHandle, &ThunkContext->UefiHiiDriverHandle,
&gEfiDevicePathProtocolGuid,
&mUefiHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
&ConfigAccessInstance->ConfigAccessProtocol, &ConfigAccessInstance->ConfigAccessProtocol,
NULL NULL
@ -237,8 +261,6 @@ UninstallDefaultConfigAccessProtocol (
EFI_STATUS Status; EFI_STATUS Status;
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
HiiLibDestroyHiiDriverHandle (ThunkContext->UefiHiiDriverHandle);
Status = gBS->HandleProtocol ( Status = gBS->HandleProtocol (
ThunkContext->UefiHiiDriverHandle, ThunkContext->UefiHiiDriverHandle,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
@ -246,10 +268,13 @@ UninstallDefaultConfigAccessProtocol (
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
Status = gBS->UninstallProtocolInterface ( Status = gBS->UninstallMultipleProtocolInterfaces (
ThunkContext->UefiHiiDriverHandle, ThunkContext->UefiHiiDriverHandle,
&gEfiDevicePathProtocolGuid,
&mUefiHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
ConfigAccess ConfigAccess,
NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -76,7 +76,6 @@
DebugLib DebugLib
BaseLib BaseLib
HiiLib HiiLib
ExtendedHiiLib
IfrSupportLib IfrSupportLib
ExtendedIfrSupportLib ExtendedIfrSupportLib
PrintLib PrintLib

View File

@ -45,7 +45,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h> #include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/ExtendedHiiLib.h> #include <Library/DevicePathLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Library/IfrSupportLib.h> #include <Library/IfrSupportLib.h>
@ -185,7 +185,17 @@ typedef struct {
UINT16 VarStoreId; UINT16 VarStoreId;
} BUFFER_STORAGE_ENTRY; } 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_SIGNATURE SIGNATURE_32 ('H', 'T', 'c', 'a')
#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE) #define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)

View File

@ -46,7 +46,6 @@ define GCC_MACRO = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf
ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf

View File

@ -63,7 +63,6 @@
ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf ExtendedIfrSupportLib|MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf
GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
PlatformBdsLib|IntelFrameworkModulePkg/Library/PlatformBdsLibNull/PlatformBdsLibNull.inf PlatformBdsLib|IntelFrameworkModulePkg/Library/PlatformBdsLibNull/PlatformBdsLibNull.inf
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf

View File

@ -60,7 +60,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Library/CapsuleLib.h> #include <Library/CapsuleLib.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/ExtendedHiiLib.h> #include <Library/DevicePathLib.h>
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Library/GenericBdsLib.h> #include <Library/GenericBdsLib.h>
@ -73,6 +73,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
EFI_BDS_ARCH_PROTOCOL_INSTANCE_SIGNATURE \ 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. Show progress bar with title above it. It only works in Graphics mode.

View File

@ -107,7 +107,6 @@
DebugLib DebugLib
PrintLib PrintLib
HiiLib HiiLib
ExtendedHiiLib
UefiDriverEntryPoint UefiDriverEntryPoint
PlatformBdsLib PlatformBdsLib
CapsuleLib CapsuleLib

View File

@ -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 EfiLegacyDevOrderGuid = EFI_LEGACY_DEV_ORDER_VARIABLE_GUID;
EFI_GUID mBootMaintGuid = BOOT_MAINT_FORMSET_GUID; EFI_GUID mBootMaintGuid = BOOT_MAINT_FORMSET_GUID;
@ -850,42 +899,30 @@ InitializeBM (
BmmCallbackInfo->FeDisplayContext = UNKNOWN_CONTEXT; 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); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&BmmCallbackInfo->BmmDriverHandle, &BmmCallbackInfo->BmmDriverHandle,
&gEfiDevicePathProtocolGuid,
&mBmmHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &BmmCallbackInfo->BmmConfigAccess,
&BmmCallbackInfo->BmmConfigAccess NULL
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return Status; return Status;
} }
// //
// Create driver handle used by HII database // Install Device Path Protocol and Config Access protocol to driver handle
// //
Status = HiiLibCreateHiiDriverHandle (&BmmCallbackInfo->FeDriverHandle); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&BmmCallbackInfo->FeDriverHandle, &BmmCallbackInfo->FeDriverHandle,
&gEfiDevicePathProtocolGuid,
&mFeHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &BmmCallbackInfo->FeConfigAccess,
&BmmCallbackInfo->FeConfigAccess NULL
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return Status; return Status;

View File

@ -19,6 +19,31 @@ EFI_GUID mBootManagerGuid = BOOT_MANAGER_FORMSET_GUID;
LIST_ENTRY *mBootOptionsList; LIST_ENTRY *mBootOptionsList;
BDS_COMMON_OPTION *gOption; 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 gBootManagerPrivate = {
BOOT_MANAGER_CALLBACK_DATA_SIGNATURE, BOOT_MANAGER_CALLBACK_DATA_SIGNATURE,
NULL, NULL,
@ -104,7 +129,7 @@ BootManagerCallback (
Registers HII packages for the Boot Manger to HII Database. Registers HII packages for the Boot Manger to HII Database.
It also registers the browser call back function. 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 EFI_STATUS
@ -116,21 +141,15 @@ InitializeBootManager (
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
// //
// Create driver handle used by HII database // Install Device Path Protocol and Config Access protocol to driver handle
// //
Status = HiiLibCreateHiiDriverHandle (&gBootManagerPrivate.DriverHandle); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&gBootManagerPrivate.DriverHandle, &gBootManagerPrivate.DriverHandle,
&gEfiDevicePathProtocolGuid,
&mBootManagerHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &gBootManagerPrivate.ConfigAccess,
&gBootManagerPrivate.ConfigAccess NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -86,7 +86,7 @@ BootManagerCallback (
Registers HII packages for the Boot Manger to HII Database. Registers HII packages for the Boot Manger to HII Database.
It also registers the browser call back function. 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 EFI_STATUS
InitializeBootManager ( InitializeBootManager (

View File

@ -36,6 +36,31 @@ DEVICE_MANAGER_MENU_ITEM mDeviceManagerMenuItemTable[] = {
{ STRING_TOKEN (STR_OTHER_DEVICE), EFI_OTHER_DEVICE_CLASS } { 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 \ #define MENU_ITEM_NUM \
(sizeof (mDeviceManagerMenuItemTable) / sizeof (DEVICE_MANAGER_MENU_ITEM)) (sizeof (mDeviceManagerMenuItemTable) / sizeof (DEVICE_MANAGER_MENU_ITEM))
@ -100,21 +125,15 @@ InitializeDeviceManager (
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
// //
// Create driver handle used by HII database // Install Device Path Protocol and Config Access protocol to driver handle
// //
Status = HiiLibCreateHiiDriverHandle (&gDeviceManagerPrivate.DriverHandle); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&gDeviceManagerPrivate.DriverHandle, &gDeviceManagerPrivate.DriverHandle,
&gEfiDevicePathProtocolGuid,
&mDeviceManagerHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &gDeviceManagerPrivate.ConfigAccess,
&gDeviceManagerPrivate.ConfigAccess NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -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 This function allows a caller to extract the current configuration for one
or more named elements from the target driver. or more named elements from the target driver.
@ -324,21 +349,15 @@ InitializeFrontPage (
} }
// //
// Create driver handle used by HII database // Install Device Path Protocol and Config Access protocol to driver handle
// //
Status = HiiLibCreateHiiDriverHandle (&gFrontPagePrivate.DriverHandle); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&gFrontPagePrivate.DriverHandle, &gFrontPagePrivate.DriverHandle,
&gEfiDevicePathProtocolGuid,
&mFrontPageHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &gFrontPagePrivate.ConfigAccess,
&gFrontPagePrivate.ConfigAccess NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -259,23 +259,13 @@ ExportFonts (
VOID VOID
) )
{ {
EFI_STATUS Status;
EFI_HANDLE DriverHandle;
EFI_HII_HANDLE HiiHandle; EFI_HII_HANDLE HiiHandle;
EFI_HII_PACKAGE_LIST_HEADER *PackageList; 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); PackageList = HiiLibPreparePackageList (1, &mFontPackageGuid, &mFontBin);
ASSERT (PackageList != NULL); ASSERT (PackageList != NULL);
gHiiDatabase->NewPackageList (gHiiDatabase, PackageList, DriverHandle, &HiiHandle); gHiiDatabase->NewPackageList (gHiiDatabase, PackageList, mBdsImageHandle, &HiiHandle);
FreePool (PackageList); FreePool (PackageList);
} }

View File

@ -34,7 +34,6 @@ InitializeStringSupport (
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_HANDLE DriverHandle;
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gHiiDatabase); Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gHiiDatabase);
@ -42,21 +41,13 @@ InitializeStringSupport (
return Status; return Status;
} }
//
// Create driver handle used by HII database
//
Status = HiiLibCreateHiiDriverHandle (&DriverHandle);
if (EFI_ERROR (Status)) {
return Status;
}
PackageList = HiiLibPreparePackageList (1, &mBdsStringPackGuid, &BdsDxeStrings); PackageList = HiiLibPreparePackageList (1, &mBdsStringPackGuid, &BdsDxeStrings);
ASSERT (PackageList != NULL); ASSERT (PackageList != NULL);
Status = gHiiDatabase->NewPackageList ( Status = gHiiDatabase->NewPackageList (
gHiiDatabase, gHiiDatabase,
PackageList, PackageList,
DriverHandle, mBdsImageHandle,
&gStringPackHandle &gStringPackHandle
); );

View File

@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/DevicePathToText.h> #include <Protocol/DevicePathToText.h>
#include <Protocol/DevicePath.h> #include <Protocol/DevicePath.h>
#include <Library/DevicePathLib.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
@ -47,7 +48,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/PlatformDriverOverrideLib.h> #include <Library/PlatformDriverOverrideLib.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/IfrSupportLib.h> #include <Library/IfrSupportLib.h>
#include <Library/ExtendedHiiLib.h>
#include <Library/ExtendedIfrSupportLib.h> #include <Library/ExtendedIfrSupportLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
@ -66,6 +66,18 @@ typedef struct {
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
} EFI_CALLBACK_INFO; } 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. // uni string and Vfr Binary data.
// //
@ -92,6 +104,31 @@ UINTN mSelectedDriverImageNum;
UINTN mLastSavedDriverImageNum; UINTN mLastSavedDriverImageNum;
UINT16 mCurrentPage; 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. Converting a given device to an unicode string.
@ -1276,8 +1313,7 @@ PlatOverMngrInit (
EFI_HII_DATABASE_PROTOCOL *HiiDatabase; EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_CALLBACK_INFO *CallbackInfo; EFI_CALLBACK_INFO *CallbackInfo;
EFI_HANDLE DriverHandle; EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
// //
// There should only be one HII protocol // There should only be one HII protocol
@ -1314,22 +1350,15 @@ PlatOverMngrInit (
CallbackInfo->ConfigAccess.Callback = PlatOverMngrCallback; 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); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) { &CallbackInfo->DriverHandle,
goto Finish; &gEfiDevicePathProtocolGuid,
} &mHiiVendorDevicePath,
CallbackInfo->DriverHandle = DriverHandle;
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&DriverHandle,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &CallbackInfo->ConfigAccess,
&CallbackInfo->ConfigAccess NULL
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
goto Finish; goto Finish;
@ -1349,7 +1378,7 @@ PlatOverMngrInit (
Status = HiiDatabase->NewPackageList ( Status = HiiDatabase->NewPackageList (
HiiDatabase, HiiDatabase,
PackageList, PackageList,
DriverHandle, CallbackInfo->DriverHandle,
&CallbackInfo->RegisteredHandle &CallbackInfo->RegisteredHandle
); );
FreePool (PackageList); FreePool (PackageList);
@ -1405,7 +1434,14 @@ PlatOverMngrInit (
Finish: Finish:
if (CallbackInfo->DriverHandle != NULL) { if (CallbackInfo->DriverHandle != NULL) {
HiiLibDestroyHiiDriverHandle (CallbackInfo->DriverHandle); gBS->UninstallMultipleProtocolInterfaces (
CallbackInfo->DriverHandle,
&gEfiDevicePathProtocolGuid,
&mHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid,
&CallbackInfo->ConfigAccess,
NULL
);
} }
if (CallbackInfo != NULL) { if (CallbackInfo != NULL) {
FreePool (CallbackInfo); FreePool (CallbackInfo);

View File

@ -58,7 +58,6 @@
PlatformDriverOverrideLib PlatformDriverOverrideLib
HiiLib HiiLib
IfrSupportLib IfrSupportLib
ExtendedHiiLib
ExtendedIfrSupportLib ExtendedIfrSupportLib
BaseMemoryLib BaseMemoryLib
MemoryAllocationLib MemoryAllocationLib
@ -85,4 +84,4 @@
gEfiFormBrowser2ProtocolGuid ## CONSUMED gEfiFormBrowser2ProtocolGuid ## CONSUMED
gEfiHiiConfigRoutingProtocolGuid ## CONSUMED gEfiHiiConfigRoutingProtocolGuid ## CONSUMED
gEfiHiiConfigAccessProtocolGuid ## PRODUCED gEfiHiiConfigAccessProtocolGuid ## PRODUCED
gEfiDevicePathToTextProtocolGuid ## CONSUMED gEfiDevicePathToTextProtocolGuid ## CONSUMED

View File

@ -25,26 +25,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define BROWSER_STATE_VALIDATE_PASSWORD 0 #define BROWSER_STATE_VALIDATE_PASSWORD 0
#define BROWSER_STATE_SET_PASSWORD 1 #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 /// GUIDed opcodes defined for EDKII implementation
/// ///

View File

@ -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. <BR>
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

View File

@ -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. <BR>
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 <Uefi.h>
#include <Protocol/DevicePath.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DevicePathLib.h>
#include <Guid/MdeModuleHii.h>
//
// 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);
}

View File

@ -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. <BR>
# 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

View File

@ -60,11 +60,6 @@
## @libraryclass Provides a set of interfaces to do IFR opcode creation and interact with a UEFI Form Browser. ## @libraryclass Provides a set of interfaces to do IFR opcode creation and interact with a UEFI Form Browser.
IfrSupportLib|Include/Library/IfrSupportLib.h 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 ## @libraryclass Defines APIs that is related to IFR operations but specific to EDK II
# implementation. # implementation.
## ##

View File

@ -62,7 +62,6 @@
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@ -276,7 +275,6 @@
MdeModulePkg/Library/DxePlatDriOverLib/DxePlatDriOverLib.inf MdeModulePkg/Library/DxePlatDriOverLib/DxePlatDriOverLib.inf
MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf MdeModulePkg/Library/ExtendedIfrSupportLib/ExtendedIfrSupportLib.inf
MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf

View File

@ -23,6 +23,56 @@ EFI_GUID mInventoryGuid = INVENTORY_GUID;
CHAR16 VariableName[] = L"MyIfrNVData"; 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. Encode the password using a simple algorithm.
@ -689,7 +739,7 @@ DriverSampleInit (
EFI_STATUS SavedStatus; EFI_STATUS SavedStatus;
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_HII_HANDLE HiiHandle[2]; EFI_HII_HANDLE HiiHandle[2];
EFI_HANDLE DriverHandle[2]; EFI_HANDLE DriverHandle[2] = {NULL, NULL};
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData; DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;
EFI_SCREEN_DESCRIPTOR Screen; EFI_SCREEN_DESCRIPTOR Screen;
EFI_HII_DATABASE_PROTOCOL *HiiDatabase; EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
@ -766,23 +816,18 @@ DriverSampleInit (
} }
PrivateData->HiiConfigRouting = HiiConfigRouting; PrivateData->HiiConfigRouting = HiiConfigRouting;
// Status = gBS->InstallMultipleProtocolInterfaces (
// Install Config Access protocol
//
Status = HiiLibCreateHiiDriverHandle (&DriverHandle[0]);
if (EFI_ERROR (Status)) {
return Status;
}
PrivateData->DriverHandle[0] = DriverHandle[0];
Status = gBS->InstallProtocolInterface (
&DriverHandle[0], &DriverHandle[0],
&gEfiDevicePathProtocolGuid,
&mHiiVendorDevicePath1,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &PrivateData->ConfigAccess,
&PrivateData->ConfigAccess NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
PrivateData->DriverHandle[0] = DriverHandle[0];
// //
// Publish our HII data // Publish our HII data
// //
@ -811,10 +856,14 @@ DriverSampleInit (
// //
// Publish another Fromset // Publish another Fromset
// //
Status = HiiLibCreateHiiDriverHandle (&DriverHandle[1]); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) { &DriverHandle[1],
return Status; &gEfiDevicePathProtocolGuid,
} &mHiiVendorDevicePath2,
NULL
);
ASSERT_EFI_ERROR (Status);
PrivateData->DriverHandle[1] = DriverHandle[1]; PrivateData->DriverHandle[1] = DriverHandle[1];
PackageList = HiiLibPreparePackageList ( PackageList = HiiLibPreparePackageList (

View File

@ -42,7 +42,7 @@ Revision History
#include <Library/IfrSupportLib.h> #include <Library/IfrSupportLib.h>
#include <Library/ExtendedIfrSupportLib.h> #include <Library/ExtendedIfrSupportLib.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/ExtendedHiiLib.h> #include <Library/DevicePathLib.h>
#include "NVDataStruc.h" #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) #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 #endif

View File

@ -53,7 +53,6 @@
DebugLib DebugLib
HiiLib HiiLib
IfrSupportLib IfrSupportLib
ExtendedHiiLib
ExtendedIfrSupportLib ExtendedIfrSupportLib
[Protocols] [Protocols]

View File

@ -24,6 +24,31 @@ LIST_ENTRY mIScsiConfigFormList = {
&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. Convert the IPv4 address into a dotted string.
@ -908,7 +933,7 @@ IScsiConfigFormInit (
return Status; 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) { if (CallbackInfo == NULL) {
return EFI_OUT_OF_RESOURCES; 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); Status = gBS->InstallMultipleProtocolInterfaces (
if (EFI_ERROR (Status)) {
FreePool(CallbackInfo);
return Status;
}
//
// Install Config Access protocol to driver handle
//
Status = gBS->InstallProtocolInterface (
&CallbackInfo->DriverHandle, &CallbackInfo->DriverHandle,
&gEfiDevicePathProtocolGuid,
&mIScsiHiiVendorDevicePath,
&gEfiHiiConfigAccessProtocolGuid, &gEfiHiiConfigAccessProtocolGuid,
EFI_NATIVE_INTERFACE, &CallbackInfo->ConfigAccess,
&CallbackInfo->ConfigAccess NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
@ -1010,13 +1028,14 @@ IScsiConfigFormUnload (
// //
// Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL // Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL
// //
gBS->UninstallProtocolInterface ( gBS->UninstallMultipleProtocolInterfaces (
mCallbackInfo->DriverHandle, mCallbackInfo->DriverHandle,
&gEfiHiiConfigAccessProtocolGuid, &gEfiDevicePathProtocolGuid,
&mCallbackInfo->ConfigAccess &mIScsiHiiVendorDevicePath,
); &gEfiHiiConfigAccessProtocolGuid,
HiiLibDestroyHiiDriverHandle (mCallbackInfo->DriverHandle); &mCallbackInfo->ConfigAccess,
NULL
);
gBS->FreePool (mCallbackInfo); gBS->FreePool (mCallbackInfo);
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -17,7 +17,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/HiiConfigRouting.h> #include <Protocol/HiiConfigRouting.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/ExtendedHiiLib.h> #include <Library/DevicePathLib.h>
#include <Library/IfrSupportLib.h> #include <Library/IfrSupportLib.h>
#include <Library/ExtendedIfrSupportLib.h> #include <Library/ExtendedIfrSupportLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
@ -103,6 +103,18 @@ typedef struct _ISCSI_FORM_CALLBACK_INFO {
ISCSI_CONFIG_FORM_ENTRY *Current; ISCSI_CONFIG_FORM_ENTRY *Current;
} ISCSI_FORM_CALLBACK_INFO; } 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 Updates the iSCSI configuration form to add/delete an entry for the iSCSI
device specified by the Controller. device specified by the Controller.

View File

@ -79,7 +79,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
PrintLib PrintLib
HiiLib HiiLib
IfrSupportLib IfrSupportLib
ExtendedHiiLib
ExtendedIfrSupportLib ExtendedIfrSupportLib
NetLib NetLib

View File

@ -525,7 +525,6 @@ InitializeSetup (
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_HANDLE HiiDriverHandle;
EFI_HII_PACKAGE_LIST_HEADER *PackageList; EFI_HII_PACKAGE_LIST_HEADER *PackageList;
// //
@ -555,15 +554,12 @@ InitializeSetup (
// //
// Publish our HII data // Publish our HII data
// //
Status = HiiLibCreateHiiDriverHandle (&HiiDriverHandle);
ASSERT_EFI_ERROR (Status);
PackageList = HiiLibPreparePackageList (1, &gSetupBrowserGuid, SetupBrowserStrings); PackageList = HiiLibPreparePackageList (1, &gSetupBrowserGuid, SetupBrowserStrings);
ASSERT (PackageList != NULL); ASSERT (PackageList != NULL);
Status = mHiiDatabase->NewPackageList ( Status = mHiiDatabase->NewPackageList (
mHiiDatabase, mHiiDatabase,
PackageList, PackageList,
HiiDriverHandle, ImageHandle,
&gHiiHandle &gHiiHandle
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);

View File

@ -42,7 +42,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/IfrSupportLib.h> #include <Library/IfrSupportLib.h>
#include <Library/ExtendedIfrSupportLib.h> #include <Library/ExtendedIfrSupportLib.h>
#include <Library/HiiLib.h> #include <Library/HiiLib.h>
#include <Library/ExtendedHiiLib.h>
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include "Colors.h" #include "Colors.h"

View File

@ -61,7 +61,6 @@
PrintLib PrintLib
IfrSupportLib IfrSupportLib
HiiLib HiiLib
ExtendedHiiLib
[Guids] [Guids]
gEfiIfrTianoGuid ## CONSUMES ## GUID gEfiIfrTianoGuid ## CONSUMES ## GUID

View File

@ -65,7 +65,6 @@
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf
RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf

View File

@ -61,7 +61,6 @@
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
ExtendedHiiLib|MdeModulePkg/Library/ExtendedHiiLib/ExtendedHiiLib.inf
S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf S3Lib|MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf
RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf RecoveryLib|MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf IfrSupportLib|MdeModulePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf