The problem may be that EFI_DEVICE_PATH_TO_TEXT_PROTOCOL is not installed in
platform firmware.
From: duck wilson [mailto:duck.54...@gmail.com]
Sent: Friday, October 12, 2012 2:12 PM
To: edk2-devel@lists.sourceforge.net
Subject: [edk2] Help with EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
Greetings,
I am having difficulty in getting an interface instance with both
LocateHandleBuffer
and LocateProtocol for the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL, in both cases the
result is EFI_NOT_FOUND. My build environment is UDK2010.SR1.UP1 with no changes
other than the patch for GCC 4.7 on openSUSE 12.2. The hardware platform is
X86_64
with UEFI 2.0 firmware. I am currently testing using the platform firmware (not
emulation).
Since I am new to UEFI/EDK2 I would like to believe the problem is moi, but
after
too many hours I am beginning to believe it is the platform firmware. Any help
would be much appreciated.
To reduce the problem to simplest form I created an application that does
nothing
more than a LocateProtocol call and print the result (also did the same exercise
with LocateHandleBuffer). The program source and inf files are listed below. The
program was added to MdeModulePkg/Application/Locate. MdeModulePkg.dsc was
changed
to add the new component then the program was built with:
build -m MdeModulePkg/Application/Locate/Locate.inf
Got a clean build with no problem. Copied Locate.efi to the EFI partition.
Booted
into the EFI shell. Run the program and get the not found result.
Running the shell GUID command reveals that the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
is registered and the guid is correct. At this point I am stumped.
TIA!
Locate.c
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/DevicePathToText.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *Interface;
Status = gBS->LocateProtocol (
&gEfiDevicePathToTextProtocolGuid,
NULL,
(VOID **) &Interface
);
if (EFI_ERROR (Status)) {
Print (L"LocateProtocol error: %r\n", Status);
}
else {
Print (L"DevicePathToTextProtocol found.\n");
}
return EFI_SUCCESS;
}
Locate.inf
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = Locate
FILE_GUID = fa7cd993-abf6-4333-85e6-493ba95661d0
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = UefiMain
[Sources]
Locate.c
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
UefiApplicationEntryPoint
UefiBootServicesTableLib
UefiLib
[Protocols]
gEfiDevicePathToTextProtocolGuid
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel