r_efi/protocols/bus_specific_driver_override.rs
1//! Bus Specific Driver Override Protocol
2//!
3//! This protocol matches one or more drivers to a controller. This protocol is
4//! produced by a bus driver, and it is installed on the child handles of buses
5//! that require a bus specific algorithm for matching drivers to controllers.
6//! This protocol is used by the `EFI_BOOT_SERVICES.ConnectController()` boot
7//! service to select the best driver for a controller. All of the drivers
8//! returned by this protocol have a higher precedence than drivers found in
9//! the general EFI Driver Binding search algorithm, but a lower precedence
10//! than those drivers returned by the EFI Platform Driver Override Protocol.
11//! If more than one driver image handle is returned by this protocol, then the
12//! drivers image handles are returned in order from highest precedence to
13//! lowest precedence.
14
15pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
16 0x3bc1b285,
17 0x8a15,
18 0x4a82,
19 0xaa,
20 0xbf,
21 &[0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65],
22);
23
24pub type ProtocolGetDriver = eficall! {fn(
25 *mut Protocol,
26 *mut crate::base::Handle,
27) -> crate::base::Status};
28
29#[repr(C)]
30pub struct Protocol {
31 pub get_driver: ProtocolGetDriver,
32}