Devices may implement protocols, which are Banjo ABIs used by child devices to interact with parent devices in a device-specific manner. The USB Protocol, Block Core Protocol, and Ethernet Protocol, are examples of these. Protocols are usually in-process interactions between devices in the same driver host, but in cases of driver isolation, they may take place through RPC to another driver host (through proxy).
See Banjo Tutorial to learn how to use Banjo.