- File->SetPosition (File, DosHdr.e_lfanew);\r
- BufferSize = sizeof (EFI_IMAGE_NT_HEADERS);\r
- File->Read (File, &BufferSize, &PeHdr);\r
- if (PeHdr.Signature != EFI_IMAGE_NT_SIGNATURE) {\r
- File->Close (File);\r
- return FALSE;\r
- }\r
- //\r
- // Determine PE type and read subsytem\r
- // BugBug : We should be using EFI_IMAGE_MACHINE_TYPE_SUPPORTED (machine)\r
- // macro to detect the machine type.\r
- // We should not be using EFI_IMAGE_OPTIONAL_HEADER32 and\r
- // EFI_IMAGE_OPTIONAL_HEADER64\r
- //\r
- if (PeHdr.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
- PeOpt32 = (EFI_IMAGE_OPTIONAL_HEADER32 *) &(PeHdr.OptionalHeader);\r
- Subsystem = PeOpt32->Subsystem;\r
- } else if (PeHdr.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {\r
- PeOpt64 = (EFI_IMAGE_OPTIONAL_HEADER64 *) &(PeHdr.OptionalHeader);\r
- Subsystem = PeOpt64->Subsystem;\r
- } else {\r