10 UEFI Service Binding Protocol

The Service Binding Protocol is not associated with a single GUID value. Instead, each Service Binding Protocol GUID value is paired with another protocol providing a specific set of services. The protocol interfaces for all Service Binding Protocols are identical and contain the services CreateChild() and DestroyChild(). When CreateChild() is called, a new handle is created with the associated protocol installed. When DestroyChild() is called, the associated protocol is uninstalled and the handle is freed.

The UEFI Specification defines the following Service Binding Protocol GUIDs.

Table 22-Service Binding Protocols

Service Binding Protocol

Associated Protocol

EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL

EFI_MANAGED_NETWORK_PROTOCOL

EFI_ARP_SERVICE_BINDING_PROTOCOL

EFI_ARP_PROTOCOL

EFI_EAP_SERVICE_BINDING_PROTOCOL

EFI_EAP_PROTOCOL

EFI_IP4_SERVICE_BINDING_PROTOCOL

EFI_IP4_PROTOCOL

EFI_IP6_SERVICE_BINDING_PROTOCOL

EFI_IP6_PROTOCOL

EFI_TCP4_SERVICE_BINDING_PROTOCOL

EFI_TCP4_PROTOCOL

EFI_TCP6_SERVICE_BINDING_PROTOCOL

EFI_TCP6_PROTOCOL

EFI_UDP4_SERVICE_BINDING_PROTOCOL

EFI_UDP4_PROTOCOL

EFI_UDP6_SERVICE_BINDING_PROTOCOL

EFI_UDP6_PROTOCOL

EFI_MTFTP4_SERVICE_BINDING_PROTOCOL

EFI_MTFTP4_PROTOCOL

EFI_MTFTP6_SERVICE_BINDING_PROTOCOL

EFI_MTFTP6_PROTOCOL

EFI_DHCP4_SERVICE_BINDING_PROTOCOL

EFI_DHCP4_PROTOCOL

EFI_DHCP6_SERVICE_BINDING_PROTOCOL

EFI_DHCP6_PROTOCOL

EFI_HASH_SERVICE_BINDING_PROTOCOL

EFI_HASH_PROTOCOL

The Service Binding Protocol feature is required only if the associated protocol requires a Service Binding Protocol to produce its services and it defines a GUID value for that Service Binding Protocol. The table above lists the protocols defined in the UEFI Specification requiring the Service Binding Protocol feature. None of the other protocols defined by the UEFI Specification require a Service Binding Protocol.

For new protocols, a decision must be made to determine if the new protocol requires a Service Binding Protocol. The Driver Binding Protocol is usually sufficient for managing devices on common bus topologies and for the simple layering of protocols on a single device. When more complex tree or graph topologies are required and, with the expectation that services of the new protocol be required by multiple consumers, a Service Binding Protocol should be considered.