1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include <efi.h>
- #include <efilib.h>
- EFI_STATUS
- efi_main(
- EFI_HANDLE image_handle,
- EFI_SYSTEM_TABLE *systab
- )
- {
- EFI_GUID loaded_image_protocol = LOADED_IMAGE_PROTOCOL;
- EFI_STATUS efi_status;
- EFI_LOADED_IMAGE *li;
- UINTN pat = PoolAllocationType;
- VOID *void_li_p;
- InitializeLib(image_handle, systab);
- PoolAllocationType = 2; /* klooj */
- Print(L"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
- Print(L"before InitializeLib(): PoolAllocationType=%d\n",
- pat);
- Print(L" after InitializeLib(): PoolAllocationType=%d\n",
- PoolAllocationType);
- /*
- * Locate loaded_image_handle instance.
- */
- Print(L"BS->HandleProtocol() ");
- efi_status = uefi_call_wrapper(
- BS->HandleProtocol,
- 3,
- image_handle,
- &loaded_image_protocol,
- &void_li_p);
- li = void_li_p;
- Print(L"%xh (%r)\n", efi_status, efi_status);
- if (efi_status != EFI_SUCCESS) {
- return efi_status;
- }
- Print(L" li: %xh\n", li);
- if (!li) {
- return EFI_UNSUPPORTED;
- }
- Print(L" li->Revision: %xh\n", li->Revision);
- Print(L" li->ParentHandle: %xh\n", li->ParentHandle);
- Print(L" li->SystemTable: %xh\n", li->SystemTable);
- Print(L" li->DeviceHandle: %xh\n", li->DeviceHandle);
- Print(L" li->FilePath: %xh\n", li->FilePath);
- Print(L" li->Reserved: %xh\n", li->Reserved);
- Print(L" li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
- Print(L" li->LoadOptions: %xh\n", li->LoadOptions);
- Print(L" li->ImageBase: %xh\n", li->ImageBase);
- Print(L" li->ImageSize: %xh\n", li->ImageSize);
- Print(L" li->ImageCodeType: %xh\n", li->ImageCodeType);
- Print(L" li->ImageDataType: %xh\n", li->ImageDataType);
- Print(L" li->Unload: %xh\n", li->Unload);
- #if 0
- typedef struct {
- UINT32 Revision;
- EFI_HANDLE ParentHandle;
- struct _EFI_SYSTEM_TABLE *SystemTable;
- // Source location of image
- EFI_HANDLE DeviceHandle;
- EFI_DEVICE_PATH *FilePath;
- VOID *Reserved;
- // Images load options
- UINT32 LoadOptionsSize;
- VOID *LoadOptions;
- // Location of where image was loaded
- VOID *ImageBase;
- UINT64 ImageSize;
- EFI_MEMORY_TYPE ImageCodeType;
- EFI_MEMORY_TYPE ImageDataType;
- // If the driver image supports a dynamic unload request
- EFI_IMAGE_UNLOAD Unload;
- } EFI_LOADED_IMAGE;
- #endif
- return EFI_SUCCESS;
- }
|