|
1 | 1 | // SPDX-License-Identifier: MIT OR Apache-2.0
|
2 | 2 |
|
3 |
| -//! High-level wrappers for [UEFI protocols]. |
| 3 | +//! High-level wrappers for UEFI protocols. |
4 | 4 | //!
|
5 |
| -//! See the [`boot`] documentation for details of how to open a protocol. |
| 5 | +//! # TL;DR |
| 6 | +//! Technically, a protocol is a `C` struct holding functions and/or data, with |
| 7 | +//! an associated [`GUID`]. |
| 8 | +//! |
| 9 | +//! # About |
| 10 | +//! UEFI protocols are a structured collection of functions and/or data, |
| 11 | +//! identified by a [`GUID`], which defines an interface between components in |
| 12 | +//! the UEFI environment, such as between drivers, applications, or firmware |
| 13 | +//! services. |
| 14 | +//! |
| 15 | +//! Protocols are central to UEFI’s handle-based object model, and they provide |
| 16 | +//! a clean, extensible way for components to discover and use services from one |
| 17 | +//! another. |
| 18 | +//! |
| 19 | +//! Implementation-wise, a protocol is a `C` struct holding function pointers |
| 20 | +//! and/or data. Please note that some protocols may use [`core::ptr::null`] as |
| 21 | +//! interface. For example, the device path protocol can be implemented but |
| 22 | +//! return `null`. |
| 23 | +//! |
| 24 | +//! [`GUID`]: crate::Guid |
| 25 | +//! |
| 26 | +//! # More Info |
| 27 | +//! - See the [`boot`] documentation for details of how to open a protocol. |
| 28 | +//! - Please find additional low-level information in the |
| 29 | +//! [protocol section of `uefi-raw`]. |
6 | 30 | //!
|
7 | 31 | //! [`boot`]: crate::boot#accessing-protocols
|
8 |
| -//! [UEFI protocols]: uefi_raw::protocol |
| 32 | +//! [protocol section of `uefi-raw`]: uefi_raw::protocol |
9 | 33 |
|
10 | 34 | #[cfg(feature = "alloc")]
|
11 | 35 | pub mod ata;
|
|
0 commit comments