From 6064c1e48b622f53538f4df9bdd402c607a87d51 Mon Sep 17 00:00:00 2001
From: Konstantin Aladyshev <aladyshev22@gmail.com>
Date: Sat, 10 Jul 2021 00:04:40 +0300
Subject: Move lessons to separate folder

Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
---
 .../Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.c | 44 ++++++++++++++++++++++
 .../UefiLessonsPkg/ImageInfo/ImageInfo.inf         | 22 +++++++++++
 2 files changed, 66 insertions(+)
 create mode 100644 Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.c
 create mode 100644 Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.inf

(limited to 'Lessons/Lesson_12/UefiLessonsPkg/ImageInfo')

diff --git a/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.c b/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.c
new file mode 100644
index 0000000..c45570e
--- /dev/null
+++ b/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.c
@@ -0,0 +1,44 @@
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/UefiLib.h>
+
+#include <Protocol/LoadedImage.h>
+#include <Library/DevicePathLib.h>
+
+EFI_STATUS
+EFIAPI
+UefiMain (
+  IN EFI_HANDLE        ImageHandle,
+  IN EFI_SYSTEM_TABLE  *SystemTable
+  )
+{
+  EFI_STATUS Status;
+  EFI_LOADED_IMAGE_PROTOCOL* LoadedImage;
+
+  Status = gBS->HandleProtocol(
+    ImageHandle,
+    &gEfiLoadedImageProtocolGuid,
+    (VOID **) &LoadedImage
+  );
+
+  if (Status == EFI_SUCCESS) {
+    EFI_DEVICE_PATH_PROTOCOL* DevicePath;
+
+    Status = gBS->HandleProtocol(
+      ImageHandle,
+      &gEfiLoadedImageDevicePathProtocolGuid,
+      (VOID**) &DevicePath
+    );
+
+    if (Status == EFI_SUCCESS) {
+      Print(L"Image device: %s\n", ConvertDevicePathToText(DevicePath, FALSE, TRUE));
+      Print(L"Image file: %s\n",  ConvertDevicePathToText(LoadedImage->FilePath, FALSE, TRUE));	// EFI_DEVICE_PATH_PROTOCOL *FilePath
+      Print(L"Image Base: %X\n", LoadedImage->ImageBase);
+      Print(L"Image Size: %X\n", LoadedImage->ImageSize);
+    } else {
+      Print(L"Can't get EFI_LOADED_IMAGE_PROTOCOL, Status=%r\n", Status);
+    }
+  } else {
+    Print(L"Can't get EFI_DEVICE_PATH_PROTOCOL, Status=%r\n", Status);
+  }
+  return EFI_SUCCESS;
+}
diff --git a/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.inf b/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.inf
new file mode 100644
index 0000000..0ce54a6
--- /dev/null
+++ b/Lessons/Lesson_12/UefiLessonsPkg/ImageInfo/ImageInfo.inf
@@ -0,0 +1,22 @@
+[Defines]
+  INF_VERSION                    = 1.25
+  BASE_NAME                      = ImageInfo
+  FILE_GUID                      = b68d3472-70c7-4928-841b-6566032e0a23
+  MODULE_TYPE                    = UEFI_APPLICATION
+  VERSION_STRING                 = 1.0
+  ENTRY_POINT                    = UefiMain
+
+[Sources]
+  ImageInfo.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+
+[LibraryClasses]
+  UefiApplicationEntryPoint
+  UefiLib
+
+[Protocols]
+  gEfiLoadedImageProtocolGuid
+  gEfiLoadedImageDevicePathProtocolGuid
+
-- 
cgit v1.2.3-18-g5258