33 lines
1.2 KiB
Rust
33 lines
1.2 KiB
Rust
//! Bus Specific Driver Override Protocol
|
|
//!
|
|
//! This protocol matches one or more drivers to a controller. This protocol is
|
|
//! produced by a bus driver, and it is installed on the child handles of buses
|
|
//! that require a bus specific algorithm for matching drivers to controllers.
|
|
//! This protocol is used by the `EFI_BOOT_SERVICES.ConnectController()` boot
|
|
//! service to select the best driver for a controller. All of the drivers
|
|
//! returned by this protocol have a higher precedence than drivers found in
|
|
//! the general EFI Driver Binding search algorithm, but a lower precedence
|
|
//! than those drivers returned by the EFI Platform Driver Override Protocol.
|
|
//! If more than one driver image handle is returned by this protocol, then the
|
|
//! drivers image handles are returned in order from highest precedence to
|
|
//! lowest precedence.
|
|
|
|
pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
|
|
0x3bc1b285,
|
|
0x8a15,
|
|
0x4a82,
|
|
0xaa,
|
|
0xbf,
|
|
&[0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65],
|
|
);
|
|
|
|
pub type ProtocolGetDriver = unsafe extern "efiapi" fn(
|
|
*mut Protocol,
|
|
*mut crate::base::Handle,
|
|
) -> crate::base::Status;
|
|
|
|
#[repr(C)]
|
|
pub struct Protocol {
|
|
pub get_driver: ProtocolGetDriver,
|
|
}
|