44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
|
#include <efi.h>
|
||
|
#include <efilib.h>
|
||
|
|
||
|
typedef EFI_STATUS (*foo_t)(EFI_HANDLE, EFI_GUID *, VOID **);
|
||
|
typedef struct {
|
||
|
unsigned long addr;
|
||
|
unsigned long gp;
|
||
|
} fdesc_t;
|
||
|
|
||
|
EFI_LOADED_IMAGE my_loaded;
|
||
|
|
||
|
EFI_STATUS
|
||
|
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||
|
{
|
||
|
EFI_LOADED_IMAGE *loaded_image = NULL;
|
||
|
#if 0
|
||
|
EFI_DEVICE_PATH *dev_path;
|
||
|
#endif
|
||
|
EFI_STATUS status;
|
||
|
|
||
|
InitializeLib(image, systab);
|
||
|
status = uefi_call_wrapper(systab->BootServices->HandleProtocol,
|
||
|
3,
|
||
|
image,
|
||
|
&LoadedImageProtocol,
|
||
|
(void **) &loaded_image);
|
||
|
if (EFI_ERROR(status)) {
|
||
|
Print(L"handleprotocol: %r\n", status);
|
||
|
}
|
||
|
|
||
|
#if 0
|
||
|
BS->HandleProtocol(loaded_image->DeviceHandle, &DevicePathProtocol, (void **) &dev_path);
|
||
|
|
||
|
Print(L"Image device : %s\n", DevicePathToStr(dev_path));
|
||
|
Print(L"Image file : %s\n", DevicePathToStr(loaded_image->FilePath));
|
||
|
#endif
|
||
|
Print(L"Image base : %lx\n", loaded_image->ImageBase);
|
||
|
Print(L"Image size : %lx\n", loaded_image->ImageSize);
|
||
|
Print(L"Load options size : %lx\n", loaded_image->LoadOptionsSize);
|
||
|
Print(L"Load options : %s\n", loaded_image->LoadOptions);
|
||
|
|
||
|
return EFI_SUCCESS;
|
||
|
}
|