mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-29 16:44:10 +02:00
Use EFI_IMAGE_OPTIONAL_HEADER_UNION struct to get PeImage subsystem type.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4802 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9631746839
commit
1fbc8fcbd2
@ -1256,12 +1256,10 @@ Returns:
|
|||||||
{
|
{
|
||||||
UINTN BufferSize;
|
UINTN BufferSize;
|
||||||
EFI_IMAGE_DOS_HEADER DosHdr;
|
EFI_IMAGE_DOS_HEADER DosHdr;
|
||||||
EFI_IMAGE_NT_HEADERS PeHdr;
|
|
||||||
EFI_IMAGE_OPTIONAL_HEADER32 *PeOpt32;
|
|
||||||
EFI_IMAGE_OPTIONAL_HEADER64 *PeOpt64;
|
|
||||||
UINT16 Subsystem;
|
UINT16 Subsystem;
|
||||||
EFI_FILE_HANDLE File;
|
EFI_FILE_HANDLE File;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
EFI_IMAGE_OPTIONAL_HEADER_UNION PeHdr;
|
||||||
|
|
||||||
Status = Dir->Open (Dir, &File, FileName, EFI_FILE_MODE_READ, 0);
|
Status = Dir->Open (Dir, &File, FileName, EFI_FILE_MODE_READ, 0);
|
||||||
|
|
||||||
@ -1277,25 +1275,19 @@ Returns:
|
|||||||
}
|
}
|
||||||
|
|
||||||
File->SetPosition (File, DosHdr.e_lfanew);
|
File->SetPosition (File, DosHdr.e_lfanew);
|
||||||
BufferSize = sizeof (EFI_IMAGE_NT_HEADERS);
|
BufferSize = sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION);
|
||||||
File->Read (File, &BufferSize, &PeHdr);
|
File->Read (File, &BufferSize, &PeHdr);
|
||||||
if (PeHdr.Signature != EFI_IMAGE_NT_SIGNATURE) {
|
if (PeHdr.Pe32.Signature != EFI_IMAGE_NT_SIGNATURE) {
|
||||||
File->Close (File);
|
File->Close (File);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// Determine PE type and read subsytem
|
// Determine PE type and read subsytem
|
||||||
// BugBug : We should be using EFI_IMAGE_MACHINE_TYPE_SUPPORTED (machine)
|
|
||||||
// macro to detect the machine type.
|
|
||||||
// We should not be using EFI_IMAGE_OPTIONAL_HEADER32 and
|
|
||||||
// EFI_IMAGE_OPTIONAL_HEADER64
|
|
||||||
//
|
//
|
||||||
if (PeHdr.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
|
if (PeHdr.Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
|
||||||
PeOpt32 = (EFI_IMAGE_OPTIONAL_HEADER32 *) &(PeHdr.OptionalHeader);
|
Subsystem = PeHdr.Pe32.OptionalHeader.Subsystem;
|
||||||
Subsystem = PeOpt32->Subsystem;
|
} else if (PeHdr.Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
|
||||||
} else if (PeHdr.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
|
Subsystem = PeHdr.Pe32Plus.OptionalHeader.Subsystem;
|
||||||
PeOpt64 = (EFI_IMAGE_OPTIONAL_HEADER64 *) &(PeHdr.OptionalHeader);
|
|
||||||
Subsystem = PeOpt64->Subsystem;
|
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user