EFI DEVICE PATH PROTOCOL

From PhoenixWiki

Jump to: navigation, search

Can be used on any device handle to obtain generic path/location information concerning the physical device or logical device. If the handle does not logically map to a physical device, the handle may not necessarily support the device path protocol. The device path describes the location of the device the handle is for. The size of the Device Path can be determined from the structures that make up the Device Path.

Contents

GUID

#define EFI_DEVICE_PATH_PROTOCOL_GUID \
  {0x09576e91,0x6d3f,0x11d2,0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}

Protocol Interface Structure

#include EFI_PROTOCOL_CONSUMER(DevicePath) // for protocol
#include "Efi\EfiDevicePath.h"             // for #define & structures

extern EFI_GUID gEfiDevicePathProtocolGuid;
typedef struct _EFI_DEVICE_PATH_PROTOCOL {
  UINT8 Type;
  UINT8 SubType;
  UINT8 Length[2];
} EFI_DEVICE_PATH_PROTOCOL;

Members

Member Description
Type The type of device path node.
#define HARDWARE_DEVICE_PATH        0x01  
#define ACPI_DEVICE_PATH            0x02  
#define MESSAGING_DEVICE_PATH       0x03
#define MEDIA_DEVICE_PATH           0x04
#define BBS_DEVICE_PATH             0x05
#define END_DEVICE_PATH_TYPE        0x7f
SubType The sub-type of the device path now. The meaning depends on Type. For HARDWARE_DEVICE_PATH:
#define  HW_PCI_DP                  0x01  
#define  HW_PCCARD_DP               0x02
#define  HW_MEMMAP_DP               0x03
#define  HW_VENDOR_DP               0x04
#define  HW_CONTROLLER_DP           0x05

For ACPI_DEVICE_PATH:

#define  ACPI_DP                    0x01  
#define  ACPI_EXTENDED_DP           0x02
#define  ACPI_ADR_DP                0x03

For MESSAGING_DEVICE_PATH:

#define  MSG_ATAPI_DP               0x01
#define  MSG_SCSI_DP                0x02
#define  MSG_FIBRECHANNEL_DP        0x03
#define  MSG_1394_DP                0x04
#define  MSG_USB_DP                 0x05
#define  MSG_I2O_DP                 0x06
#define  MSG_INFINIBAND_DP          0x09
#define  MSG_VENDOR_DP              0x0a
#define  MSG_MAC_ADDR_DP            0x0b
#define  MSG_IPv4_DP                0x0c
#define  MSG_IPv6_DP                0x0d
#define  MSG_UART_DP                0x0e
#define  MSG_USB_CLASS_DP           0x0f
#define  MSG_USB_WWID_DP            0x10
#define  MSG_DEVICE_LOGICAL_UNIT_DP 0x11
#define  MSG_SATA_DP                0x12
#define  MSG_ISCSI_DP               0x13

For MEDIA_DEVICE_PATH:

#define  MEDIA_HARDDRIVE_DP         0x01
#define  MEDIA_CDROM_DP             0x02
#define  MEDIA_VENDOR_DP            0x03
#define  MEDIA_FILEPATH_DP          0x04
#define  MEDIA_PROTOCOL_DP          0x05

For BBS_DEVICE_PATH:

#define  BBS_BBS_DP                 0x01

For END_DEVICE_PATH_TYPE:

#define END_ENTIRE_DEVICE_PATH_SUBTYPE   0xFF
#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
Length The entire length of this device path node, including this header, in bytes.

Description

The executing IEFI Image may use the device path to match its own device drivers to the particular device. Note that the executing UEFI OS loader and UEFI application images must access all physical devices via Boot Services device handles until ExitBootServices() is successfully called.

A UEFI driver may access only a physical device for which it provides functionality.


Type SubType Structure
HARDWARE_DEVICE_PATH HW_PCI_DP PCI_DEVICE_PATH
HW_PCCARD_DP PCCARD_DEVICE_PATH
HW_MEMMAP_DP MEMMAP_DEVICE_PATH
HW_VENDOR_DP VENDOR_DEVICE_PATH
HW_CONTROLLER_DP CONTROLLER_DEVICE_PATH
ACPI_DEVICE_PATH ACPI_DP ACPI_HID_DEVICE_PATH
ACPI_EXTENDED_DP ACPI_EXTENDED_HID_DEVICE_PATH
ACPI_ADR_DP ACPI_ADR_DEVICE_PATH
MESSAGING_DEVICE_PATH MSG_ATAPI_DP ATAPI_DEVICE_PATH
MSG_SCSI_DP SCSI_DEVICE_PATH
MSG_FIBRECHANNEL_DP FIBRECHANNEL_DEVICE_PATH
MSG_1394_DP F1393_DEVICE_PATH
MSG_USB_DP USB_DEVICE_PATH
MSG_USB_CLASS_DP USB_CLASS_DEVICE_PATH
MSG_USB_WWID_DP USB_WWID_DEVICE_PATH
MSG_DEVICE_LOGICAL_UNIT_DP DEVICE_LOGICAL_UNIT_DEVICE_PATH
MSG_I2O_DEP I2O_DEVICE_PATH
MSG_MAC_ADDR_DP MAC_ADDR_DEVICE_PATH
MSG_IPv4_DP IPv4_DEVICE_PATH
MSG_IPv6_DP IPv6_DEVICE_PATH
MSG_INFINIBAND_DP INFINIBAND_DEVICE_PATH
MSG_UART_DP UART_DEVICE_PATH
MSG_VENDOR_DP VENDOR_DEVICE_PATH
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_PC_ANSI ---
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_PC_VT_100 ---
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_PC_VT_100_PLUS ---
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_PC_UTF8 ---
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_FLOW_CONTROL UART_FLOW_CONTROL_DEVICE_PATH
MSG_VENDOR_DP, GUID = DEVICE_PATH_MESSAGING_SAS SAS_DEVICE_PATH
MSG_ISCSI_DP ISCSI_DEVICE_PATH
MSG_SATA_DP SATA_DEVICE_PATH
MEDIA_DEVICE_PATH MEDIA_HARDDRIVE_DP HARDDRIVE_DEVICE_PATH
MEDIA_CDROM_DP CDROM_DEVICE_PATH
MEDIA_VENDOR_DP VENDOR_DEVICE_PATH
MEDIA_VENDOR_DP, GUID = UNKNOWN_DEVICE_GUID UNKNOWN_DEVICE_VENDOR_DEVICE_PATH
MEDIA_FILEPATH_DP FILEPATH_DEVICE_PATH
MEDIA_PROTOCOL_DP MEDIA_PROTOCOL_DEVICE_PATH
BBS_DEVICE_PATH BBS_BBS_DP BBS_BBS_DEVICE_PATH

Copyright (C) 2008 Phoenix Technologies Ltd. All Rights Reserved. Portions copyright (C) 2008 UEFI Forum, Inc. Used with permission

Personal tools