Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame^] | 1 | /** @file
|
| 2 | Include file that supports UEFI.
|
| 3 |
|
| 4 | This include file must contain things defined in the UEFI 2.4 specification.
|
| 5 | If a code construct is defined in the UEFI 2.4 specification it must be included
|
| 6 | by this include file.
|
| 7 |
|
| 8 | Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
| 9 | This program and the accompanying materials are licensed and made available under
|
| 10 | the terms and conditions of the BSD License that accompanies this distribution.
|
| 11 | The full text of the license may be found at
|
| 12 | http://opensource.org/licenses/bsd-license.php.
|
| 13 |
|
| 14 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 15 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 16 |
|
| 17 | **/
|
| 18 |
|
| 19 | #ifndef __UEFI_SPEC_H__
|
| 20 | #define __UEFI_SPEC_H__
|
| 21 |
|
| 22 | #include <Uefi/UefiMultiPhase.h>
|
| 23 |
|
| 24 | #include <Protocol/DevicePath.h>
|
| 25 | #include <Protocol/SimpleTextIn.h>
|
| 26 | #include <Protocol/SimpleTextInEx.h>
|
| 27 | #include <Protocol/SimpleTextOut.h>
|
| 28 |
|
| 29 | ///
|
| 30 | /// Enumeration of EFI memory allocation types.
|
| 31 | ///
|
| 32 | typedef enum {
|
| 33 | ///
|
| 34 | /// Allocate any available range of pages that satisfies the request.
|
| 35 | ///
|
| 36 | AllocateAnyPages,
|
| 37 | ///
|
| 38 | /// Allocate any available range of pages whose uppermost address is less than
|
| 39 | /// or equal to a specified maximum address.
|
| 40 | ///
|
| 41 | AllocateMaxAddress,
|
| 42 | ///
|
| 43 | /// Allocate pages at a specified address.
|
| 44 | ///
|
| 45 | AllocateAddress,
|
| 46 | ///
|
| 47 | /// Maximum enumeration value that may be used for bounds checking.
|
| 48 | ///
|
| 49 | MaxAllocateType
|
| 50 | } EFI_ALLOCATE_TYPE;
|
| 51 |
|
| 52 | //
|
| 53 | // Bit definitions for EFI_TIME.Daylight
|
| 54 | //
|
| 55 | #define EFI_TIME_ADJUST_DAYLIGHT 0x01
|
| 56 | #define EFI_TIME_IN_DAYLIGHT 0x02
|
| 57 |
|
| 58 | ///
|
| 59 | /// Value definition for EFI_TIME.TimeZone.
|
| 60 | ///
|
| 61 | #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
|
| 62 |
|
| 63 | //
|
| 64 | // Memory cacheability attributes
|
| 65 | //
|
| 66 | #define EFI_MEMORY_UC 0x0000000000000001ULL
|
| 67 | #define EFI_MEMORY_WC 0x0000000000000002ULL
|
| 68 | #define EFI_MEMORY_WT 0x0000000000000004ULL
|
| 69 | #define EFI_MEMORY_WB 0x0000000000000008ULL
|
| 70 | #define EFI_MEMORY_UCE 0x0000000000000010ULL
|
| 71 | //
|
| 72 | // Physical memory protection attributes
|
| 73 | //
|
| 74 | #define EFI_MEMORY_WP 0x0000000000001000ULL
|
| 75 | #define EFI_MEMORY_RP 0x0000000000002000ULL
|
| 76 | #define EFI_MEMORY_XP 0x0000000000004000ULL
|
| 77 | //
|
| 78 | // Runtime memory attribute
|
| 79 | //
|
| 80 | #define EFI_MEMORY_RUNTIME 0x8000000000000000ULL
|
| 81 |
|
| 82 | ///
|
| 83 | /// Memory descriptor version number.
|
| 84 | ///
|
| 85 | #define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
| 86 |
|
| 87 | ///
|
| 88 | /// Definition of an EFI memory descriptor.
|
| 89 | ///
|
| 90 | typedef struct {
|
| 91 | ///
|
| 92 | /// Type of the memory region. See EFI_MEMORY_TYPE.
|
| 93 | ///
|
| 94 | UINT32 Type;
|
| 95 | ///
|
| 96 | /// Physical address of the first byte of the memory region. Must aligned
|
| 97 | /// on a 4 KB boundary.
|
| 98 | ///
|
| 99 | EFI_PHYSICAL_ADDRESS PhysicalStart;
|
| 100 | ///
|
| 101 | /// Virtual address of the first byte of the memory region. Must aligned
|
| 102 | /// on a 4 KB boundary.
|
| 103 | ///
|
| 104 | EFI_VIRTUAL_ADDRESS VirtualStart;
|
| 105 | ///
|
| 106 | /// Number of 4KB pages in the memory region.
|
| 107 | ///
|
| 108 | UINT64 NumberOfPages;
|
| 109 | ///
|
| 110 | /// Attributes of the memory region that describe the bit mask of capabilities
|
| 111 | /// for that memory region, and not necessarily the current settings for that
|
| 112 | /// memory region.
|
| 113 | ///
|
| 114 | UINT64 Attribute;
|
| 115 | } EFI_MEMORY_DESCRIPTOR;
|
| 116 |
|
| 117 | /**
|
| 118 | Allocates memory pages from the system.
|
| 119 |
|
| 120 | @param[in] Type The type of allocation to perform.
|
| 121 | @param[in] MemoryType The type of memory to allocate.
|
| 122 | @param[in] Pages The number of contiguous 4 KB pages to allocate.
|
| 123 | @param[in, out] Memory The pointer to a physical address. On input, the way in which the address is
|
| 124 | used depends on the value of Type.
|
| 125 |
|
| 126 | @retval EFI_SUCCESS The requested pages were allocated.
|
| 127 | @retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or
|
| 128 | AllocateMaxAddress or AllocateAddress.
|
| 129 | 2) MemoryType is in the range
|
| 130 | 3) Memory is NULL.
|
| 131 | EfiMaxMemoryType..0x7FFFFFFF.
|
| 132 | @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
|
| 133 | @retval EFI_NOT_FOUND The requested pages could not be found.
|
| 134 |
|
| 135 | **/
|
| 136 | typedef
|
| 137 | EFI_STATUS
|
| 138 | (EFIAPI *EFI_ALLOCATE_PAGES)(
|
| 139 | IN EFI_ALLOCATE_TYPE Type,
|
| 140 | IN EFI_MEMORY_TYPE MemoryType,
|
| 141 | IN UINTN Pages,
|
| 142 | IN OUT EFI_PHYSICAL_ADDRESS *Memory
|
| 143 | );
|
| 144 |
|
| 145 | /**
|
| 146 | Frees memory pages.
|
| 147 |
|
| 148 | @param[in] Memory The base physical address of the pages to be freed.
|
| 149 | @param[in] Pages The number of contiguous 4 KB pages to free.
|
| 150 |
|
| 151 | @retval EFI_SUCCESS The requested pages were freed.
|
| 152 | @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
|
| 153 | @retval EFI_NOT_FOUND The requested memory pages were not allocated with
|
| 154 | AllocatePages().
|
| 155 |
|
| 156 | **/
|
| 157 | typedef
|
| 158 | EFI_STATUS
|
| 159 | (EFIAPI *EFI_FREE_PAGES)(
|
| 160 | IN EFI_PHYSICAL_ADDRESS Memory,
|
| 161 | IN UINTN Pages
|
| 162 | );
|
| 163 |
|
| 164 | /**
|
| 165 | Returns the current memory map.
|
| 166 |
|
| 167 | @param[in, out] MemoryMapSize A pointer to the size, in bytes, of the MemoryMap buffer.
|
| 168 | On input, this is the size of the buffer allocated by the caller.
|
| 169 | On output, it is the size of the buffer returned by the firmware if
|
| 170 | the buffer was large enough, or the size of the buffer needed to contain
|
| 171 | the map if the buffer was too small.
|
| 172 | @param[in, out] MemoryMap A pointer to the buffer in which firmware places the current memory
|
| 173 | map.
|
| 174 | @param[out] MapKey A pointer to the location in which firmware returns the key for the
|
| 175 | current memory map.
|
| 176 | @param[out] DescriptorSize A pointer to the location in which firmware returns the size, in bytes, of
|
| 177 | an individual EFI_MEMORY_DESCRIPTOR.
|
| 178 | @param[out] DescriptorVersion A pointer to the location in which firmware returns the version number
|
| 179 | associated with the EFI_MEMORY_DESCRIPTOR.
|
| 180 |
|
| 181 | @retval EFI_SUCCESS The memory map was returned in the MemoryMap buffer.
|
| 182 | @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current buffer size
|
| 183 | needed to hold the memory map is returned in MemoryMapSize.
|
| 184 | @retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL.
|
| 185 | 2) The MemoryMap buffer is not too small and MemoryMap is
|
| 186 | NULL.
|
| 187 |
|
| 188 | **/
|
| 189 | typedef
|
| 190 | EFI_STATUS
|
| 191 | (EFIAPI *EFI_GET_MEMORY_MAP)(
|
| 192 | IN OUT UINTN *MemoryMapSize,
|
| 193 | IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
| 194 | OUT UINTN *MapKey,
|
| 195 | OUT UINTN *DescriptorSize,
|
| 196 | OUT UINT32 *DescriptorVersion
|
| 197 | );
|
| 198 |
|
| 199 | /**
|
| 200 | Allocates pool memory.
|
| 201 |
|
| 202 | @param[in] PoolType The type of pool to allocate.
|
| 203 | @param[in] Size The number of bytes to allocate from the pool.
|
| 204 | @param[out] Buffer A pointer to a pointer to the allocated buffer if the call succeeds;
|
| 205 | undefined otherwise.
|
| 206 |
|
| 207 | @retval EFI_SUCCESS The requested number of bytes was allocated.
|
| 208 | @retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated.
|
| 209 | @retval EFI_INVALID_PARAMETER PoolType was invalid or Buffer is NULL.
|
| 210 |
|
| 211 | **/
|
| 212 | typedef
|
| 213 | EFI_STATUS
|
| 214 | (EFIAPI *EFI_ALLOCATE_POOL)(
|
| 215 | IN EFI_MEMORY_TYPE PoolType,
|
| 216 | IN UINTN Size,
|
| 217 | OUT VOID **Buffer
|
| 218 | );
|
| 219 |
|
| 220 | /**
|
| 221 | Returns pool memory to the system.
|
| 222 |
|
| 223 | @param[in] Buffer The pointer to the buffer to free.
|
| 224 |
|
| 225 | @retval EFI_SUCCESS The memory was returned to the system.
|
| 226 | @retval EFI_INVALID_PARAMETER Buffer was invalid.
|
| 227 |
|
| 228 | **/
|
| 229 | typedef
|
| 230 | EFI_STATUS
|
| 231 | (EFIAPI *EFI_FREE_POOL)(
|
| 232 | IN VOID *Buffer
|
| 233 | );
|
| 234 |
|
| 235 | /**
|
| 236 | Changes the runtime addressing mode of EFI firmware from physical to virtual.
|
| 237 |
|
| 238 | @param[in] MemoryMapSize The size in bytes of VirtualMap.
|
| 239 | @param[in] DescriptorSize The size in bytes of an entry in the VirtualMap.
|
| 240 | @param[in] DescriptorVersion The version of the structure entries in VirtualMap.
|
| 241 | @param[in] VirtualMap An array of memory descriptors which contain new virtual
|
| 242 | address mapping information for all runtime ranges.
|
| 243 |
|
| 244 | @retval EFI_SUCCESS The virtual address map has been applied.
|
| 245 | @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in
|
| 246 | virtual address mapped mode.
|
| 247 | @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is invalid.
|
| 248 | @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory
|
| 249 | map that requires a mapping.
|
| 250 | @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found
|
| 251 | in the memory map.
|
| 252 |
|
| 253 | **/
|
| 254 | typedef
|
| 255 | EFI_STATUS
|
| 256 | (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
|
| 257 | IN UINTN MemoryMapSize,
|
| 258 | IN UINTN DescriptorSize,
|
| 259 | IN UINT32 DescriptorVersion,
|
| 260 | IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
| 261 | );
|
| 262 |
|
| 263 | /**
|
| 264 | Connects one or more drivers to a controller.
|
| 265 |
|
| 266 | @param[in] ControllerHandle The handle of the controller to which driver(s) are to be connected.
|
| 267 | @param[in] DriverImageHandle A pointer to an ordered list handles that support the
|
| 268 | EFI_DRIVER_BINDING_PROTOCOL.
|
| 269 | @param[in] RemainingDevicePath A pointer to the device path that specifies a child of the
|
| 270 | controller specified by ControllerHandle.
|
| 271 | @param[in] Recursive If TRUE, then ConnectController() is called recursively
|
| 272 | until the entire tree of controllers below the controller specified
|
| 273 | by ControllerHandle have been created. If FALSE, then
|
| 274 | the tree of controllers is only expanded one level.
|
| 275 |
|
| 276 | @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle.
|
| 277 | 2) No drivers were connected to ControllerHandle, but
|
| 278 | RemainingDevicePath is not NULL, and it is an End Device
|
| 279 | Path Node.
|
| 280 | @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
|
| 281 | @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
|
| 282 | present in the system.
|
| 283 | 2) No drivers were connected to ControllerHandle.
|
| 284 | @retval EFI_SECURITY_VIOLATION
|
| 285 | The user has no permission to start UEFI device drivers on the device path
|
| 286 | associated with the ControllerHandle or specified by the RemainingDevicePath.
|
| 287 | **/
|
| 288 | typedef
|
| 289 | EFI_STATUS
|
| 290 | (EFIAPI *EFI_CONNECT_CONTROLLER)(
|
| 291 | IN EFI_HANDLE ControllerHandle,
|
| 292 | IN EFI_HANDLE *DriverImageHandle, OPTIONAL
|
| 293 | IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OPTIONAL
|
| 294 | IN BOOLEAN Recursive
|
| 295 | );
|
| 296 |
|
| 297 | /**
|
| 298 | Disconnects one or more drivers from a controller.
|
| 299 |
|
| 300 | @param[in] ControllerHandle The handle of the controller from which driver(s) are to be disconnected.
|
| 301 | @param[in] DriverImageHandle The driver to disconnect from ControllerHandle.
|
| 302 | If DriverImageHandle is NULL, then all the drivers currently managing
|
| 303 | ControllerHandle are disconnected from ControllerHandle.
|
| 304 | @param[in] ChildHandle The handle of the child to destroy.
|
| 305 | If ChildHandle is NULL, then all the children of ControllerHandle are
|
| 306 | destroyed before the drivers are disconnected from ControllerHandle.
|
| 307 |
|
| 308 | @retval EFI_SUCCESS 1) One or more drivers were disconnected from the controller.
|
| 309 | 2) On entry, no drivers are managing ControllerHandle.
|
| 310 | 3) DriverImageHandle is not NULL, and on entry
|
| 311 | DriverImageHandle is not managing ControllerHandle.
|
| 312 | @retval EFI_INVALID_PARAMETER 1) ControllerHandle is NULL.
|
| 313 | 2) DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE.
|
| 314 | 3) ChildHandle is not NULL, and it is not a valid EFI_HANDLE.
|
| 315 | 4) DriverImageHandle does not support the EFI_DRIVER_BINDING_PROTOCOL.
|
| 316 | @retval EFI_OUT_OF_RESOURCES There are not enough resources available to disconnect any drivers from
|
| 317 | ControllerHandle.
|
| 318 | @retval EFI_DEVICE_ERROR The controller could not be disconnected because of a device error.
|
| 319 |
|
| 320 | **/
|
| 321 | typedef
|
| 322 | EFI_STATUS
|
| 323 | (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
|
| 324 | IN EFI_HANDLE ControllerHandle,
|
| 325 | IN EFI_HANDLE DriverImageHandle, OPTIONAL
|
| 326 | IN EFI_HANDLE ChildHandle OPTIONAL
|
| 327 | );
|
| 328 |
|
| 329 |
|
| 330 |
|
| 331 | //
|
| 332 | // ConvertPointer DebugDisposition type.
|
| 333 | //
|
| 334 | #define EFI_OPTIONAL_PTR 0x00000001
|
| 335 |
|
| 336 | /**
|
| 337 | Determines the new virtual address that is to be used on subsequent memory accesses.
|
| 338 |
|
| 339 | @param[in] DebugDisposition Supplies type information for the pointer being converted.
|
| 340 | @param[in, out] Address A pointer to a pointer that is to be fixed to be the value needed
|
| 341 | for the new virtual address mappings being applied.
|
| 342 |
|
| 343 | @retval EFI_SUCCESS The pointer pointed to by Address was modified.
|
| 344 | @retval EFI_INVALID_PARAMETER 1) Address is NULL.
|
| 345 | 2) *Address is NULL and DebugDisposition does
|
| 346 | not have the EFI_OPTIONAL_PTR bit set.
|
| 347 | @retval EFI_NOT_FOUND The pointer pointed to by Address was not found to be part
|
| 348 | of the current memory map. This is normally fatal.
|
| 349 |
|
| 350 | **/
|
| 351 | typedef
|
| 352 | EFI_STATUS
|
| 353 | (EFIAPI *EFI_CONVERT_POINTER)(
|
| 354 | IN UINTN DebugDisposition,
|
| 355 | IN OUT VOID **Address
|
| 356 | );
|
| 357 |
|
| 358 |
|
| 359 | //
|
| 360 | // These types can be ORed together as needed - for example,
|
| 361 | // EVT_TIMER might be Ored with EVT_NOTIFY_WAIT or
|
| 362 | // EVT_NOTIFY_SIGNAL.
|
| 363 | //
|
| 364 | #define EVT_TIMER 0x80000000
|
| 365 | #define EVT_RUNTIME 0x40000000
|
| 366 | #define EVT_NOTIFY_WAIT 0x00000100
|
| 367 | #define EVT_NOTIFY_SIGNAL 0x00000200
|
| 368 |
|
| 369 | #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
|
| 370 | #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
|
| 371 |
|
| 372 | //
|
| 373 | // The event's NotifyContext pointer points to a runtime memory
|
| 374 | // address.
|
| 375 | // The event is deprecated in UEFI2.0 and later specifications.
|
| 376 | //
|
| 377 | #define EVT_RUNTIME_CONTEXT 0x20000000
|
| 378 |
|
| 379 |
|
| 380 | /**
|
| 381 | Invoke a notification event
|
| 382 |
|
| 383 | @param[in] Event Event whose notification function is being invoked.
|
| 384 | @param[in] Context The pointer to the notification function's context,
|
| 385 | which is implementation-dependent.
|
| 386 |
|
| 387 | **/
|
| 388 | typedef
|
| 389 | VOID
|
| 390 | (EFIAPI *EFI_EVENT_NOTIFY)(
|
| 391 | IN EFI_EVENT Event,
|
| 392 | IN VOID *Context
|
| 393 | );
|
| 394 |
|
| 395 | /**
|
| 396 | Creates an event.
|
| 397 |
|
| 398 | @param[in] Type The type of event to create and its mode and attributes.
|
| 399 | @param[in] NotifyTpl The task priority level of event notifications, if needed.
|
| 400 | @param[in] NotifyFunction The pointer to the event's notification function, if any.
|
| 401 | @param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter
|
| 402 | Context in the notification function.
|
| 403 | @param[out] Event The pointer to the newly created event if the call succeeds; undefined
|
| 404 | otherwise.
|
| 405 |
|
| 406 | @retval EFI_SUCCESS The event structure was created.
|
| 407 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 408 | @retval EFI_OUT_OF_RESOURCES The event could not be allocated.
|
| 409 |
|
| 410 | **/
|
| 411 | typedef
|
| 412 | EFI_STATUS
|
| 413 | (EFIAPI *EFI_CREATE_EVENT)(
|
| 414 | IN UINT32 Type,
|
| 415 | IN EFI_TPL NotifyTpl,
|
| 416 | IN EFI_EVENT_NOTIFY NotifyFunction,
|
| 417 | IN VOID *NotifyContext,
|
| 418 | OUT EFI_EVENT *Event
|
| 419 | );
|
| 420 |
|
| 421 | /**
|
| 422 | Creates an event in a group.
|
| 423 |
|
| 424 | @param[in] Type The type of event to create and its mode and attributes.
|
| 425 | @param[in] NotifyTpl The task priority level of event notifications,if needed.
|
| 426 | @param[in] NotifyFunction The pointer to the event's notification function, if any.
|
| 427 | @param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter
|
| 428 | Context in the notification function.
|
| 429 | @param[in] EventGroup The pointer to the unique identifier of the group to which this event belongs.
|
| 430 | If this is NULL, then the function behaves as if the parameters were passed
|
| 431 | to CreateEvent.
|
| 432 | @param[out] Event The pointer to the newly created event if the call succeeds; undefined
|
| 433 | otherwise.
|
| 434 |
|
| 435 | @retval EFI_SUCCESS The event structure was created.
|
| 436 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 437 | @retval EFI_OUT_OF_RESOURCES The event could not be allocated.
|
| 438 |
|
| 439 | **/
|
| 440 | typedef
|
| 441 | EFI_STATUS
|
| 442 | (EFIAPI *EFI_CREATE_EVENT_EX)(
|
| 443 | IN UINT32 Type,
|
| 444 | IN EFI_TPL NotifyTpl,
|
| 445 | IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
|
| 446 | IN CONST VOID *NotifyContext OPTIONAL,
|
| 447 | IN CONST EFI_GUID *EventGroup OPTIONAL,
|
| 448 | OUT EFI_EVENT *Event
|
| 449 | );
|
| 450 |
|
| 451 | ///
|
| 452 | /// Timer delay types
|
| 453 | ///
|
| 454 | typedef enum {
|
| 455 | ///
|
| 456 | /// An event's timer settings is to be cancelled and not trigger time is to be set/
|
| 457 | ///
|
| 458 | TimerCancel,
|
| 459 | ///
|
| 460 | /// An event is to be signaled periodically at a specified interval from the current time.
|
| 461 | ///
|
| 462 | TimerPeriodic,
|
| 463 | ///
|
| 464 | /// An event is to be signaled once at a specified interval from the current time.
|
| 465 | ///
|
| 466 | TimerRelative
|
| 467 | } EFI_TIMER_DELAY;
|
| 468 |
|
| 469 | /**
|
| 470 | Sets the type of timer and the trigger time for a timer event.
|
| 471 |
|
| 472 | @param[in] Event The timer event that is to be signaled at the specified time.
|
| 473 | @param[in] Type The type of time that is specified in TriggerTime.
|
| 474 | @param[in] TriggerTime The number of 100ns units until the timer expires.
|
| 475 | A TriggerTime of 0 is legal.
|
| 476 | If Type is TimerRelative and TriggerTime is 0, then the timer
|
| 477 | event will be signaled on the next timer tick.
|
| 478 | If Type is TimerPeriodic and TriggerTime is 0, then the timer
|
| 479 | event will be signaled on every timer tick.
|
| 480 |
|
| 481 | @retval EFI_SUCCESS The event has been set to be signaled at the requested time.
|
| 482 | @retval EFI_INVALID_PARAMETER Event or Type is not valid.
|
| 483 |
|
| 484 | **/
|
| 485 | typedef
|
| 486 | EFI_STATUS
|
| 487 | (EFIAPI *EFI_SET_TIMER)(
|
| 488 | IN EFI_EVENT Event,
|
| 489 | IN EFI_TIMER_DELAY Type,
|
| 490 | IN UINT64 TriggerTime
|
| 491 | );
|
| 492 |
|
| 493 | /**
|
| 494 | Signals an event.
|
| 495 |
|
| 496 | @param[in] Event The event to signal.
|
| 497 |
|
| 498 | @retval EFI_SUCCESS The event has been signaled.
|
| 499 |
|
| 500 | **/
|
| 501 | typedef
|
| 502 | EFI_STATUS
|
| 503 | (EFIAPI *EFI_SIGNAL_EVENT)(
|
| 504 | IN EFI_EVENT Event
|
| 505 | );
|
| 506 |
|
| 507 | /**
|
| 508 | Stops execution until an event is signaled.
|
| 509 |
|
| 510 | @param[in] NumberOfEvents The number of events in the Event array.
|
| 511 | @param[in] Event An array of EFI_EVENT.
|
| 512 | @param[out] Index The pointer to the index of the event which satisfied the wait condition.
|
| 513 |
|
| 514 | @retval EFI_SUCCESS The event indicated by Index was signaled.
|
| 515 | @retval EFI_INVALID_PARAMETER 1) NumberOfEvents is 0.
|
| 516 | 2) The event indicated by Index is of type
|
| 517 | EVT_NOTIFY_SIGNAL.
|
| 518 | @retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION.
|
| 519 |
|
| 520 | **/
|
| 521 | typedef
|
| 522 | EFI_STATUS
|
| 523 | (EFIAPI *EFI_WAIT_FOR_EVENT)(
|
| 524 | IN UINTN NumberOfEvents,
|
| 525 | IN EFI_EVENT *Event,
|
| 526 | OUT UINTN *Index
|
| 527 | );
|
| 528 |
|
| 529 | /**
|
| 530 | Closes an event.
|
| 531 |
|
| 532 | @param[in] Event The event to close.
|
| 533 |
|
| 534 | @retval EFI_SUCCESS The event has been closed.
|
| 535 |
|
| 536 | **/
|
| 537 | typedef
|
| 538 | EFI_STATUS
|
| 539 | (EFIAPI *EFI_CLOSE_EVENT)(
|
| 540 | IN EFI_EVENT Event
|
| 541 | );
|
| 542 |
|
| 543 | /**
|
| 544 | Checks whether an event is in the signaled state.
|
| 545 |
|
| 546 | @param[in] Event The event to check.
|
| 547 |
|
| 548 | @retval EFI_SUCCESS The event is in the signaled state.
|
| 549 | @retval EFI_NOT_READY The event is not in the signaled state.
|
| 550 | @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL.
|
| 551 |
|
| 552 | **/
|
| 553 | typedef
|
| 554 | EFI_STATUS
|
| 555 | (EFIAPI *EFI_CHECK_EVENT)(
|
| 556 | IN EFI_EVENT Event
|
| 557 | );
|
| 558 |
|
| 559 |
|
| 560 | //
|
| 561 | // Task priority level
|
| 562 | //
|
| 563 | #define TPL_APPLICATION 4
|
| 564 | #define TPL_CALLBACK 8
|
| 565 | #define TPL_NOTIFY 16
|
| 566 | #define TPL_HIGH_LEVEL 31
|
| 567 |
|
| 568 |
|
| 569 | /**
|
| 570 | Raises a task's priority level and returns its previous level.
|
| 571 |
|
| 572 | @param[in] NewTpl The new task priority level.
|
| 573 |
|
| 574 | @return Previous task priority level
|
| 575 |
|
| 576 | **/
|
| 577 | typedef
|
| 578 | EFI_TPL
|
| 579 | (EFIAPI *EFI_RAISE_TPL)(
|
| 580 | IN EFI_TPL NewTpl
|
| 581 | );
|
| 582 |
|
| 583 | /**
|
| 584 | Restores a task's priority level to its previous value.
|
| 585 |
|
| 586 | @param[in] OldTpl The previous task priority level to restore.
|
| 587 |
|
| 588 | **/
|
| 589 | typedef
|
| 590 | VOID
|
| 591 | (EFIAPI *EFI_RESTORE_TPL)(
|
| 592 | IN EFI_TPL OldTpl
|
| 593 | );
|
| 594 |
|
| 595 | /**
|
| 596 | Returns the value of a variable.
|
| 597 |
|
| 598 | @param[in] VariableName A Null-terminated string that is the name of the vendor's
|
| 599 | variable.
|
| 600 | @param[in] VendorGuid A unique identifier for the vendor.
|
| 601 | @param[out] Attributes If not NULL, a pointer to the memory location to return the
|
| 602 | attributes bitmask for the variable.
|
| 603 | @param[in, out] DataSize On input, the size in bytes of the return Data buffer.
|
| 604 | On output the size of data returned in Data.
|
| 605 | @param[out] Data The buffer to return the contents of the variable.
|
| 606 |
|
| 607 | @retval EFI_SUCCESS The function completed successfully.
|
| 608 | @retval EFI_NOT_FOUND The variable was not found.
|
| 609 | @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result.
|
| 610 | @retval EFI_INVALID_PARAMETER VariableName is NULL.
|
| 611 | @retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
| 612 | @retval EFI_INVALID_PARAMETER DataSize is NULL.
|
| 613 | @retval EFI_INVALID_PARAMETER The DataSize is not too small and Data is NULL.
|
| 614 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 615 | @retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
|
| 616 |
|
| 617 | **/
|
| 618 | typedef
|
| 619 | EFI_STATUS
|
| 620 | (EFIAPI *EFI_GET_VARIABLE)(
|
| 621 | IN CHAR16 *VariableName,
|
| 622 | IN EFI_GUID *VendorGuid,
|
| 623 | OUT UINT32 *Attributes, OPTIONAL
|
| 624 | IN OUT UINTN *DataSize,
|
| 625 | OUT VOID *Data
|
| 626 | );
|
| 627 |
|
| 628 | /**
|
| 629 | Enumerates the current variable names.
|
| 630 |
|
| 631 | @param[in, out] VariableNameSize The size of the VariableName buffer.
|
| 632 | @param[in, out] VariableName On input, supplies the last VariableName that was returned
|
| 633 | by GetNextVariableName(). On output, returns the Nullterminated
|
| 634 | string of the current variable.
|
| 635 | @param[in, out] VendorGuid On input, supplies the last VendorGuid that was returned by
|
| 636 | GetNextVariableName(). On output, returns the
|
| 637 | VendorGuid of the current variable.
|
| 638 |
|
| 639 | @retval EFI_SUCCESS The function completed successfully.
|
| 640 | @retval EFI_NOT_FOUND The next variable was not found.
|
| 641 | @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.
|
| 642 | @retval EFI_INVALID_PARAMETER VariableNameSize is NULL.
|
| 643 | @retval EFI_INVALID_PARAMETER VariableName is NULL.
|
| 644 | @retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
| 645 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 646 |
|
| 647 | **/
|
| 648 | typedef
|
| 649 | EFI_STATUS
|
| 650 | (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
|
| 651 | IN OUT UINTN *VariableNameSize,
|
| 652 | IN OUT CHAR16 *VariableName,
|
| 653 | IN OUT EFI_GUID *VendorGuid
|
| 654 | );
|
| 655 |
|
| 656 | /**
|
| 657 | Sets the value of a variable.
|
| 658 |
|
| 659 | @param[in] VariableName A Null-terminated string that is the name of the vendor's variable.
|
| 660 | Each VariableName is unique for each VendorGuid. VariableName must
|
| 661 | contain 1 or more characters. If VariableName is an empty string,
|
| 662 | then EFI_INVALID_PARAMETER is returned.
|
| 663 | @param[in] VendorGuid A unique identifier for the vendor.
|
| 664 | @param[in] Attributes Attributes bitmask to set for the variable.
|
| 665 | @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE,
|
| 666 | EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or
|
| 667 | EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero
|
| 668 | causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is
|
| 669 | set, then a SetVariable() call with a DataSize of zero will not cause any change to
|
| 670 | the variable value (the timestamp associated with the variable may be updated however
|
| 671 | even if no new data value is provided,see the description of the
|
| 672 | EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not
|
| 673 | be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated).
|
| 674 | @param[in] Data The contents for the variable.
|
| 675 |
|
| 676 | @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as
|
| 677 | defined by the Attributes.
|
| 678 | @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, and GUID was supplied, or the
|
| 679 | DataSize exceeds the maximum allowed.
|
| 680 | @retval EFI_INVALID_PARAMETER VariableName is an empty string.
|
| 681 | @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
|
| 682 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 683 | @retval EFI_WRITE_PROTECTED The variable in question is read-only.
|
| 684 | @retval EFI_WRITE_PROTECTED The variable in question cannot be deleted.
|
| 685 | @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS
|
| 686 | or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo
|
| 687 | does NOT pass the validation check carried out by the firmware.
|
| 688 |
|
| 689 | @retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.
|
| 690 |
|
| 691 | **/
|
| 692 | typedef
|
| 693 | EFI_STATUS
|
| 694 | (EFIAPI *EFI_SET_VARIABLE)(
|
| 695 | IN CHAR16 *VariableName,
|
| 696 | IN EFI_GUID *VendorGuid,
|
| 697 | IN UINT32 Attributes,
|
| 698 | IN UINTN DataSize,
|
| 699 | IN VOID *Data
|
| 700 | );
|
| 701 |
|
| 702 |
|
| 703 | ///
|
| 704 | /// This provides the capabilities of the
|
| 705 | /// real time clock device as exposed through the EFI interfaces.
|
| 706 | ///
|
| 707 | typedef struct {
|
| 708 | ///
|
| 709 | /// Provides the reporting resolution of the real-time clock device in
|
| 710 | /// counts per second. For a normal PC-AT CMOS RTC device, this
|
| 711 | /// value would be 1 Hz, or 1, to indicate that the device only reports
|
| 712 | /// the time to the resolution of 1 second.
|
| 713 | ///
|
| 714 | UINT32 Resolution;
|
| 715 | ///
|
| 716 | /// Provides the timekeeping accuracy of the real-time clock in an
|
| 717 | /// error rate of 1E-6 parts per million. For a clock with an accuracy
|
| 718 | /// of 50 parts per million, the value in this field would be
|
| 719 | /// 50,000,000.
|
| 720 | ///
|
| 721 | UINT32 Accuracy;
|
| 722 | ///
|
| 723 | /// A TRUE indicates that a time set operation clears the device's
|
| 724 | /// time below the Resolution reporting level. A FALSE
|
| 725 | /// indicates that the state below the Resolution level of the
|
| 726 | /// device is not cleared when the time is set. Normal PC-AT CMOS
|
| 727 | /// RTC devices set this value to FALSE.
|
| 728 | ///
|
| 729 | BOOLEAN SetsToZero;
|
| 730 | } EFI_TIME_CAPABILITIES;
|
| 731 |
|
| 732 | /**
|
| 733 | Returns the current time and date information, and the time-keeping capabilities
|
| 734 | of the hardware platform.
|
| 735 |
|
| 736 | @param[out] Time A pointer to storage to receive a snapshot of the current time.
|
| 737 | @param[out] Capabilities An optional pointer to a buffer to receive the real time clock
|
| 738 | device's capabilities.
|
| 739 |
|
| 740 | @retval EFI_SUCCESS The operation completed successfully.
|
| 741 | @retval EFI_INVALID_PARAMETER Time is NULL.
|
| 742 | @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
|
| 743 |
|
| 744 | **/
|
| 745 | typedef
|
| 746 | EFI_STATUS
|
| 747 | (EFIAPI *EFI_GET_TIME)(
|
| 748 | OUT EFI_TIME *Time,
|
| 749 | OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
| 750 | );
|
| 751 |
|
| 752 | /**
|
| 753 | Sets the current local time and date information.
|
| 754 |
|
| 755 | @param[in] Time A pointer to the current time.
|
| 756 |
|
| 757 | @retval EFI_SUCCESS The operation completed successfully.
|
| 758 | @retval EFI_INVALID_PARAMETER A time field is out of range.
|
| 759 | @retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
|
| 760 |
|
| 761 | **/
|
| 762 | typedef
|
| 763 | EFI_STATUS
|
| 764 | (EFIAPI *EFI_SET_TIME)(
|
| 765 | IN EFI_TIME *Time
|
| 766 | );
|
| 767 |
|
| 768 | /**
|
| 769 | Returns the current wakeup alarm clock setting.
|
| 770 |
|
| 771 | @param[out] Enabled Indicates if the alarm is currently enabled or disabled.
|
| 772 | @param[out] Pending Indicates if the alarm signal is pending and requires acknowledgement.
|
| 773 | @param[out] Time The current alarm setting.
|
| 774 |
|
| 775 | @retval EFI_SUCCESS The alarm settings were returned.
|
| 776 | @retval EFI_INVALID_PARAMETER Enabled is NULL.
|
| 777 | @retval EFI_INVALID_PARAMETER Pending is NULL.
|
| 778 | @retval EFI_INVALID_PARAMETER Time is NULL.
|
| 779 | @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
|
| 780 | @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
| 781 |
|
| 782 | **/
|
| 783 | typedef
|
| 784 | EFI_STATUS
|
| 785 | (EFIAPI *EFI_GET_WAKEUP_TIME)(
|
| 786 | OUT BOOLEAN *Enabled,
|
| 787 | OUT BOOLEAN *Pending,
|
| 788 | OUT EFI_TIME *Time
|
| 789 | );
|
| 790 |
|
| 791 | /**
|
| 792 | Sets the system wakeup alarm clock time.
|
| 793 |
|
| 794 | @param[in] Enable Enable or disable the wakeup alarm.
|
| 795 | @param[in] Time If Enable is TRUE, the time to set the wakeup alarm for.
|
| 796 | If Enable is FALSE, then this parameter is optional, and may be NULL.
|
| 797 |
|
| 798 | @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If
|
| 799 | Enable is FALSE, then the wakeup alarm was disabled.
|
| 800 | @retval EFI_INVALID_PARAMETER A time field is out of range.
|
| 801 | @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
|
| 802 | @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
| 803 |
|
| 804 | **/
|
| 805 | typedef
|
| 806 | EFI_STATUS
|
| 807 | (EFIAPI *EFI_SET_WAKEUP_TIME)(
|
| 808 | IN BOOLEAN Enable,
|
| 809 | IN EFI_TIME *Time OPTIONAL
|
| 810 | );
|
| 811 |
|
| 812 | /**
|
| 813 | Loads an EFI image into memory.
|
| 814 |
|
| 815 | @param[in] BootPolicy If TRUE, indicates that the request originates from the boot
|
| 816 | manager, and that the boot manager is attempting to load
|
| 817 | FilePath as a boot selection. Ignored if SourceBuffer is
|
| 818 | not NULL.
|
| 819 | @param[in] ParentImageHandle The caller's image handle.
|
| 820 | @param[in] DevicePath The DeviceHandle specific file path from which the image is
|
| 821 | loaded.
|
| 822 | @param[in] SourceBuffer If not NULL, a pointer to the memory location containing a copy
|
| 823 | of the image to be loaded.
|
| 824 | @param[in] SourceSize The size in bytes of SourceBuffer. Ignored if SourceBuffer is NULL.
|
| 825 | @param[out] ImageHandle The pointer to the returned image handle that is created when the
|
| 826 | image is successfully loaded.
|
| 827 |
|
| 828 | @retval EFI_SUCCESS Image was loaded into memory correctly.
|
| 829 | @retval EFI_NOT_FOUND Both SourceBuffer and DevicePath are NULL.
|
| 830 | @retval EFI_INVALID_PARAMETER One or more parametes are invalid.
|
| 831 | @retval EFI_UNSUPPORTED The image type is not supported.
|
| 832 | @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient resources.
|
| 833 | @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
| 834 | understood.
|
| 835 | @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
| 836 | @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
| 837 | image from being loaded. NULL is returned in *ImageHandle.
|
| 838 | @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
| 839 | valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
| 840 | platform policy specifies that the image should not be started.
|
| 841 | **/
|
| 842 | typedef
|
| 843 | EFI_STATUS
|
| 844 | (EFIAPI *EFI_IMAGE_LOAD)(
|
| 845 | IN BOOLEAN BootPolicy,
|
| 846 | IN EFI_HANDLE ParentImageHandle,
|
| 847 | IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
| 848 | IN VOID *SourceBuffer OPTIONAL,
|
| 849 | IN UINTN SourceSize,
|
| 850 | OUT EFI_HANDLE *ImageHandle
|
| 851 | );
|
| 852 |
|
| 853 | /**
|
| 854 | Transfers control to a loaded image's entry point.
|
| 855 |
|
| 856 | @param[in] ImageHandle Handle of image to be started.
|
| 857 | @param[out] ExitDataSize The pointer to the size, in bytes, of ExitData.
|
| 858 | @param[out] ExitData The pointer to a pointer to a data buffer that includes a Null-terminated
|
| 859 | string, optionally followed by additional binary data.
|
| 860 |
|
| 861 | @retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image handle or the image
|
| 862 | has already been initialized with StartImage.
|
| 863 | @retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started.
|
| 864 | @return Exit code from image
|
| 865 |
|
| 866 | **/
|
| 867 | typedef
|
| 868 | EFI_STATUS
|
| 869 | (EFIAPI *EFI_IMAGE_START)(
|
| 870 | IN EFI_HANDLE ImageHandle,
|
| 871 | OUT UINTN *ExitDataSize,
|
| 872 | OUT CHAR16 **ExitData OPTIONAL
|
| 873 | );
|
| 874 |
|
| 875 | /**
|
| 876 | Terminates a loaded EFI image and returns control to boot services.
|
| 877 |
|
| 878 | @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the
|
| 879 | image on entry.
|
| 880 | @param[in] ExitStatus The image's exit code.
|
| 881 | @param[in] ExitDataSize The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS.
|
| 882 | @param[in] ExitData The pointer to a data buffer that includes a Null-terminated string,
|
| 883 | optionally followed by additional binary data. The string is a
|
| 884 | description that the caller may use to further indicate the reason
|
| 885 | for the image's exit. ExitData is only valid if ExitStatus
|
| 886 | is something other than EFI_SUCCESS. The ExitData buffer
|
| 887 | must be allocated by calling AllocatePool().
|
| 888 |
|
| 889 | @retval EFI_SUCCESS The image specified by ImageHandle was unloaded.
|
| 890 | @retval EFI_INVALID_PARAMETER The image specified by ImageHandle has been loaded and
|
| 891 | started with LoadImage() and StartImage(), but the
|
| 892 | image is not the currently executing image.
|
| 893 |
|
| 894 | **/
|
| 895 | typedef
|
| 896 | EFI_STATUS
|
| 897 | (EFIAPI *EFI_EXIT)(
|
| 898 | IN EFI_HANDLE ImageHandle,
|
| 899 | IN EFI_STATUS ExitStatus,
|
| 900 | IN UINTN ExitDataSize,
|
| 901 | IN CHAR16 *ExitData OPTIONAL
|
| 902 | );
|
| 903 |
|
| 904 | /**
|
| 905 | Unloads an image.
|
| 906 |
|
| 907 | @param[in] ImageHandle Handle that identifies the image to be unloaded.
|
| 908 |
|
| 909 | @retval EFI_SUCCESS The image has been unloaded.
|
| 910 | @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle.
|
| 911 |
|
| 912 | **/
|
| 913 | typedef
|
| 914 | EFI_STATUS
|
| 915 | (EFIAPI *EFI_IMAGE_UNLOAD)(
|
| 916 | IN EFI_HANDLE ImageHandle
|
| 917 | );
|
| 918 |
|
| 919 | /**
|
| 920 | Terminates all boot services.
|
| 921 |
|
| 922 | @param[in] ImageHandle Handle that identifies the exiting image.
|
| 923 | @param[in] MapKey Key to the latest memory map.
|
| 924 |
|
| 925 | @retval EFI_SUCCESS Boot services have been terminated.
|
| 926 | @retval EFI_INVALID_PARAMETER MapKey is incorrect.
|
| 927 |
|
| 928 | **/
|
| 929 | typedef
|
| 930 | EFI_STATUS
|
| 931 | (EFIAPI *EFI_EXIT_BOOT_SERVICES)(
|
| 932 | IN EFI_HANDLE ImageHandle,
|
| 933 | IN UINTN MapKey
|
| 934 | );
|
| 935 |
|
| 936 | /**
|
| 937 | Induces a fine-grained stall.
|
| 938 |
|
| 939 | @param[in] Microseconds The number of microseconds to stall execution.
|
| 940 |
|
| 941 | @retval EFI_SUCCESS Execution was stalled at least the requested number of
|
| 942 | Microseconds.
|
| 943 |
|
| 944 | **/
|
| 945 | typedef
|
| 946 | EFI_STATUS
|
| 947 | (EFIAPI *EFI_STALL)(
|
| 948 | IN UINTN Microseconds
|
| 949 | );
|
| 950 |
|
| 951 | /**
|
| 952 | Sets the system's watchdog timer.
|
| 953 |
|
| 954 | @param[in] Timeout The number of seconds to set the watchdog timer to.
|
| 955 | @param[in] WatchdogCode The numeric code to log on a watchdog timer timeout event.
|
| 956 | @param[in] DataSize The size, in bytes, of WatchdogData.
|
| 957 | @param[in] WatchdogData A data buffer that includes a Null-terminated string, optionally
|
| 958 | followed by additional binary data.
|
| 959 |
|
| 960 | @retval EFI_SUCCESS The timeout has been set.
|
| 961 | @retval EFI_INVALID_PARAMETER The supplied WatchdogCode is invalid.
|
| 962 | @retval EFI_UNSUPPORTED The system does not have a watchdog timer.
|
| 963 | @retval EFI_DEVICE_ERROR The watchdog timer could not be programmed due to a hardware
|
| 964 | error.
|
| 965 |
|
| 966 | **/
|
| 967 | typedef
|
| 968 | EFI_STATUS
|
| 969 | (EFIAPI *EFI_SET_WATCHDOG_TIMER)(
|
| 970 | IN UINTN Timeout,
|
| 971 | IN UINT64 WatchdogCode,
|
| 972 | IN UINTN DataSize,
|
| 973 | IN CHAR16 *WatchdogData OPTIONAL
|
| 974 | );
|
| 975 |
|
| 976 | ///
|
| 977 | /// Enumeration of reset types.
|
| 978 | ///
|
| 979 | typedef enum {
|
| 980 | ///
|
| 981 | /// Used to induce a system-wide reset. This sets all circuitry within the
|
| 982 | /// system to its initial state. This type of reset is asynchronous to system
|
| 983 | /// operation and operates withgout regard to cycle boundaries. EfiColdReset
|
| 984 | /// is tantamount to a system power cycle.
|
| 985 | ///
|
| 986 | EfiResetCold,
|
| 987 | ///
|
| 988 | /// Used to induce a system-wide initialization. The processors are set to their
|
| 989 | /// initial state, and pending cycles are not corrupted. If the system does
|
| 990 | /// not support this reset type, then an EfiResetCold must be performed.
|
| 991 | ///
|
| 992 | EfiResetWarm,
|
| 993 | ///
|
| 994 | /// Used to induce an entry into a power state equivalent to the ACPI G2/S5 or G3
|
| 995 | /// state. If the system does not support this reset type, then when the system
|
| 996 | /// is rebooted, it should exhibit the EfiResetCold attributes.
|
| 997 | ///
|
| 998 | EfiResetShutdown,
|
| 999 | ///
|
| 1000 | /// Used to induce a system-wide reset. The exact type of the reset is defined by
|
| 1001 | /// the EFI_GUID that follows the Null-terminated Unicode string passed into
|
| 1002 | /// ResetData. If the platform does not recognize the EFI_GUID in ResetData the
|
| 1003 | /// platform must pick a supported reset type to perform. The platform may
|
| 1004 | /// optionally log the parameters from any non-normal reset that occurs.
|
| 1005 | ///
|
| 1006 | EfiResetPlatformSpecific
|
| 1007 | } EFI_RESET_TYPE;
|
| 1008 |
|
| 1009 | /**
|
| 1010 | Resets the entire platform.
|
| 1011 |
|
| 1012 | @param[in] ResetType The type of reset to perform.
|
| 1013 | @param[in] ResetStatus The status code for the reset.
|
| 1014 | @param[in] DataSize The size, in bytes, of WatchdogData.
|
| 1015 | @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or
|
| 1016 | EfiResetShutdown the data buffer starts with a Null-terminated
|
| 1017 | string, optionally followed by additional binary data.
|
| 1018 |
|
| 1019 | **/
|
| 1020 | typedef
|
| 1021 | VOID
|
| 1022 | (EFIAPI *EFI_RESET_SYSTEM)(
|
| 1023 | IN EFI_RESET_TYPE ResetType,
|
| 1024 | IN EFI_STATUS ResetStatus,
|
| 1025 | IN UINTN DataSize,
|
| 1026 | IN VOID *ResetData OPTIONAL
|
| 1027 | );
|
| 1028 |
|
| 1029 | /**
|
| 1030 | Returns a monotonically increasing count for the platform.
|
| 1031 |
|
| 1032 | @param[out] Count The pointer to returned value.
|
| 1033 |
|
| 1034 | @retval EFI_SUCCESS The next monotonic count was returned.
|
| 1035 | @retval EFI_INVALID_PARAMETER Count is NULL.
|
| 1036 | @retval EFI_DEVICE_ERROR The device is not functioning properly.
|
| 1037 |
|
| 1038 | **/
|
| 1039 | typedef
|
| 1040 | EFI_STATUS
|
| 1041 | (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(
|
| 1042 | OUT UINT64 *Count
|
| 1043 | );
|
| 1044 |
|
| 1045 | /**
|
| 1046 | Returns the next high 32 bits of the platform's monotonic counter.
|
| 1047 |
|
| 1048 | @param[out] HighCount The pointer to returned value.
|
| 1049 |
|
| 1050 | @retval EFI_SUCCESS The next high monotonic count was returned.
|
| 1051 | @retval EFI_INVALID_PARAMETER HighCount is NULL.
|
| 1052 | @retval EFI_DEVICE_ERROR The device is not functioning properly.
|
| 1053 |
|
| 1054 | **/
|
| 1055 | typedef
|
| 1056 | EFI_STATUS
|
| 1057 | (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(
|
| 1058 | OUT UINT32 *HighCount
|
| 1059 | );
|
| 1060 |
|
| 1061 | /**
|
| 1062 | Computes and returns a 32-bit CRC for a data buffer.
|
| 1063 |
|
| 1064 | @param[in] Data A pointer to the buffer on which the 32-bit CRC is to be computed.
|
| 1065 | @param[in] DataSize The number of bytes in the buffer Data.
|
| 1066 | @param[out] Crc32 The 32-bit CRC that was computed for the data buffer specified by Data
|
| 1067 | and DataSize.
|
| 1068 |
|
| 1069 | @retval EFI_SUCCESS The 32-bit CRC was computed for the data buffer and returned in
|
| 1070 | Crc32.
|
| 1071 | @retval EFI_INVALID_PARAMETER Data is NULL.
|
| 1072 | @retval EFI_INVALID_PARAMETER Crc32 is NULL.
|
| 1073 | @retval EFI_INVALID_PARAMETER DataSize is 0.
|
| 1074 |
|
| 1075 | **/
|
| 1076 | typedef
|
| 1077 | EFI_STATUS
|
| 1078 | (EFIAPI *EFI_CALCULATE_CRC32)(
|
| 1079 | IN VOID *Data,
|
| 1080 | IN UINTN DataSize,
|
| 1081 | OUT UINT32 *Crc32
|
| 1082 | );
|
| 1083 |
|
| 1084 | /**
|
| 1085 | Copies the contents of one buffer to another buffer.
|
| 1086 |
|
| 1087 | @param[in] Destination The pointer to the destination buffer of the memory copy.
|
| 1088 | @param[in] Source The pointer to the source buffer of the memory copy.
|
| 1089 | @param[in] Length Number of bytes to copy from Source to Destination.
|
| 1090 |
|
| 1091 | **/
|
| 1092 | typedef
|
| 1093 | VOID
|
| 1094 | (EFIAPI *EFI_COPY_MEM)(
|
| 1095 | IN VOID *Destination,
|
| 1096 | IN VOID *Source,
|
| 1097 | IN UINTN Length
|
| 1098 | );
|
| 1099 |
|
| 1100 | /**
|
| 1101 | The SetMem() function fills a buffer with a specified value.
|
| 1102 |
|
| 1103 | @param[in] Buffer The pointer to the buffer to fill.
|
| 1104 | @param[in] Size Number of bytes in Buffer to fill.
|
| 1105 | @param[in] Value Value to fill Buffer with.
|
| 1106 |
|
| 1107 | **/
|
| 1108 | typedef
|
| 1109 | VOID
|
| 1110 | (EFIAPI *EFI_SET_MEM)(
|
| 1111 | IN VOID *Buffer,
|
| 1112 | IN UINTN Size,
|
| 1113 | IN UINT8 Value
|
| 1114 | );
|
| 1115 |
|
| 1116 | ///
|
| 1117 | /// Enumeration of EFI Interface Types
|
| 1118 | ///
|
| 1119 | typedef enum {
|
| 1120 | ///
|
| 1121 | /// Indicates that the supplied protocol interface is supplied in native form.
|
| 1122 | ///
|
| 1123 | EFI_NATIVE_INTERFACE
|
| 1124 | } EFI_INTERFACE_TYPE;
|
| 1125 |
|
| 1126 | /**
|
| 1127 | Installs a protocol interface on a device handle. If the handle does not exist, it is created and added
|
| 1128 | to the list of handles in the system. InstallMultipleProtocolInterfaces() performs
|
| 1129 | more error checking than InstallProtocolInterface(), so it is recommended that
|
| 1130 | InstallMultipleProtocolInterfaces() be used in place of
|
| 1131 | InstallProtocolInterface()
|
| 1132 |
|
| 1133 | @param[in, out] Handle A pointer to the EFI_HANDLE on which the interface is to be installed.
|
| 1134 | @param[in] Protocol The numeric ID of the protocol interface.
|
| 1135 | @param[in] InterfaceType Indicates whether Interface is supplied in native form.
|
| 1136 | @param[in] Interface A pointer to the protocol interface.
|
| 1137 |
|
| 1138 | @retval EFI_SUCCESS The protocol interface was installed.
|
| 1139 | @retval EFI_OUT_OF_RESOURCES Space for a new handle could not be allocated.
|
| 1140 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1141 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1142 | @retval EFI_INVALID_PARAMETER InterfaceType is not EFI_NATIVE_INTERFACE.
|
| 1143 | @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
|
| 1144 |
|
| 1145 | **/
|
| 1146 | typedef
|
| 1147 | EFI_STATUS
|
| 1148 | (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)(
|
| 1149 | IN OUT EFI_HANDLE *Handle,
|
| 1150 | IN EFI_GUID *Protocol,
|
| 1151 | IN EFI_INTERFACE_TYPE InterfaceType,
|
| 1152 | IN VOID *Interface
|
| 1153 | );
|
| 1154 |
|
| 1155 | /**
|
| 1156 | Installs one or more protocol interfaces into the boot services environment.
|
| 1157 |
|
| 1158 | @param[in, out] Handle The pointer to a handle to install the new protocol interfaces on,
|
| 1159 | or a pointer to NULL if a new handle is to be allocated.
|
| 1160 | @param ... A variable argument list containing pairs of protocol GUIDs and protocol
|
| 1161 | interfaces.
|
| 1162 |
|
| 1163 | @retval EFI_SUCCESS All the protocol interface was installed.
|
| 1164 | @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
|
| 1165 | @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in
|
| 1166 | the handle database.
|
| 1167 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1168 | @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
|
| 1169 |
|
| 1170 | **/
|
| 1171 | typedef
|
| 1172 | EFI_STATUS
|
| 1173 | (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
| 1174 | IN OUT EFI_HANDLE *Handle,
|
| 1175 | ...
|
| 1176 | );
|
| 1177 |
|
| 1178 | /**
|
| 1179 | Reinstalls a protocol interface on a device handle.
|
| 1180 |
|
| 1181 | @param[in] Handle Handle on which the interface is to be reinstalled.
|
| 1182 | @param[in] Protocol The numeric ID of the interface.
|
| 1183 | @param[in] OldInterface A pointer to the old interface. NULL can be used if a structure is not
|
| 1184 | associated with Protocol.
|
| 1185 | @param[in] NewInterface A pointer to the new interface.
|
| 1186 |
|
| 1187 | @retval EFI_SUCCESS The protocol interface was reinstalled.
|
| 1188 | @retval EFI_NOT_FOUND The OldInterface on the handle was not found.
|
| 1189 | @retval EFI_ACCESS_DENIED The protocol interface could not be reinstalled,
|
| 1190 | because OldInterface is still being used by a
|
| 1191 | driver that will not release it.
|
| 1192 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1193 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1194 |
|
| 1195 | **/
|
| 1196 | typedef
|
| 1197 | EFI_STATUS
|
| 1198 | (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)(
|
| 1199 | IN EFI_HANDLE Handle,
|
| 1200 | IN EFI_GUID *Protocol,
|
| 1201 | IN VOID *OldInterface,
|
| 1202 | IN VOID *NewInterface
|
| 1203 | );
|
| 1204 |
|
| 1205 | /**
|
| 1206 | Removes a protocol interface from a device handle. It is recommended that
|
| 1207 | UninstallMultipleProtocolInterfaces() be used in place of
|
| 1208 | UninstallProtocolInterface().
|
| 1209 |
|
| 1210 | @param[in] Handle The handle on which the interface was installed.
|
| 1211 | @param[in] Protocol The numeric ID of the interface.
|
| 1212 | @param[in] Interface A pointer to the interface.
|
| 1213 |
|
| 1214 | @retval EFI_SUCCESS The interface was removed.
|
| 1215 | @retval EFI_NOT_FOUND The interface was not found.
|
| 1216 | @retval EFI_ACCESS_DENIED The interface was not removed because the interface
|
| 1217 | is still being used by a driver.
|
| 1218 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1219 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1220 |
|
| 1221 | **/
|
| 1222 | typedef
|
| 1223 | EFI_STATUS
|
| 1224 | (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(
|
| 1225 | IN EFI_HANDLE Handle,
|
| 1226 | IN EFI_GUID *Protocol,
|
| 1227 | IN VOID *Interface
|
| 1228 | );
|
| 1229 |
|
| 1230 | /**
|
| 1231 | Removes one or more protocol interfaces into the boot services environment.
|
| 1232 |
|
| 1233 | @param[in] Handle The handle to remove the protocol interfaces from.
|
| 1234 | @param ... A variable argument list containing pairs of protocol GUIDs and
|
| 1235 | protocol interfaces.
|
| 1236 |
|
| 1237 | @retval EFI_SUCCESS All the protocol interfaces were removed.
|
| 1238 | @retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle.
|
| 1239 |
|
| 1240 | **/
|
| 1241 | typedef
|
| 1242 | EFI_STATUS
|
| 1243 | (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
| 1244 | IN EFI_HANDLE Handle,
|
| 1245 | ...
|
| 1246 | );
|
| 1247 |
|
| 1248 | /**
|
| 1249 | Queries a handle to determine if it supports a specified protocol.
|
| 1250 |
|
| 1251 | @param[in] Handle The handle being queried.
|
| 1252 | @param[in] Protocol The published unique identifier of the protocol.
|
| 1253 | @param[out] Interface Supplies the address where a pointer to the corresponding Protocol
|
| 1254 | Interface is returned.
|
| 1255 |
|
| 1256 | @retval EFI_SUCCESS The interface information for the specified protocol was returned.
|
| 1257 | @retval EFI_UNSUPPORTED The device does not support the specified protocol.
|
| 1258 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1259 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1260 | @retval EFI_INVALID_PARAMETER Interface is NULL.
|
| 1261 |
|
| 1262 | **/
|
| 1263 | typedef
|
| 1264 | EFI_STATUS
|
| 1265 | (EFIAPI *EFI_HANDLE_PROTOCOL)(
|
| 1266 | IN EFI_HANDLE Handle,
|
| 1267 | IN EFI_GUID *Protocol,
|
| 1268 | OUT VOID **Interface
|
| 1269 | );
|
| 1270 |
|
| 1271 | #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
|
| 1272 | #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
|
| 1273 | #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
|
| 1274 | #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
|
| 1275 | #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
|
| 1276 | #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
|
| 1277 |
|
| 1278 | /**
|
| 1279 | Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the
|
| 1280 | handle, it opens the protocol on behalf of the calling agent.
|
| 1281 |
|
| 1282 | @param[in] Handle The handle for the protocol interface that is being opened.
|
| 1283 | @param[in] Protocol The published unique identifier of the protocol.
|
| 1284 | @param[out] Interface Supplies the address where a pointer to the corresponding Protocol
|
| 1285 | Interface is returned.
|
| 1286 | @param[in] AgentHandle The handle of the agent that is opening the protocol interface
|
| 1287 | specified by Protocol and Interface.
|
| 1288 | @param[in] ControllerHandle If the agent that is opening a protocol is a driver that follows the
|
| 1289 | UEFI Driver Model, then this parameter is the controller handle
|
| 1290 | that requires the protocol interface. If the agent does not follow
|
| 1291 | the UEFI Driver Model, then this parameter is optional and may
|
| 1292 | be NULL.
|
| 1293 | @param[in] Attributes The open mode of the protocol interface specified by Handle
|
| 1294 | and Protocol.
|
| 1295 |
|
| 1296 | @retval EFI_SUCCESS An item was added to the open list for the protocol interface, and the
|
| 1297 | protocol interface was returned in Interface.
|
| 1298 | @retval EFI_UNSUPPORTED Handle does not support Protocol.
|
| 1299 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 1300 | @retval EFI_ACCESS_DENIED Required attributes can't be supported in current environment.
|
| 1301 | @retval EFI_ALREADY_STARTED Item on the open list already has requierd attributes whose agent
|
| 1302 | handle is the same as AgentHandle.
|
| 1303 |
|
| 1304 | **/
|
| 1305 | typedef
|
| 1306 | EFI_STATUS
|
| 1307 | (EFIAPI *EFI_OPEN_PROTOCOL)(
|
| 1308 | IN EFI_HANDLE Handle,
|
| 1309 | IN EFI_GUID *Protocol,
|
| 1310 | OUT VOID **Interface, OPTIONAL
|
| 1311 | IN EFI_HANDLE AgentHandle,
|
| 1312 | IN EFI_HANDLE ControllerHandle,
|
| 1313 | IN UINT32 Attributes
|
| 1314 | );
|
| 1315 |
|
| 1316 |
|
| 1317 | /**
|
| 1318 | Closes a protocol on a handle that was opened using OpenProtocol().
|
| 1319 |
|
| 1320 | @param[in] Handle The handle for the protocol interface that was previously opened
|
| 1321 | with OpenProtocol(), and is now being closed.
|
| 1322 | @param[in] Protocol The published unique identifier of the protocol.
|
| 1323 | @param[in] AgentHandle The handle of the agent that is closing the protocol interface.
|
| 1324 | @param[in] ControllerHandle If the agent that opened a protocol is a driver that follows the
|
| 1325 | UEFI Driver Model, then this parameter is the controller handle
|
| 1326 | that required the protocol interface.
|
| 1327 |
|
| 1328 | @retval EFI_SUCCESS The protocol instance was closed.
|
| 1329 | @retval EFI_INVALID_PARAMETER 1) Handle is NULL.
|
| 1330 | 2) AgentHandle is NULL.
|
| 1331 | 3) ControllerHandle is not NULL and ControllerHandle is not a valid EFI_HANDLE.
|
| 1332 | 4) Protocol is NULL.
|
| 1333 | @retval EFI_NOT_FOUND 1) Handle does not support the protocol specified by Protocol.
|
| 1334 | 2) The protocol interface specified by Handle and Protocol is not
|
| 1335 | currently open by AgentHandle and ControllerHandle.
|
| 1336 |
|
| 1337 | **/
|
| 1338 | typedef
|
| 1339 | EFI_STATUS
|
| 1340 | (EFIAPI *EFI_CLOSE_PROTOCOL)(
|
| 1341 | IN EFI_HANDLE Handle,
|
| 1342 | IN EFI_GUID *Protocol,
|
| 1343 | IN EFI_HANDLE AgentHandle,
|
| 1344 | IN EFI_HANDLE ControllerHandle
|
| 1345 | );
|
| 1346 |
|
| 1347 | ///
|
| 1348 | /// EFI Oprn Protocol Information Entry
|
| 1349 | ///
|
| 1350 | typedef struct {
|
| 1351 | EFI_HANDLE AgentHandle;
|
| 1352 | EFI_HANDLE ControllerHandle;
|
| 1353 | UINT32 Attributes;
|
| 1354 | UINT32 OpenCount;
|
| 1355 | } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
| 1356 |
|
| 1357 | /**
|
| 1358 | Retrieves the list of agents that currently have a protocol interface opened.
|
| 1359 |
|
| 1360 | @param[in] Handle The handle for the protocol interface that is being queried.
|
| 1361 | @param[in] Protocol The published unique identifier of the protocol.
|
| 1362 | @param[out] EntryBuffer A pointer to a buffer of open protocol information in the form of
|
| 1363 | EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.
|
| 1364 | @param[out] EntryCount A pointer to the number of entries in EntryBuffer.
|
| 1365 |
|
| 1366 | @retval EFI_SUCCESS The open protocol information was returned in EntryBuffer, and the
|
| 1367 | number of entries was returned EntryCount.
|
| 1368 | @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer.
|
| 1369 | @retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol.
|
| 1370 |
|
| 1371 | **/
|
| 1372 | typedef
|
| 1373 | EFI_STATUS
|
| 1374 | (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)(
|
| 1375 | IN EFI_HANDLE Handle,
|
| 1376 | IN EFI_GUID *Protocol,
|
| 1377 | OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
|
| 1378 | OUT UINTN *EntryCount
|
| 1379 | );
|
| 1380 |
|
| 1381 | /**
|
| 1382 | Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated
|
| 1383 | from pool.
|
| 1384 |
|
| 1385 | @param[in] Handle The handle from which to retrieve the list of protocol interface
|
| 1386 | GUIDs.
|
| 1387 | @param[out] ProtocolBuffer A pointer to the list of protocol interface GUID pointers that are
|
| 1388 | installed on Handle.
|
| 1389 | @param[out] ProtocolBufferCount A pointer to the number of GUID pointers present in
|
| 1390 | ProtocolBuffer.
|
| 1391 |
|
| 1392 | @retval EFI_SUCCESS The list of protocol interface GUIDs installed on Handle was returned in
|
| 1393 | ProtocolBuffer. The number of protocol interface GUIDs was
|
| 1394 | returned in ProtocolBufferCount.
|
| 1395 | @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the results.
|
| 1396 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1397 | @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
|
| 1398 | @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL.
|
| 1399 | @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL.
|
| 1400 |
|
| 1401 | **/
|
| 1402 | typedef
|
| 1403 | EFI_STATUS
|
| 1404 | (EFIAPI *EFI_PROTOCOLS_PER_HANDLE)(
|
| 1405 | IN EFI_HANDLE Handle,
|
| 1406 | OUT EFI_GUID ***ProtocolBuffer,
|
| 1407 | OUT UINTN *ProtocolBufferCount
|
| 1408 | );
|
| 1409 |
|
| 1410 | /**
|
| 1411 | Creates an event that is to be signaled whenever an interface is installed for a specified protocol.
|
| 1412 |
|
| 1413 | @param[in] Protocol The numeric ID of the protocol for which the event is to be registered.
|
| 1414 | @param[in] Event Event that is to be signaled whenever a protocol interface is registered
|
| 1415 | for Protocol.
|
| 1416 | @param[out] Registration A pointer to a memory location to receive the registration value.
|
| 1417 |
|
| 1418 | @retval EFI_SUCCESS The notification event has been registered.
|
| 1419 | @retval EFI_OUT_OF_RESOURCES Space for the notification event could not be allocated.
|
| 1420 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1421 | @retval EFI_INVALID_PARAMETER Event is NULL.
|
| 1422 | @retval EFI_INVALID_PARAMETER Registration is NULL.
|
| 1423 |
|
| 1424 | **/
|
| 1425 | typedef
|
| 1426 | EFI_STATUS
|
| 1427 | (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(
|
| 1428 | IN EFI_GUID *Protocol,
|
| 1429 | IN EFI_EVENT Event,
|
| 1430 | OUT VOID **Registration
|
| 1431 | );
|
| 1432 |
|
| 1433 | ///
|
| 1434 | /// Enumeration of EFI Locate Search Types
|
| 1435 | ///
|
| 1436 | typedef enum {
|
| 1437 | ///
|
| 1438 | /// Retrieve all the handles in the handle database.
|
| 1439 | ///
|
| 1440 | AllHandles,
|
| 1441 | ///
|
| 1442 | /// Retrieve the next handle fron a RegisterProtocolNotify() event.
|
| 1443 | ///
|
| 1444 | ByRegisterNotify,
|
| 1445 | ///
|
| 1446 | /// Retrieve the set of handles from the handle database that support a
|
| 1447 | /// specified protocol.
|
| 1448 | ///
|
| 1449 | ByProtocol
|
| 1450 | } EFI_LOCATE_SEARCH_TYPE;
|
| 1451 |
|
| 1452 | /**
|
| 1453 | Returns an array of handles that support a specified protocol.
|
| 1454 |
|
| 1455 | @param[in] SearchType Specifies which handle(s) are to be returned.
|
| 1456 | @param[in] Protocol Specifies the protocol to search by.
|
| 1457 | @param[in] SearchKey Specifies the search key.
|
| 1458 | @param[in, out] BufferSize On input, the size in bytes of Buffer. On output, the size in bytes of
|
| 1459 | the array returned in Buffer (if the buffer was large enough) or the
|
| 1460 | size, in bytes, of the buffer needed to obtain the array (if the buffer was
|
| 1461 | not large enough).
|
| 1462 | @param[out] Buffer The buffer in which the array is returned.
|
| 1463 |
|
| 1464 | @retval EFI_SUCCESS The array of handles was returned.
|
| 1465 | @retval EFI_NOT_FOUND No handles match the search.
|
| 1466 | @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result.
|
| 1467 | @retval EFI_INVALID_PARAMETER SearchType is not a member of EFI_LOCATE_SEARCH_TYPE.
|
| 1468 | @retval EFI_INVALID_PARAMETER SearchType is ByRegisterNotify and SearchKey is NULL.
|
| 1469 | @retval EFI_INVALID_PARAMETER SearchType is ByProtocol and Protocol is NULL.
|
| 1470 | @retval EFI_INVALID_PARAMETER One or more matches are found and BufferSize is NULL.
|
| 1471 | @retval EFI_INVALID_PARAMETER BufferSize is large enough for the result and Buffer is NULL.
|
| 1472 |
|
| 1473 | **/
|
| 1474 | typedef
|
| 1475 | EFI_STATUS
|
| 1476 | (EFIAPI *EFI_LOCATE_HANDLE)(
|
| 1477 | IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
| 1478 | IN EFI_GUID *Protocol, OPTIONAL
|
| 1479 | IN VOID *SearchKey, OPTIONAL
|
| 1480 | IN OUT UINTN *BufferSize,
|
| 1481 | OUT EFI_HANDLE *Buffer
|
| 1482 | );
|
| 1483 |
|
| 1484 | /**
|
| 1485 | Locates the handle to a device on the device path that supports the specified protocol.
|
| 1486 |
|
| 1487 | @param[in] Protocol Specifies the protocol to search for.
|
| 1488 | @param[in, out] DevicePath On input, a pointer to a pointer to the device path. On output, the device
|
| 1489 | path pointer is modified to point to the remaining part of the device
|
| 1490 | path.
|
| 1491 | @param[out] Device A pointer to the returned device handle.
|
| 1492 |
|
| 1493 | @retval EFI_SUCCESS The resulting handle was returned.
|
| 1494 | @retval EFI_NOT_FOUND No handles match the search.
|
| 1495 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1496 | @retval EFI_INVALID_PARAMETER DevicePath is NULL.
|
| 1497 | @retval EFI_INVALID_PARAMETER A handle matched the search and Device is NULL.
|
| 1498 |
|
| 1499 | **/
|
| 1500 | typedef
|
| 1501 | EFI_STATUS
|
| 1502 | (EFIAPI *EFI_LOCATE_DEVICE_PATH)(
|
| 1503 | IN EFI_GUID *Protocol,
|
| 1504 | IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
| 1505 | OUT EFI_HANDLE *Device
|
| 1506 | );
|
| 1507 |
|
| 1508 | /**
|
| 1509 | Adds, updates, or removes a configuration table entry from the EFI System Table.
|
| 1510 |
|
| 1511 | @param[in] Guid A pointer to the GUID for the entry to add, update, or remove.
|
| 1512 | @param[in] Table A pointer to the configuration table for the entry to add, update, or
|
| 1513 | remove. May be NULL.
|
| 1514 |
|
| 1515 | @retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed.
|
| 1516 | @retval EFI_NOT_FOUND An attempt was made to delete a nonexistent entry.
|
| 1517 | @retval EFI_INVALID_PARAMETER Guid is NULL.
|
| 1518 | @retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation.
|
| 1519 |
|
| 1520 | **/
|
| 1521 | typedef
|
| 1522 | EFI_STATUS
|
| 1523 | (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(
|
| 1524 | IN EFI_GUID *Guid,
|
| 1525 | IN VOID *Table
|
| 1526 | );
|
| 1527 |
|
| 1528 | /**
|
| 1529 | Returns an array of handles that support the requested protocol in a buffer allocated from pool.
|
| 1530 |
|
| 1531 | @param[in] SearchType Specifies which handle(s) are to be returned.
|
| 1532 | @param[in] Protocol Provides the protocol to search by.
|
| 1533 | This parameter is only valid for a SearchType of ByProtocol.
|
| 1534 | @param[in] SearchKey Supplies the search key depending on the SearchType.
|
| 1535 | @param[in, out] NoHandles The number of handles returned in Buffer.
|
| 1536 | @param[out] Buffer A pointer to the buffer to return the requested array of handles that
|
| 1537 | support Protocol.
|
| 1538 |
|
| 1539 | @retval EFI_SUCCESS The array of handles was returned in Buffer, and the number of
|
| 1540 | handles in Buffer was returned in NoHandles.
|
| 1541 | @retval EFI_NOT_FOUND No handles match the search.
|
| 1542 | @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the matching results.
|
| 1543 | @retval EFI_INVALID_PARAMETER NoHandles is NULL.
|
| 1544 | @retval EFI_INVALID_PARAMETER Buffer is NULL.
|
| 1545 |
|
| 1546 | **/
|
| 1547 | typedef
|
| 1548 | EFI_STATUS
|
| 1549 | (EFIAPI *EFI_LOCATE_HANDLE_BUFFER)(
|
| 1550 | IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
| 1551 | IN EFI_GUID *Protocol, OPTIONAL
|
| 1552 | IN VOID *SearchKey, OPTIONAL
|
| 1553 | IN OUT UINTN *NoHandles,
|
| 1554 | OUT EFI_HANDLE **Buffer
|
| 1555 | );
|
| 1556 |
|
| 1557 | /**
|
| 1558 | Returns the first protocol instance that matches the given protocol.
|
| 1559 |
|
| 1560 | @param[in] Protocol Provides the protocol to search for.
|
| 1561 | @param[in] Registration Optional registration key returned from
|
| 1562 | RegisterProtocolNotify().
|
| 1563 | @param[out] Interface On return, a pointer to the first interface that matches Protocol and
|
| 1564 | Registration.
|
| 1565 |
|
| 1566 | @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
|
| 1567 | Interface.
|
| 1568 | @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
|
| 1569 | Registration.
|
| 1570 | @retval EFI_INVALID_PARAMETER Interface is NULL.
|
| 1571 |
|
| 1572 | **/
|
| 1573 | typedef
|
| 1574 | EFI_STATUS
|
| 1575 | (EFIAPI *EFI_LOCATE_PROTOCOL)(
|
| 1576 | IN EFI_GUID *Protocol,
|
| 1577 | IN VOID *Registration, OPTIONAL
|
| 1578 | OUT VOID **Interface
|
| 1579 | );
|
| 1580 |
|
| 1581 | ///
|
| 1582 | /// EFI Capsule Block Descriptor
|
| 1583 | ///
|
| 1584 | typedef struct {
|
| 1585 | ///
|
| 1586 | /// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.
|
| 1587 | ///
|
| 1588 | UINT64 Length;
|
| 1589 | union {
|
| 1590 | ///
|
| 1591 | /// Physical address of the data block. This member of the union is
|
| 1592 | /// used if Length is not equal to zero.
|
| 1593 | ///
|
| 1594 | EFI_PHYSICAL_ADDRESS DataBlock;
|
| 1595 | ///
|
| 1596 | /// Physical address of another block of
|
| 1597 | /// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This
|
| 1598 | /// member of the union is used if Length is equal to zero. If
|
| 1599 | /// ContinuationPointer is zero this entry represents the end of the list.
|
| 1600 | ///
|
| 1601 | EFI_PHYSICAL_ADDRESS ContinuationPointer;
|
| 1602 | } Union;
|
| 1603 | } EFI_CAPSULE_BLOCK_DESCRIPTOR;
|
| 1604 |
|
| 1605 | ///
|
| 1606 | /// EFI Capsule Header.
|
| 1607 | ///
|
| 1608 | typedef struct {
|
| 1609 | ///
|
| 1610 | /// A GUID that defines the contents of a capsule.
|
| 1611 | ///
|
| 1612 | EFI_GUID CapsuleGuid;
|
| 1613 | ///
|
| 1614 | /// The size of the capsule header. This may be larger than the size of
|
| 1615 | /// the EFI_CAPSULE_HEADER since CapsuleGuid may imply
|
| 1616 | /// extended header entries
|
| 1617 | ///
|
| 1618 | UINT32 HeaderSize;
|
| 1619 | ///
|
| 1620 | /// Bit-mapped list describing the capsule attributes. The Flag values
|
| 1621 | /// of 0x0000 - 0xFFFF are defined by CapsuleGuid. Flag values
|
| 1622 | /// of 0x10000 - 0xFFFFFFFF are defined by this specification
|
| 1623 | ///
|
| 1624 | UINT32 Flags;
|
| 1625 | ///
|
| 1626 | /// Size in bytes of the capsule.
|
| 1627 | ///
|
| 1628 | UINT32 CapsuleImageSize;
|
| 1629 | } EFI_CAPSULE_HEADER;
|
| 1630 |
|
| 1631 | ///
|
| 1632 | /// The EFI System Table entry must point to an array of capsules
|
| 1633 | /// that contain the same CapsuleGuid value. The array must be
|
| 1634 | /// prefixed by a UINT32 that represents the size of the array of capsules.
|
| 1635 | ///
|
| 1636 | typedef struct {
|
| 1637 | ///
|
| 1638 | /// the size of the array of capsules.
|
| 1639 | ///
|
| 1640 | UINT32 CapsuleArrayNumber;
|
| 1641 | ///
|
| 1642 | /// Point to an array of capsules that contain the same CapsuleGuid value.
|
| 1643 | ///
|
| 1644 | VOID* CapsulePtr[1];
|
| 1645 | } EFI_CAPSULE_TABLE;
|
| 1646 |
|
| 1647 | #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
|
| 1648 | #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
|
| 1649 | #define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
|
| 1650 |
|
| 1651 | /**
|
| 1652 | Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended
|
| 1653 | consumption, the firmware may process the capsule immediately. If the payload should persist
|
| 1654 | across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must
|
| 1655 | be passed into ResetSystem() and will cause the capsule to be processed by the firmware as
|
| 1656 | part of the reset process.
|
| 1657 |
|
| 1658 | @param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
|
| 1659 | being passed into update capsule.
|
| 1660 | @param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
|
| 1661 | CaspuleHeaderArray.
|
| 1662 | @param[in] ScatterGatherList Physical pointer to a set of
|
| 1663 | EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the
|
| 1664 | location in physical memory of a set of capsules.
|
| 1665 |
|
| 1666 | @retval EFI_SUCCESS Valid capsule was passed. If
|
| 1667 | CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the
|
| 1668 | capsule has been successfully processed by the firmware.
|
| 1669 | @retval EFI_INVALID_PARAMETER CapsuleSize is NULL, or an incompatible set of flags were
|
| 1670 | set in the capsule header.
|
| 1671 | @retval EFI_INVALID_PARAMETER CapsuleCount is 0.
|
| 1672 | @retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error.
|
| 1673 | @retval EFI_UNSUPPORTED The capsule type is not supported on this platform.
|
| 1674 | @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
|
| 1675 | is compatible with this platform but is not capable of being submitted or processed
|
| 1676 | in runtime. The caller may resubmit the capsule prior to ExitBootServices().
|
| 1677 | @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
|
| 1678 | the capsule is compatible with this platform but there are insufficient resources to process.
|
| 1679 |
|
| 1680 | **/
|
| 1681 | typedef
|
| 1682 | EFI_STATUS
|
| 1683 | (EFIAPI *EFI_UPDATE_CAPSULE)(
|
| 1684 | IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
| 1685 | IN UINTN CapsuleCount,
|
| 1686 | IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
|
| 1687 | );
|
| 1688 |
|
| 1689 | /**
|
| 1690 | Returns if the capsule can be supported via UpdateCapsule().
|
| 1691 |
|
| 1692 | @param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
|
| 1693 | being passed into update capsule.
|
| 1694 | @param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
|
| 1695 | CaspuleHeaderArray.
|
| 1696 | @param[out] MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can
|
| 1697 | support as an argument to UpdateCapsule() via
|
| 1698 | CapsuleHeaderArray and ScatterGatherList.
|
| 1699 | @param[out] ResetType Returns the type of reset required for the capsule update.
|
| 1700 |
|
| 1701 | @retval EFI_SUCCESS Valid answer returned.
|
| 1702 | @retval EFI_UNSUPPORTED The capsule type is not supported on this platform, and
|
| 1703 | MaximumCapsuleSize and ResetType are undefined.
|
| 1704 | @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.
|
| 1705 | @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
|
| 1706 | is compatible with this platform but is not capable of being submitted or processed
|
| 1707 | in runtime. The caller may resubmit the capsule prior to ExitBootServices().
|
| 1708 | @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
|
| 1709 | the capsule is compatible with this platform but there are insufficient resources to process.
|
| 1710 |
|
| 1711 | **/
|
| 1712 | typedef
|
| 1713 | EFI_STATUS
|
| 1714 | (EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
|
| 1715 | IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
| 1716 | IN UINTN CapsuleCount,
|
| 1717 | OUT UINT64 *MaximumCapsuleSize,
|
| 1718 | OUT EFI_RESET_TYPE *ResetType
|
| 1719 | );
|
| 1720 |
|
| 1721 | /**
|
| 1722 | Returns information about the EFI variables.
|
| 1723 |
|
| 1724 | @param[in] Attributes Attributes bitmask to specify the type of variables on
|
| 1725 | which to return information.
|
| 1726 | @param[out] MaximumVariableStorageSize On output the maximum size of the storage space
|
| 1727 | available for the EFI variables associated with the
|
| 1728 | attributes specified.
|
| 1729 | @param[out] RemainingVariableStorageSize Returns the remaining size of the storage space
|
| 1730 | available for the EFI variables associated with the
|
| 1731 | attributes specified.
|
| 1732 | @param[out] MaximumVariableSize Returns the maximum size of the individual EFI
|
| 1733 | variables associated with the attributes specified.
|
| 1734 |
|
| 1735 | @retval EFI_SUCCESS Valid answer returned.
|
| 1736 | @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied
|
| 1737 | @retval EFI_UNSUPPORTED The attribute is not supported on this platform, and the
|
| 1738 | MaximumVariableStorageSize,
|
| 1739 | RemainingVariableStorageSize, MaximumVariableSize
|
| 1740 | are undefined.
|
| 1741 |
|
| 1742 | **/
|
| 1743 | typedef
|
| 1744 | EFI_STATUS
|
| 1745 | (EFIAPI *EFI_QUERY_VARIABLE_INFO)(
|
| 1746 | IN UINT32 Attributes,
|
| 1747 | OUT UINT64 *MaximumVariableStorageSize,
|
| 1748 | OUT UINT64 *RemainingVariableStorageSize,
|
| 1749 | OUT UINT64 *MaximumVariableSize
|
| 1750 | );
|
| 1751 |
|
| 1752 | //
|
| 1753 | // Firmware should stop at a firmware user interface on next boot
|
| 1754 | //
|
| 1755 | #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
|
| 1756 | #define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
|
| 1757 | #define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004
|
| 1758 | #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008
|
| 1759 | #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010
|
| 1760 |
|
| 1761 | //
|
| 1762 | // EFI Runtime Services Table
|
| 1763 | //
|
| 1764 | #define EFI_SYSTEM_TABLE_SIGNATURE SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')
|
| 1765 | #define EFI_2_40_SYSTEM_TABLE_REVISION ((2 << 16) | (40))
|
| 1766 | #define EFI_2_31_SYSTEM_TABLE_REVISION ((2 << 16) | (31))
|
| 1767 | #define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30))
|
| 1768 | #define EFI_2_20_SYSTEM_TABLE_REVISION ((2 << 16) | (20))
|
| 1769 | #define EFI_2_10_SYSTEM_TABLE_REVISION ((2 << 16) | (10))
|
| 1770 | #define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00))
|
| 1771 | #define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10))
|
| 1772 | #define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02))
|
| 1773 | #define EFI_SYSTEM_TABLE_REVISION EFI_2_40_SYSTEM_TABLE_REVISION
|
| 1774 | #define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION
|
| 1775 |
|
| 1776 | #define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V')
|
| 1777 | #define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
| 1778 |
|
| 1779 | ///
|
| 1780 | /// EFI Runtime Services Table.
|
| 1781 | ///
|
| 1782 | typedef struct {
|
| 1783 | ///
|
| 1784 | /// The table header for the EFI Runtime Services Table.
|
| 1785 | ///
|
| 1786 | EFI_TABLE_HEADER Hdr;
|
| 1787 |
|
| 1788 | //
|
| 1789 | // Time Services
|
| 1790 | //
|
| 1791 | EFI_GET_TIME GetTime;
|
| 1792 | EFI_SET_TIME SetTime;
|
| 1793 | EFI_GET_WAKEUP_TIME GetWakeupTime;
|
| 1794 | EFI_SET_WAKEUP_TIME SetWakeupTime;
|
| 1795 |
|
| 1796 | //
|
| 1797 | // Virtual Memory Services
|
| 1798 | //
|
| 1799 | EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
| 1800 | EFI_CONVERT_POINTER ConvertPointer;
|
| 1801 |
|
| 1802 | //
|
| 1803 | // Variable Services
|
| 1804 | //
|
| 1805 | EFI_GET_VARIABLE GetVariable;
|
| 1806 | EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
| 1807 | EFI_SET_VARIABLE SetVariable;
|
| 1808 |
|
| 1809 | //
|
| 1810 | // Miscellaneous Services
|
| 1811 | //
|
| 1812 | EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
| 1813 | EFI_RESET_SYSTEM ResetSystem;
|
| 1814 |
|
| 1815 | //
|
| 1816 | // UEFI 2.0 Capsule Services
|
| 1817 | //
|
| 1818 | EFI_UPDATE_CAPSULE UpdateCapsule;
|
| 1819 | EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
|
| 1820 |
|
| 1821 | //
|
| 1822 | // Miscellaneous UEFI 2.0 Service
|
| 1823 | //
|
| 1824 | EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
|
| 1825 | } EFI_RUNTIME_SERVICES;
|
| 1826 |
|
| 1827 |
|
| 1828 | #define EFI_BOOT_SERVICES_SIGNATURE SIGNATURE_64 ('B','O','O','T','S','E','R','V')
|
| 1829 | #define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
| 1830 |
|
| 1831 | ///
|
| 1832 | /// EFI Boot Services Table.
|
| 1833 | ///
|
| 1834 | typedef struct {
|
| 1835 | ///
|
| 1836 | /// The table header for the EFI Boot Services Table.
|
| 1837 | ///
|
| 1838 | EFI_TABLE_HEADER Hdr;
|
| 1839 |
|
| 1840 | //
|
| 1841 | // Task Priority Services
|
| 1842 | //
|
| 1843 | EFI_RAISE_TPL RaiseTPL;
|
| 1844 | EFI_RESTORE_TPL RestoreTPL;
|
| 1845 |
|
| 1846 | //
|
| 1847 | // Memory Services
|
| 1848 | //
|
| 1849 | EFI_ALLOCATE_PAGES AllocatePages;
|
| 1850 | EFI_FREE_PAGES FreePages;
|
| 1851 | EFI_GET_MEMORY_MAP GetMemoryMap;
|
| 1852 | EFI_ALLOCATE_POOL AllocatePool;
|
| 1853 | EFI_FREE_POOL FreePool;
|
| 1854 |
|
| 1855 | //
|
| 1856 | // Event & Timer Services
|
| 1857 | //
|
| 1858 | EFI_CREATE_EVENT CreateEvent;
|
| 1859 | EFI_SET_TIMER SetTimer;
|
| 1860 | EFI_WAIT_FOR_EVENT WaitForEvent;
|
| 1861 | EFI_SIGNAL_EVENT SignalEvent;
|
| 1862 | EFI_CLOSE_EVENT CloseEvent;
|
| 1863 | EFI_CHECK_EVENT CheckEvent;
|
| 1864 |
|
| 1865 | //
|
| 1866 | // Protocol Handler Services
|
| 1867 | //
|
| 1868 | EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
| 1869 | EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
| 1870 | EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
| 1871 | EFI_HANDLE_PROTOCOL HandleProtocol;
|
| 1872 | VOID *Reserved;
|
| 1873 | EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
| 1874 | EFI_LOCATE_HANDLE LocateHandle;
|
| 1875 | EFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
| 1876 | EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
| 1877 |
|
| 1878 | //
|
| 1879 | // Image Services
|
| 1880 | //
|
| 1881 | EFI_IMAGE_LOAD LoadImage;
|
| 1882 | EFI_IMAGE_START StartImage;
|
| 1883 | EFI_EXIT Exit;
|
| 1884 | EFI_IMAGE_UNLOAD UnloadImage;
|
| 1885 | EFI_EXIT_BOOT_SERVICES ExitBootServices;
|
| 1886 |
|
| 1887 | //
|
| 1888 | // Miscellaneous Services
|
| 1889 | //
|
| 1890 | EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
| 1891 | EFI_STALL Stall;
|
| 1892 | EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
| 1893 |
|
| 1894 | //
|
| 1895 | // DriverSupport Services
|
| 1896 | //
|
| 1897 | EFI_CONNECT_CONTROLLER ConnectController;
|
| 1898 | EFI_DISCONNECT_CONTROLLER DisconnectController;
|
| 1899 |
|
| 1900 | //
|
| 1901 | // Open and Close Protocol Services
|
| 1902 | //
|
| 1903 | EFI_OPEN_PROTOCOL OpenProtocol;
|
| 1904 | EFI_CLOSE_PROTOCOL CloseProtocol;
|
| 1905 | EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
|
| 1906 |
|
| 1907 | //
|
| 1908 | // Library Services
|
| 1909 | //
|
| 1910 | EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
|
| 1911 | EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
|
| 1912 | EFI_LOCATE_PROTOCOL LocateProtocol;
|
| 1913 | EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
|
| 1914 | EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
|
| 1915 |
|
| 1916 | //
|
| 1917 | // 32-bit CRC Services
|
| 1918 | //
|
| 1919 | EFI_CALCULATE_CRC32 CalculateCrc32;
|
| 1920 |
|
| 1921 | //
|
| 1922 | // Miscellaneous Services
|
| 1923 | //
|
| 1924 | EFI_COPY_MEM CopyMem;
|
| 1925 | EFI_SET_MEM SetMem;
|
| 1926 | EFI_CREATE_EVENT_EX CreateEventEx;
|
| 1927 | } EFI_BOOT_SERVICES;
|
| 1928 |
|
| 1929 | ///
|
| 1930 | /// Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the
|
| 1931 | /// EFI System Table.
|
| 1932 | ///
|
| 1933 | typedef struct {
|
| 1934 | ///
|
| 1935 | /// The 128-bit GUID value that uniquely identifies the system configuration table.
|
| 1936 | ///
|
| 1937 | EFI_GUID VendorGuid;
|
| 1938 | ///
|
| 1939 | /// A pointer to the table associated with VendorGuid.
|
| 1940 | ///
|
| 1941 | VOID *VendorTable;
|
| 1942 | } EFI_CONFIGURATION_TABLE;
|
| 1943 |
|
| 1944 | ///
|
| 1945 | /// EFI System Table
|
| 1946 | ///
|
| 1947 | typedef struct {
|
| 1948 | ///
|
| 1949 | /// The table header for the EFI System Table.
|
| 1950 | ///
|
| 1951 | EFI_TABLE_HEADER Hdr;
|
| 1952 | ///
|
| 1953 | /// A pointer to a null terminated string that identifies the vendor
|
| 1954 | /// that produces the system firmware for the platform.
|
| 1955 | ///
|
| 1956 | CHAR16 *FirmwareVendor;
|
| 1957 | ///
|
| 1958 | /// A firmware vendor specific value that identifies the revision
|
| 1959 | /// of the system firmware for the platform.
|
| 1960 | ///
|
| 1961 | UINT32 FirmwareRevision;
|
| 1962 | ///
|
| 1963 | /// The handle for the active console input device. This handle must support
|
| 1964 | /// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.
|
| 1965 | ///
|
| 1966 | EFI_HANDLE ConsoleInHandle;
|
| 1967 | ///
|
| 1968 | /// A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface that is
|
| 1969 | /// associated with ConsoleInHandle.
|
| 1970 | ///
|
| 1971 | EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
|
| 1972 | ///
|
| 1973 | /// The handle for the active console output device.
|
| 1974 | ///
|
| 1975 | EFI_HANDLE ConsoleOutHandle;
|
| 1976 | ///
|
| 1977 | /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
|
| 1978 | /// that is associated with ConsoleOutHandle.
|
| 1979 | ///
|
| 1980 | EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
|
| 1981 | ///
|
| 1982 | /// The handle for the active standard error console device.
|
| 1983 | /// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
|
| 1984 | ///
|
| 1985 | EFI_HANDLE StandardErrorHandle;
|
| 1986 | ///
|
| 1987 | /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
|
| 1988 | /// that is associated with StandardErrorHandle.
|
| 1989 | ///
|
| 1990 | EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
|
| 1991 | ///
|
| 1992 | /// A pointer to the EFI Runtime Services Table.
|
| 1993 | ///
|
| 1994 | EFI_RUNTIME_SERVICES *RuntimeServices;
|
| 1995 | ///
|
| 1996 | /// A pointer to the EFI Boot Services Table.
|
| 1997 | ///
|
| 1998 | EFI_BOOT_SERVICES *BootServices;
|
| 1999 | ///
|
| 2000 | /// The number of system configuration tables in the buffer ConfigurationTable.
|
| 2001 | ///
|
| 2002 | UINTN NumberOfTableEntries;
|
| 2003 | ///
|
| 2004 | /// A pointer to the system configuration tables.
|
| 2005 | /// The number of entries in the table is NumberOfTableEntries.
|
| 2006 | ///
|
| 2007 | EFI_CONFIGURATION_TABLE *ConfigurationTable;
|
| 2008 | } EFI_SYSTEM_TABLE;
|
| 2009 |
|
| 2010 | /**
|
| 2011 | This is the declaration of an EFI image entry point. This entry point is
|
| 2012 | the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including
|
| 2013 | both device drivers and bus drivers.
|
| 2014 |
|
| 2015 | @param[in] ImageHandle The firmware allocated handle for the UEFI image.
|
| 2016 | @param[in] SystemTable A pointer to the EFI System Table.
|
| 2017 |
|
| 2018 | @retval EFI_SUCCESS The operation completed successfully.
|
| 2019 | @retval Others An unexpected error occurred.
|
| 2020 | **/
|
| 2021 | typedef
|
| 2022 | EFI_STATUS
|
| 2023 | (EFIAPI *EFI_IMAGE_ENTRY_POINT)(
|
| 2024 | IN EFI_HANDLE ImageHandle,
|
| 2025 | IN EFI_SYSTEM_TABLE *SystemTable
|
| 2026 | );
|
| 2027 |
|
| 2028 | //
|
| 2029 | // EFI Load Options Attributes
|
| 2030 | //
|
| 2031 | #define LOAD_OPTION_ACTIVE 0x00000001
|
| 2032 | #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
|
| 2033 | #define LOAD_OPTION_HIDDEN 0x00000008
|
| 2034 | #define LOAD_OPTION_CATEGORY 0x00001F00
|
| 2035 |
|
| 2036 | #define LOAD_OPTION_CATEGORY_BOOT 0x00000000
|
| 2037 | #define LOAD_OPTION_CATEGORY_APP 0x00000100
|
| 2038 |
|
| 2039 | #define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001
|
| 2040 | #define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002
|
| 2041 | #define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300
|
| 2042 |
|
| 2043 | ///
|
| 2044 | /// EFI Boot Key Data
|
| 2045 | ///
|
| 2046 | typedef union {
|
| 2047 | struct {
|
| 2048 | ///
|
| 2049 | /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
|
| 2050 | ///
|
| 2051 | UINT32 Revision : 8;
|
| 2052 | ///
|
| 2053 | /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
|
| 2054 | ///
|
| 2055 | UINT32 ShiftPressed : 1;
|
| 2056 | ///
|
| 2057 | /// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
|
| 2058 | ///
|
| 2059 | UINT32 ControlPressed : 1;
|
| 2060 | ///
|
| 2061 | /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
|
| 2062 | ///
|
| 2063 | UINT32 AltPressed : 1;
|
| 2064 | ///
|
| 2065 | /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
|
| 2066 | ///
|
| 2067 | UINT32 LogoPressed : 1;
|
| 2068 | ///
|
| 2069 | /// The Menu key must be pressed (1) or must not be pressed (0).
|
| 2070 | ///
|
| 2071 | UINT32 MenuPressed : 1;
|
| 2072 | ///
|
| 2073 | /// The SysReq key must be pressed (1) or must not be pressed (0).
|
| 2074 | ///
|
| 2075 | UINT32 SysReqPressed : 1;
|
| 2076 | UINT32 Reserved : 16;
|
| 2077 | ///
|
| 2078 | /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
|
| 2079 | /// zero, then only the shift state is considered. If more than one, then the boot option will
|
| 2080 | /// only be launched if all of the specified keys are pressed with the same shift state.
|
| 2081 | ///
|
| 2082 | UINT32 InputKeyCount : 2;
|
| 2083 | } Options;
|
| 2084 | UINT32 PackedValue;
|
| 2085 | } EFI_BOOT_KEY_DATA;
|
| 2086 |
|
| 2087 | ///
|
| 2088 | /// EFI Key Option.
|
| 2089 | ///
|
| 2090 | #pragma pack(1)
|
| 2091 | typedef struct {
|
| 2092 | ///
|
| 2093 | /// Specifies options about how the key will be processed.
|
| 2094 | ///
|
| 2095 | EFI_BOOT_KEY_DATA KeyData;
|
| 2096 | ///
|
| 2097 | /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
|
| 2098 | /// which BootOption refers. If the CRC-32s do not match this value, then this key
|
| 2099 | /// option is ignored.
|
| 2100 | ///
|
| 2101 | UINT32 BootOptionCrc;
|
| 2102 | ///
|
| 2103 | /// The Boot#### option which will be invoked if this key is pressed and the boot option
|
| 2104 | /// is active (LOAD_OPTION_ACTIVE is set).
|
| 2105 | ///
|
| 2106 | UINT16 BootOption;
|
| 2107 | ///
|
| 2108 | /// The key codes to compare against those returned by the
|
| 2109 | /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
|
| 2110 | /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
|
| 2111 | ///
|
| 2112 | //EFI_INPUT_KEY Keys[];
|
| 2113 | } EFI_KEY_OPTION;
|
| 2114 | #pragma pack()
|
| 2115 |
|
| 2116 | //
|
| 2117 | // EFI File location to boot from on removable media devices
|
| 2118 | //
|
| 2119 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"
|
| 2120 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"
|
| 2121 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"
|
| 2122 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"
|
| 2123 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
|
| 2124 |
|
| 2125 | #if defined (MDE_CPU_IA32)
|
| 2126 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
|
| 2127 | #elif defined (MDE_CPU_IPF)
|
| 2128 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA64
|
| 2129 | #elif defined (MDE_CPU_X64)
|
| 2130 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_X64
|
| 2131 | #elif defined (MDE_CPU_EBC)
|
| 2132 | #elif defined (MDE_CPU_ARM)
|
| 2133 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_ARM
|
| 2134 | #elif defined (MDE_CPU_AARCH64)
|
| 2135 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64
|
| 2136 | #else
|
| 2137 | #error Unknown Processor Type
|
| 2138 | #endif
|
| 2139 |
|
| 2140 | #include <Uefi/UefiPxe.h>
|
| 2141 | #include <Uefi/UefiGpt.h>
|
| 2142 | #include <Uefi/UefiInternalFormRepresentation.h>
|
| 2143 |
|
| 2144 | #endif
|