I notice that there are many file types in the edkII build workspace. I notice the workspace also contains files like .efi and .ifi. Besides knowing these are both PE files by examining them with a hex editor its not easy for me to find what the difference in these files are. From the EDK II Build Spec in chapter 10 it has some info on the file types by extension, but when I look at the UEFI specs I don't see anything which jumps out.
For instance I the tables in Chapter 10 say that .efi
o Is an input to GenFds.
o Is an input to ImageGen
I know there is a _EFI_FILE Structure Protocol which seems to be a file handle for accessing files on the EFI Partition. I'm guessing its kind of like a FILE handle for regular user mode file I/O. I also know that in the shell, whn you hit F8 and do dir you see a bunch of .efi files.
Some of the files are xxx.efi and others are xxxDxe.efi. I thought the xxx.efi form would be applications since the Hello program I made from the Beyond Bios book makes a Hello.efi. The hello.efi program can be run by simply saying Hello, but the others like Cpu.efi or Cpu can not. I was thinking it would be something like cpuinfo in linux.
As far as the xxxDxe.efi files, I'm pretty sure they are drivers since they correspond to the output of the drivers command. I don't know what the difference between a dxe driver and dxe application other than one might be an installer for a driver. Anyway, I notice that you can load and unload drivers in the shell. Odd that you can load a driver multiple times. Its also odd that if you load a driver it will show up in drivers output as \/ArpDxe.efi instead of ArpDxe as it is when loaded at boot.
Also load Cpu.efi will crash the emulator.
TLDR. Where in the UEFI spec is the pointer to all the different file types? .efi, .ifi, What is difference between drivers, driver applications?
John F. Davis
6 Kandes Court
Durham, NC 27713