7 Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
8 This software and associated documentation (if any) is furnished
9 under a license and may only be used or copied in accordance
10 with the terms of the license. Except as permitted by such
11 license, no part of this software or documentation may be
12 reproduced, stored in a retrieval system, or transmitted in any
13 form or by any means without the express written consent of
22 Global EFI runtime & boot service interfaces
32 // EFI Specification Revision
35 #define EFI_SPECIFICATION_MAJOR_REVISION 1
36 #define EFI_SPECIFICATION_MINOR_REVISION 10
39 // Declare forward referenced data structures
42 INTERFACE_DECL(_EFI_SYSTEM_TABLE);
50 (EFIAPI *EFI_ALLOCATE_PAGES) (
51 IN EFI_ALLOCATE_TYPE Type,
52 IN EFI_MEMORY_TYPE MemoryType,
54 OUT EFI_PHYSICAL_ADDRESS *Memory
59 (EFIAPI *EFI_FREE_PAGES) (
60 IN EFI_PHYSICAL_ADDRESS Memory,
66 (EFIAPI *EFI_GET_MEMORY_MAP) (
67 IN OUT UINTN *MemoryMapSize,
68 IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
70 OUT UINTN *DescriptorSize,
71 OUT UINT32 *DescriptorVersion
74 #define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
79 (EFIAPI *EFI_ALLOCATE_POOL) (
80 IN EFI_MEMORY_TYPE PoolType,
87 (EFIAPI *EFI_FREE_POOL) (
93 (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
94 IN UINTN MemoryMapSize,
95 IN UINTN DescriptorSize,
96 IN UINT32 DescriptorVersion,
97 IN EFI_MEMORY_DESCRIPTOR *VirtualMap
101 #define EFI_OPTIONAL_PTR 0x00000001
102 #define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc
103 #define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data
108 (EFIAPI *EFI_CONVERT_POINTER) (
109 IN UINTN DebugDisposition,
110 IN OUT VOID **Address
120 #define EVT_TIMER 0x80000000
121 #define EVT_RUNTIME 0x40000000
122 #define EVT_RUNTIME_CONTEXT 0x20000000
124 #define EVT_NOTIFY_WAIT 0x00000100
125 #define EVT_NOTIFY_SIGNAL 0x00000200
127 #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
128 #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
130 #define EVT_EFI_SIGNAL_MASK 0x000000FF
131 #define EVT_EFI_SIGNAL_MAX 2
135 (EFIAPI *EFI_EVENT_NOTIFY) (
142 (EFIAPI *EFI_CREATE_EVENT) (
144 IN EFI_TPL NotifyTpl,
145 IN EFI_EVENT_NOTIFY NotifyFunction,
146 IN VOID *NotifyContext,
159 (EFIAPI *EFI_SET_TIMER) (
161 IN EFI_TIMER_DELAY Type,
162 IN UINT64 TriggerTime
167 (EFIAPI *EFI_SIGNAL_EVENT) (
173 (EFIAPI *EFI_WAIT_FOR_EVENT) (
174 IN UINTN NumberOfEvents,
181 (EFIAPI *EFI_CLOSE_EVENT) (
187 (EFIAPI *EFI_CHECK_EVENT) (
192 // Task priority level
195 #define TPL_APPLICATION 4
196 #define TPL_CALLBACK 8
197 #define TPL_NOTIFY 16
198 #define TPL_HIGH_LEVEL 31
202 (EFIAPI *EFI_RAISE_TPL) (
208 (EFIAPI *EFI_RESTORE_TPL) (
214 // EFI platform varibles
217 #define EFI_GLOBAL_VARIABLE \
218 { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
220 // Variable attributes
221 #define EFI_VARIABLE_NON_VOLATILE 0x00000001
222 #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
223 #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
224 #define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
225 #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
226 #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
227 #define EFI_VARIABLE_APPEND_WRITE 0x00000040
229 // Variable size limitation
230 #define EFI_MAXIMUM_VARIABLE_SIZE 1024
234 (EFIAPI *EFI_GET_VARIABLE) (
235 IN CHAR16 *VariableName,
236 IN EFI_GUID *VendorGuid,
237 OUT UINT32 *Attributes OPTIONAL,
238 IN OUT UINTN *DataSize,
244 (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
245 IN OUT UINTN *VariableNameSize,
246 IN OUT CHAR16 *VariableName,
247 IN OUT EFI_GUID *VendorGuid
253 (EFIAPI *EFI_SET_VARIABLE) (
254 IN const CHAR16 *VariableName,
255 IN EFI_GUID *VendorGuid,
256 IN UINT32 Attributes,
267 UINT32 Resolution; // 1e-6 parts per million
268 UINT32 Accuracy; // hertz
269 BOOLEAN SetsToZero; // Set clears sub-second time
270 } EFI_TIME_CAPABILITIES;
275 (EFIAPI *EFI_GET_TIME) (
277 OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
282 (EFIAPI *EFI_SET_TIME) (
288 (EFIAPI *EFI_GET_WAKEUP_TIME) (
289 OUT BOOLEAN *Enabled,
290 OUT BOOLEAN *Pending,
296 (EFIAPI *EFI_SET_WAKEUP_TIME) (
298 IN EFI_TIME *Time OPTIONAL
307 // PE32+ Subsystem type for EFI images
309 #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
310 #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
311 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
312 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
315 // PE32+ Machine type for EFI images
317 #if !defined(EFI_IMAGE_MACHINE_IA32)
318 #define EFI_IMAGE_MACHINE_IA32 0x014c
321 #if !defined(EFI_IMAGE_MACHINE_EBC)
322 #define EFI_IMAGE_MACHINE_EBC 0x0EBC
325 // Image Entry prototype
329 (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
330 IN EFI_HANDLE ImageHandle,
331 IN struct _EFI_SYSTEM_TABLE *SystemTable
336 (EFIAPI *EFI_IMAGE_LOAD) (
337 IN BOOLEAN BootPolicy,
338 IN EFI_HANDLE ParentImageHandle,
339 IN EFI_DEVICE_PATH *FilePath,
340 IN VOID *SourceBuffer OPTIONAL,
342 OUT EFI_HANDLE *ImageHandle
347 (EFIAPI *EFI_IMAGE_START) (
348 IN EFI_HANDLE ImageHandle,
349 OUT UINTN *ExitDataSize,
350 OUT CHAR16 **ExitData OPTIONAL
356 IN EFI_HANDLE ImageHandle,
357 IN EFI_STATUS ExitStatus,
358 IN UINTN ExitDataSize,
359 IN CHAR16 *ExitData OPTIONAL
364 (EFIAPI *EFI_IMAGE_UNLOAD) (
365 IN EFI_HANDLE ImageHandle
370 #define LOADED_IMAGE_PROTOCOL \
371 { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
373 #define EFI_LOADED_IMAGE_INFORMATION_REVISION 0x1000
376 EFI_HANDLE ParentHandle;
377 struct _EFI_SYSTEM_TABLE *SystemTable;
379 // Source location of image
380 EFI_HANDLE DeviceHandle;
381 EFI_DEVICE_PATH *FilePath;
384 // Images load options
385 UINT32 LoadOptionsSize;
388 // Location of where image was loaded
391 EFI_MEMORY_TYPE ImageCodeType;
392 EFI_MEMORY_TYPE ImageDataType;
394 // If the driver image supports a dynamic unload request
395 EFI_IMAGE_UNLOAD Unload;
402 (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
403 IN EFI_HANDLE ImageHandle,
414 (EFIAPI *EFI_STALL) (
415 IN UINTN Microseconds
420 (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
422 IN UINT64 WatchdogCode,
424 IN CHAR16 *WatchdogData OPTIONAL
436 (EFIAPI *EFI_RESET_SYSTEM) (
437 IN EFI_RESET_TYPE ResetType,
438 IN EFI_STATUS ResetStatus,
440 IN CHAR16 *ResetData OPTIONAL
445 (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
451 (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
452 OUT UINT32 *HighCount
456 // Protocol handler functions
461 } EFI_INTERFACE_TYPE;
465 (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
466 IN OUT EFI_HANDLE *Handle,
467 IN EFI_GUID *Protocol,
468 IN EFI_INTERFACE_TYPE InterfaceType,
474 (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
475 IN EFI_HANDLE Handle,
476 IN EFI_GUID *Protocol,
477 IN VOID *OldInterface,
478 IN VOID *NewInterface
483 (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
484 IN EFI_HANDLE Handle,
485 IN EFI_GUID *Protocol,
491 (EFIAPI *EFI_HANDLE_PROTOCOL) (
492 IN EFI_HANDLE Handle,
493 IN EFI_GUID *Protocol,
499 (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
500 IN EFI_GUID *Protocol,
502 OUT VOID **Registration
509 } EFI_LOCATE_SEARCH_TYPE;
513 (EFIAPI *EFI_LOCATE_HANDLE) (
514 IN EFI_LOCATE_SEARCH_TYPE SearchType,
515 IN EFI_GUID *Protocol OPTIONAL,
516 IN VOID *SearchKey OPTIONAL,
517 IN OUT UINTN *BufferSize,
518 OUT EFI_HANDLE *Buffer
523 (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
524 IN EFI_GUID *Protocol,
525 IN OUT EFI_DEVICE_PATH **DevicePath,
526 OUT EFI_HANDLE *Device
531 (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
538 (EFIAPI *EFI_RESERVED_SERVICE) (
544 (EFIAPI *EFI_CONNECT_CONTROLLER) (
545 IN EFI_HANDLE ControllerHandle,
546 IN EFI_HANDLE *DriverImageHandle OPTIONAL,
547 IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL,
553 (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
554 IN EFI_HANDLE ControllerHandle,
555 IN EFI_HANDLE DriverImageHandle, OPTIONAL
556 IN EFI_HANDLE ChildHandle OPTIONAL
559 #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
560 #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
561 #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
562 #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
563 #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
564 #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
568 (EFIAPI *EFI_OPEN_PROTOCOL) (
569 IN EFI_HANDLE Handle,
570 IN EFI_GUID *Protocol,
571 OUT VOID **Interface,
572 IN EFI_HANDLE ImageHandle,
573 IN EFI_HANDLE ControllerHandle, OPTIONAL
579 (EFIAPI *EFI_CLOSE_PROTOCOL) (
580 IN EFI_HANDLE Handle,
581 IN EFI_GUID *Protocol,
582 IN EFI_HANDLE ImageHandle,
583 IN EFI_HANDLE DeviceHandle
587 EFI_HANDLE AgentHandle;
588 EFI_HANDLE ControllerHandle;
591 } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
595 (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
596 IN EFI_HANDLE UserHandle,
597 IN EFI_GUID *Protocol,
598 IN EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
599 OUT UINTN *EntryCount
604 (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
605 IN EFI_HANDLE UserHandle,
606 OUT EFI_GUID ***ProtocolBuffer,
607 OUT UINTN *ProtocolBufferCount
612 (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
613 IN EFI_LOCATE_SEARCH_TYPE SearchType,
614 IN EFI_GUID *Protocol OPTIONAL,
615 IN VOID *SearchKey OPTIONAL,
616 IN OUT UINTN *NumberHandles,
617 OUT EFI_HANDLE **Buffer
622 (EFIAPI *EFI_LOCATE_PROTOCOL) (
624 VOID *Registration, OPTIONAL
630 (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
631 IN OUT EFI_HANDLE *Handle,
637 (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
638 IN EFI_HANDLE Handle,
644 (EFIAPI *EFI_CALCULATE_CRC32) (
652 (EFIAPI *EFI_COPY_MEM) (
653 IN VOID *Destination,
660 (EFIAPI *EFI_SET_MEM) (
667 // Standard EFI table header
670 typedef struct _EFI_TABLE_HEARDER {
680 // EFI Runtime Serivces Table
683 #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
684 #define EFI_RUNTIME_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
687 EFI_TABLE_HEADER Hdr;
693 EFI_GET_TIME GetTime;
694 EFI_SET_TIME SetTime;
695 EFI_GET_WAKEUP_TIME GetWakeupTime;
696 EFI_SET_WAKEUP_TIME SetWakeupTime;
699 // Virtual memory services
702 EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
703 EFI_CONVERT_POINTER ConvertPointer;
709 EFI_GET_VARIABLE GetVariable;
710 EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
711 EFI_SET_VARIABLE SetVariable;
717 EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
718 EFI_RESET_SYSTEM ResetSystem;
720 } EFI_RUNTIME_SERVICES;
724 // EFI Boot Services Table
727 #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
728 #define EFI_BOOT_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
732 EFI_TABLE_HEADER Hdr;
735 // Task priority functions
738 EFI_RAISE_TPL RaiseTPL;
739 EFI_RESTORE_TPL RestoreTPL;
745 EFI_ALLOCATE_PAGES AllocatePages;
746 EFI_FREE_PAGES FreePages;
747 EFI_GET_MEMORY_MAP GetMemoryMap;
748 EFI_ALLOCATE_POOL AllocatePool;
749 EFI_FREE_POOL FreePool;
752 // Event & timer functions
755 EFI_CREATE_EVENT CreateEvent;
756 EFI_SET_TIMER SetTimer;
757 EFI_WAIT_FOR_EVENT WaitForEvent;
758 EFI_SIGNAL_EVENT SignalEvent;
759 EFI_CLOSE_EVENT CloseEvent;
760 EFI_CHECK_EVENT CheckEvent;
763 // Protocol handler functions
766 EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
767 EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
768 EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
769 EFI_HANDLE_PROTOCOL HandleProtocol;
771 EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
772 EFI_LOCATE_HANDLE LocateHandle;
773 EFI_LOCATE_DEVICE_PATH LocateDevicePath;
774 EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
780 EFI_IMAGE_LOAD LoadImage;
781 EFI_IMAGE_START StartImage;
783 EFI_IMAGE_UNLOAD UnloadImage;
784 EFI_EXIT_BOOT_SERVICES ExitBootServices;
790 EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
792 EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
795 // DriverSupport Services
797 EFI_CONNECT_CONTROLLER ConnectController;
798 EFI_DISCONNECT_CONTROLLER DisconnectController;
801 // Open and Close Protocol Services
803 EFI_OPEN_PROTOCOL OpenProtocol;
804 EFI_CLOSE_PROTOCOL CloseProtocol;
805 EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
808 // Library Services to reduce size of drivers
810 EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
811 EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
812 EFI_LOCATE_PROTOCOL LocateProtocol;
814 EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
815 EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
820 EFI_CALCULATE_CRC32 CalculateCrc32;
823 // Memory Utility Services
825 EFI_COPY_MEM CopyMem;
832 // EFI Configuration Table and GUID definitions
835 #define MPS_TABLE_GUID \
836 { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
838 #define ACPI_TABLE_GUID \
839 { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
841 #define ACPI_20_TABLE_GUID \
842 { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
844 #define SMBIOS_TABLE_GUID \
845 { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
847 #define SMBIOS3_TABLE_GUID \
848 { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
850 #define SAL_SYSTEM_TABLE_GUID \
851 { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
853 #define FDT_TABLE_GUID \
854 { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
856 #define DXE_SERVICES_TABLE_GUID \
857 { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
859 #define HOB_LIST_TABLE_GUID \
860 { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
862 #define LZMA_DECOMPRESSION_GUID \
863 { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x3, 0xcf} }
865 #define ARM_MP_CORE_INFO_TABLE_GUID \
866 { 0xa4ee0728, 0xe5d7, 0x4ac5, {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
868 #define ESRT_TABLE_GUID \
869 { 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80} }
871 #define MEMORY_TYPE_INFORMATION_TABLE_GUID \
872 { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
874 #define DEBUG_IMAGE_INFO_TABLE_GUID \
875 { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
877 typedef struct _EFI_CONFIGURATION_TABLE {
880 } EFI_CONFIGURATION_TABLE;
890 #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
891 #define EFI_SYSTEM_TABLE_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
892 #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
893 #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
895 typedef struct _EFI_SYSTEM_TABLE {
896 EFI_TABLE_HEADER Hdr;
898 CHAR16 *FirmwareVendor;
899 UINT32 FirmwareRevision;
901 EFI_HANDLE ConsoleInHandle;
902 SIMPLE_INPUT_INTERFACE *ConIn;
904 EFI_HANDLE ConsoleOutHandle;
905 SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
907 EFI_HANDLE StandardErrorHandle;
908 SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
910 EFI_RUNTIME_SERVICES *RuntimeServices;
911 EFI_BOOT_SERVICES *BootServices;
913 UINTN NumberOfTableEntries;
914 EFI_CONFIGURATION_TABLE *ConfigurationTable;
921 #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
922 { 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
924 #define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
925 { 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
927 #define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
928 { 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
930 #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
931 { 0x18A031AB, 0xB443, 0x4D1A, \
932 { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
935 #define EFI_TAPE_IO_PROTOCOL_GUID \
936 { 0x1e93e633, 0xd65a, 0x459e, \
937 { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
940 #define EFI_SCSI_IO_PROTOCOL_GUID \
941 { 0x932f47e6, 0x2362, 0x4002, \
942 { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
945 #define EFI_USB2_HC_PROTOCOL_GUID \
946 { 0x3e745226, 0x9818, 0x45b6, \
947 { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
950 #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
951 { 0x2755590C, 0x6F3C, 0x42FA, \
952 { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
955 #define EFI_DEBUGPORT_PROTOCOL_GUID \
956 { 0xEBA4E8D2, 0x3858, 0x41EC, \
957 { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
960 #define EFI_DECOMPRESS_PROTOCOL_GUID \
961 { 0xd8117cfe, 0x94a6, 0x11d4, \
962 { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
965 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
966 { 0xffe06bdd, 0x6107, 0x46a6, \
967 { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
970 #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
971 { 0x587e72d7, 0xcc50, 0x4f79, \
972 { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
975 #define EFI_HII_DATABASE_PROTOCOL_GUID \
976 { 0xef9fc172, 0xa1b2, 0x4693, \
977 { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
980 #define EFI_HII_STRING_PROTOCOL_GUID \
981 { 0xfd96974, 0x23aa, 0x4cdc, \
982 { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
985 #define EFI_HII_IMAGE_PROTOCOL_GUID \
986 { 0x31a6406a, 0x6bdf, 0x4e46, \
987 { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
990 #define EFI_HII_FONT_PROTOCOL_GUID \
991 { 0xe9ca4775, 0x8657, 0x47fc, \
992 { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
994 #define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
995 { 0x330d4706, 0xf2a0, 0x4e4f, \
996 { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
999 #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1000 { 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1002 #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1003 { 0x6a7a5cff, 0xe8d9, 0x4f70, \
1004 { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
1007 #define EFI_USB_IO_PROTOCOL_GUID \
1008 { 0x2B2F68D6, 0x0CD2, 0x44cf, \
1009 { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
1011 #define EFI_HCDP_TABLE_GUID \
1012 { 0xf951938d, 0x620b, 0x42ef, \
1013 { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
1016 #define EFI_DEVICE_TREE_GUID \
1017 { 0xb1b621d5, 0xf19c, 0x41a5, \
1018 { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
1021 #define EFI_VENDOR_APPLE_GUID \
1022 { 0x2B0585EB, 0xD8B8, 0x49A9, \
1023 { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
1026 #define EFI_CONSOLE_IN_DEVICE_GUID \
1027 { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1029 #define EFI_CONSOLE_OUT_DEVICE_GUID \
1030 { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1032 #define EFI_STANDARD_ERROR_DEVICE_GUID \
1033 { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1035 #define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
1036 { 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
1038 #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
1039 { 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
1041 #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
1042 { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
1044 #define EFI_ARP_PROTOCOL_GUID \
1045 { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
1047 #define EFI_IP4_CONFIG_PROTOCOL_GUID \
1048 { 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
1050 #define EFI_IP6_CONFIG_PROTOCOL_GUID \
1051 { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
1053 #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
1054 { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
1056 #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
1057 { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
1059 #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
1060 { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
1062 #define EFI_MTFTP4_PROTOCOL_GUID \
1063 { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
1065 #define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
1066 { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
1068 #define EFI_MTFTP6_PROTOCOL_GUID \
1069 { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
1071 #define EFI_DHCP4_PROTOCOL_GUID \
1072 { 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
1074 #define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
1075 { 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
1077 #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
1078 { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
1080 #define EFI_DHCP6_PROTOCOL_GUID \
1081 { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
1083 #define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
1084 { 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
1086 #define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
1087 { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
1089 #define EFI_DISK_INFO_PROTOCOL_GUID \
1090 { 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
1092 #define EFI_ISA_IO_PROTOCOL_GUID \
1093 { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1095 #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
1096 { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
1098 #define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
1099 { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
1101 #define EFI_ISA_ACPI_PROTOCOL_GUID \
1102 { 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
1104 #define EFI_PCI_ENUMERATION_COMPLETE_GUID \
1105 { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
1107 #define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
1108 { 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
1110 #define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
1111 { 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
1113 #define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
1114 { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
1116 #define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
1117 {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
1119 #define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
1120 {0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1122 #define EFI_MP_SERVICES_PROTOCOL_GUID \
1123 { 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
1125 #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
1126 { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1128 #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
1129 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1131 #define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
1132 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1134 #define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
1135 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1137 #define EFI_BDS_ARCH_PROTOCOL_GUID \
1138 { 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1140 #define EFI_METRONOME_ARCH_PROTOCOL_GUID \
1141 { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1143 #define EFI_TIMER_ARCH_PROTOCOL_GUID \
1144 { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1146 #define EFI_DPC_PROTOCOL_GUID \
1147 { 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
1149 #define EFI_PRINT2_PROTOCOL_GUID \
1150 { 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
1152 #define EFI_RESET_ARCH_PROTOCOL_GUID \
1153 { 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1155 #define EFI_CPU_ARCH_PROTOCOL_GUID \
1156 { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1158 #define EFI_CPU_IO2_PROTOCOL_GUID \
1159 { 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
1161 #define EFI_LEGACY_8259_PROTOCOL_GUID \
1162 { 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
1164 #define EFI_SECURITY_ARCH_PROTOCOL_GUID \
1165 { 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
1167 #define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
1168 { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
1170 #define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
1171 { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
1173 #define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID \
1174 { 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
1176 #define EFI_DATA_HUB_PROTOCOL_GUID \
1177 { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
1179 #define PCD_PROTOCOL_GUID \
1180 { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
1182 #define EFI_PCD_PROTOCOL_GUID \
1183 { 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
1185 #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
1186 { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
1188 #define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
1189 { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
1191 #define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
1192 { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
1194 #define LZMA_COMPRESS_GUID \
1195 { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }