Data Fields | |
EFI_STATUS_CODE_DATA | DataHeader |
The device path is used to point to the physical device in case there is more than one device belonging to the same subclass. For example, the system may contain two USB keyboards and one PS/2* keyboard. The driver that parses the status code can use the device path extended data to differentiate between the three. The index field is not useful in this case because there is no standard numbering convention. Device paths are preferred over using device handles because device handles for a given device can change from one boot to another and do not mean anything beyond Boot Services time. In certain cases, the bus driver may not create a device handle for a given device if it detects a critical error. In these cases, the device path extended data can be used to refer to the device, but there may not be any device handles with an instance of EFI_DEVICE_PATH_PROTOCOL that matches DevicePath. The variable device path structure is included in this structure to make it self sufficient.
The data header identifying the data. DataHeader.HeaderSize should be sizeof (EFI_STATUS_CODE_DATA). DataHeader.Size should be the size of variable-length DevicePath, and DataHeader.Size is zero for a virtual device that does not have a device path. DataHeader.Type should be EFI_STATUS_CODE_SPECIFIC_DATA_GUID.