summaryrefslogtreecommitdiffstats
path: root/vendor/r-efi/src/protocols/driver_binding.rs
blob: 7ba2ee3283bec6572a9c8998e9b0efef615456c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Driver Binding Protocol
//!
//! Provides the services required to determine if a driver supports a given controller. If
//! a controller is supported, then it also provides routines to start and stop the controller.

pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
    0x18a031ab,
    0xb443,
    0x4d1a,
    0xa5,
    0xc0,
    &[0x0c, 0x09, 0x26, 0x1e, 0x9f, 0x71],
);

pub type ProtocolSupported = eficall! {fn(
    *mut Protocol,
    crate::base::Handle,
    *mut crate::protocols::device_path::Protocol,
) -> crate::base::Status};

pub type ProtocolStart = eficall! {fn(
    *mut Protocol,
    crate::base::Handle,
    *mut crate::protocols::device_path::Protocol,
) -> crate::base::Status};

pub type ProtocolStop = eficall! {fn(
    *mut Protocol,
    crate::base::Handle,
    usize,
    *mut crate::base::Handle,
) -> crate::base::Status};

#[repr(C)]
pub struct Protocol {
    pub supported: ProtocolSupported,
    pub start: ProtocolStart,
    pub stop: ProtocolStop,
    pub version: u32,
    pub image_handle: crate::base::Handle,
    pub driver_binding_handle: crate::base::Handle,
}