Attribute Macro unsafe_protocol

Source
#[unsafe_protocol]
Expand description

Attribute macro for marking structs as UEFI protocols.

The macro can only be applied to a struct, and takes one argument, either a GUID string or the path to a Guid constant.

The macro implements the Protocol trait and the unsafe Identify trait for the struct. See the Protocol trait for details of how it is used.

§Safety

The caller must ensure that the correct GUID is attached to the type. An incorrect GUID could lead to invalid casts and other unsound behavior.

§Example

use uefi::{Guid, Identify, guid};
use uefi::proto::unsafe_protocol;

#[unsafe_protocol("12345678-9abc-def0-1234-56789abcdef0")]
struct ExampleProtocol1 {}

const PROTO_GUID: Guid = guid!("12345678-9abc-def0-1234-56789abcdef0");
#[unsafe_protocol(PROTO_GUID)]
struct ExampleProtocol2 {}

assert_eq!(ExampleProtocol1::GUID, PROTO_GUID);
assert_eq!(ExampleProtocol2::GUID, PROTO_GUID);