From e8ba34ff3dfb888f86d62ad229c6c5d624f56135 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Thu, 5 Feb 2009 19:31:45 +0000 Subject: [PATCH] Update DUET PCI Bus Driver to use PeCoffLib instead of parsing the PE/COFF image itself git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7439 6f19259b-4bc3-4df7-8a09-765794883524 --- DuetPkg/PciBusNoEnumerationDxe/PciBus.h | 2 +- .../PciBusNoEnumeration.inf | 1 + .../PciBusNoEnumerationDxe/PciDriverOverride.c | 18 +++++++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/DuetPkg/PciBusNoEnumerationDxe/PciBus.h b/DuetPkg/PciBusNoEnumerationDxe/PciBus.h index edc1eaf7b9..e83f32d7bf 100644 --- a/DuetPkg/PciBusNoEnumerationDxe/PciBus.h +++ b/DuetPkg/PciBusNoEnumerationDxe/PciBus.h @@ -50,7 +50,7 @@ Revision History #include #include #include - +#include // // Driver Produced Protocol Prototypes diff --git a/DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf b/DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf index 6128da37d4..5ad324d3e3 100644 --- a/DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf +++ b/DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf @@ -39,6 +39,7 @@ BaseMemoryLib ReportStatusCodeLib DevicePathLib + PeCoffLib [Sources] PciBus.h diff --git a/DuetPkg/PciBusNoEnumerationDxe/PciDriverOverride.c b/DuetPkg/PciBusNoEnumerationDxe/PciDriverOverride.c index 67de1392f7..17bf212a19 100644 --- a/DuetPkg/PciBusNoEnumerationDxe/PciDriverOverride.c +++ b/DuetPkg/PciBusNoEnumerationDxe/PciDriverOverride.c @@ -135,9 +135,8 @@ Returns: { EFI_STATUS Status; - EFI_IMAGE_DOS_HEADER *DosHdr; - EFI_IMAGE_NT_HEADERS *PeHdr; EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; + PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; PCI_DRIVER_OVERRIDE_LIST *Node; #if (EFI_SPECIFICATION_VERSION < 0x00020000) EFI_DRIVER_OS_HANDOFF_HEADER *DriverOsHandoffHeader; @@ -167,14 +166,19 @@ Returns: PciIoDevice->BusOverride = TRUE; - DosHdr = (EFI_IMAGE_DOS_HEADER *) LoadedImage->ImageBase; - if (DosHdr->e_magic != EFI_IMAGE_DOS_SIGNATURE) { + + ImageContext.Handle = LoadedImage->ImageBase; + ImageContext.ImageRead = PeCoffLoaderImageReadFromMemory; + + // + // Get information about the image + // + Status = PeCoffLoaderGetImageInfo (&ImageContext); + if (EFI_ERROR (Status)) { return EFI_SUCCESS; } - PeHdr = (EFI_IMAGE_NT_HEADERS *) ((UINTN) LoadedImage->ImageBase + DosHdr->e_lfanew); - - if (PeHdr->FileHeader.Machine != EFI_IMAGE_MACHINE_EBC) { + if (ImageContext.Machine != EFI_IMAGE_MACHINE_EBC) { return EFI_SUCCESS; }