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