diff options
author | Konstantin Aladyshev <aladyshev22@gmail.com> | 2021-07-12 15:28:51 +0300 |
---|---|---|
committer | Konstantin Aladyshev <aladyshev22@gmail.com> | 2021-07-12 15:34:20 +0300 |
commit | ea49e59ed0fc50085716e55d66395b6afef8a554 (patch) | |
tree | 91089f5b20ede7ee53f7f613b2d5eb72a23a1017 /UefiLessonsPkg/ShowHii | |
parent | f980e8c1e946285a212fad287164b0c9ef3b1625 (diff) | |
download | UEFI-Lessons-ea49e59ed0fc50085716e55d66395b6afef8a554.tar.gz UEFI-Lessons-ea49e59ed0fc50085716e55d66395b6afef8a554.tar.bz2 UEFI-Lessons-ea49e59ed0fc50085716e55d66395b6afef8a554.zip |
Update UefiLessonsPkg
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
Diffstat (limited to 'UefiLessonsPkg/ShowHii')
-rw-r--r-- | UefiLessonsPkg/ShowHii/ShowHii.c | 120 | ||||
-rw-r--r-- | UefiLessonsPkg/ShowHii/ShowHii.inf | 22 |
2 files changed, 0 insertions, 142 deletions
diff --git a/UefiLessonsPkg/ShowHii/ShowHii.c b/UefiLessonsPkg/ShowHii/ShowHii.c deleted file mode 100644 index 27f23c3..0000000 --- a/UefiLessonsPkg/ShowHii/ShowHii.c +++ /dev/null @@ -1,120 +0,0 @@ -#include <Library/UefiBootServicesTableLib.h> -#include <Library/UefiLib.h> - -#include <Protocol/HiiDatabase.h> -#include <Library/MemoryAllocationLib.h> - - -CHAR16* PackageType(UINTN Type) -{ - switch(Type) { - case EFI_HII_PACKAGE_TYPE_ALL: - return L"ALL"; - case EFI_HII_PACKAGE_TYPE_GUID: - return L"GUID"; - case EFI_HII_PACKAGE_FORMS: - return L"FORMS"; - case EFI_HII_PACKAGE_STRINGS: - return L"STRINGS"; - case EFI_HII_PACKAGE_FONTS: - return L"FONTS"; - case EFI_HII_PACKAGE_IMAGES: - return L"IMAGES"; - case EFI_HII_PACKAGE_SIMPLE_FONTS: - return L"SIMPLE_FONTS"; - case EFI_HII_PACKAGE_DEVICE_PATH: - return L"DEVICE_PATH"; - case EFI_HII_PACKAGE_KEYBOARD_LAYOUT: - return L"KEYBOARD_LAYOUT"; - case EFI_HII_PACKAGE_ANIMATIONS: - return L"ANIMATIONS"; - case EFI_HII_PACKAGE_END: - return L"END"; - case EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN: - return L"SYSTEM_BEGIN"; - case EFI_HII_PACKAGE_TYPE_SYSTEM_END: - return L"SYSTEM_END"; - } - return L"UNKNOWN"; -} - -VOID ParseHiiPackageLists(EFI_HII_PACKAGE_LIST_HEADER* HiiDatabase, UINTN HiiDatabaseSize) -{ - EFI_HII_PACKAGE_LIST_HEADER* HiiPackageListHeader; - HiiPackageListHeader = (EFI_HII_PACKAGE_LIST_HEADER*) HiiDatabase; - - UINTN i=0; - while ((UINTN) HiiPackageListHeader < ((UINTN) HiiDatabase + HiiDatabaseSize)) { - UINTN HiiPackageListSize = HiiPackageListHeader->PackageLength; - if (HiiPackageListSize == 0) - break; - Print(L"PackageList[%d]: GUID=%g\n", i++, HiiPackageListHeader->PackageListGuid); - - EFI_HII_PACKAGE_HEADER* HiiPackageHeader = (EFI_HII_PACKAGE_HEADER*)((UINTN) HiiPackageListHeader + sizeof(EFI_HII_PACKAGE_LIST_HEADER)); - UINTN j=0; - while ((UINTN) HiiPackageHeader < ((UINTN) HiiPackageListHeader + HiiPackageListSize)) { - Print(L"\tPackage[%d]: type=%s\n", j++, PackageType(HiiPackageHeader->Type)); - // Go to next Package - HiiPackageHeader = (EFI_HII_PACKAGE_HEADER*)((UINTN) HiiPackageHeader + HiiPackageHeader->Length); - } - // Go to next PackageList - HiiPackageListHeader = (EFI_HII_PACKAGE_LIST_HEADER*)((UINTN) HiiPackageListHeader + HiiPackageListSize); - } -} - -EFI_STATUS -EFIAPI -UefiMain ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - EFI_HII_DATABASE_PROTOCOL* HiiDbProtocol; - Status = gBS->LocateProtocol(&gEfiHiiDatabaseProtocolGuid, - NULL, - (VOID**)&HiiDbProtocol); - if (EFI_ERROR(Status)) { - Print(L"ERROR: Could not find HII Database protocol: %r\n", Status); - return Status; - } - - - UINTN PackageListSize = 0; - EFI_HII_PACKAGE_LIST_HEADER* PackageList = NULL; - - Status = HiiDbProtocol->ExportPackageLists(HiiDbProtocol, - NULL, // All package lists - &PackageListSize, - PackageList); - if (Status != EFI_BUFFER_TOO_SMALL) { - Print(L"ERROR: Could not obtain package list size\n"); - return Status; - } - - Status = gBS->AllocatePool(EfiBootServicesData, - PackageListSize, - (VOID**)&PackageList); - if (EFI_ERROR(Status)) { - Print(L"ERROR: Could not allocate sufficient memory for package list: %r\n", Status); - return Status; - } - - - Status = HiiDbProtocol->ExportPackageLists(HiiDbProtocol, - NULL, - &PackageListSize, - PackageList); - if (EFI_ERROR(Status)) { - Print(L"ERROR: Could not retrieve the package list: %r\n", Status); - FreePool(PackageList); - return Status; - } - - ParseHiiPackageLists(PackageList, PackageListSize); - //////// - - FreePool(PackageList); - - return EFI_SUCCESS; -} diff --git a/UefiLessonsPkg/ShowHii/ShowHii.inf b/UefiLessonsPkg/ShowHii/ShowHii.inf deleted file mode 100644 index ec8ba46..0000000 --- a/UefiLessonsPkg/ShowHii/ShowHii.inf +++ /dev/null @@ -1,22 +0,0 @@ -[Defines] - INF_VERSION = 1.25 - BASE_NAME = ShowHii - FILE_GUID = 75a15862-aa04-47c2-a0ac-14a0a8bf5756 - MODULE_TYPE = UEFI_APPLICATION - VERSION_STRING = 1.0 - ENTRY_POINT = UefiMain - -[Sources] - ShowHii.c - -[Packages] - MdePkg/MdePkg.dec - -[LibraryClasses] - UefiApplicationEntryPoint - UefiLib - -[Protocols] - gEfiHiiDatabaseProtocolGuid - - |