Overview
Version 1.02 12/12/00 21
2.5 Requirements
This document is an architectural specification. As such, care has been taken to specify
architecture in ways that allow maximum flexibility in implementation. However, there are certain
requirements on which elements of this specification must be implemented to ensure that operating
system loaders and other code designed to run with EFI boot services can rely upon a consistent
environment.
For the purposes of describing these requirements, the specification is broken up into required and
optional elements. In general, an optional element is completely defined in the section that matches
the element name. For required elements however, the definition may in a few cases not be entirely
self contained in the section that is named for the particular element. In implementing required
elements, care should be taken to cover all the semantics defined in this specification that relate to
the particular element.

2.5.1 Required Elements

Table 2-5 lists the required elements. Any system that is designed to conform to the EFI
specification must provide a complete implementation of all these elements. This means that all the
required service functions and protocols must be present and the implementation must deliver the
full semantics defined in the specification for all combinations of calls and parameters. A system
must provide the LOAD_FILE protocol or the SIMPLE_FILE_SYSTEM protocol or both. It is
possible for a system to boot an OS using just the LOAD_FILE protocol. In this case, the
SIMPLE_FILE_SYSTEM, EFI_FILE_HANDLE, DISK_IO, and BLOCK_IO protocols would not
be required.
Table 2-5. Required EFI Implementation Elements
Element Description
Boot Services All functions defined as boot services.
Runtime Services All functions defined as runtime services.
Partitioning1Functionality to provide BLOCK_IO interfaces for logical block devices
as defined by partition table, or El Torito no emulation device.
BLOCK_IO protocol1Protocol interfaces for devices that support block I/O style accesses.
DEVICE_IO protocol Protocol interfaces for performing device I/O.
DEVICE_PATH protocol Provides the location of the device.
DISK_IO protocol1Protocol interfaces for providing disk IO from a BLOCK_IO interface.
LOAD_FILE protocol Protocol interface for reading a file from an arbitrary device.
LOADED_IMAGE protocol Provides information on the image.
SIMPLE_FILE_SYSTEM protocol1Protocol interfaces for opening disk volumes through a DISK_IO
interface.
EFI_FILE_HANDLE protocol1Protocol interfaces for accessing the device with file I/O style accesses
through a DISK_IO interface.
continued