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.