Extensible Firmware Interface Specification
120 12/12/00 Version 1.02
A Device Path is a series of generic Device Path nodes. The first Device Path node starts at byte
offset zero of the Device Path. The next Device Path node starts at the end of the previous Device
Path node. Therefore all nodes are byte packed data structures that may appear on any byte
boundary. All code references to device path notes must assume all fields are UNALIGNED. Since
every Device Path node contains a length field in a known place, it is possible to traverse Device
Path nodes that are of an unknown type. There is no limit to the number, type, or sequence of
nodes in a Device Path.
A Device Path is terminated by an End of Hardware Device Path node. This type of node has two
sub-types (see Table 5-2):
End This Instance of a Device Path (sub-type 0x01). This type of node terminates one Device
Path instance and denotes the start of another. This is only required when an EFI_HANDLE
represents multiple devices. An example of this would be a handle that represents
ConsoleOut, and consists of both a VGA console and serial output console. This handle
would send the ConsoleOut stream to both VGA and serial concurrently and thus has a
Device Path that contains two complete Device Paths.
End Entire Device Path (sub-type 0xFF). This type of node terminates an entire Device Path.
Software searches for this sub-type to find the end of a Device Path. All Device Paths must
end with this sub-type.
Table 5-2. Device Path End Structure
Mnemonic
Byte
Offset
Byte
Length Description
Type 0 1 Type 0x7F End of Hardware Device Path
Type 0xFF End of Hardware Device Path
Sub-Type 1 1 Sub-Type 0xFF End Entire Device Path, or
Sub-Type 0x01 End This Instance of a Device Path and start a new
Device Path
Length 2 2 Length of this structure in bytes. Length is 4 bytes.
5.3.2 Hardware Device Path
This Device Path defines how a device is attached to the resource domain of a system, where
resource domain is simply the shared memory, memory mapped I/O, and I/O space of the system.
It is possible to have multiple levels of Hardware Device Path such as a PCCARD device that was
attached to a PCCARD PCI controller.