6 Copyright (c) 1998 Intel Corporation
23 // FPSWA library protocol
25 #define EFI_FPSWA_PROTOCOL_GUID \
26 { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
27 #define FPSWA_PROTOCOL EFI_FPSWA_PROTOCOL_GUID
30 // Device Path protocol
33 #define EFI_DEVICE_PATH_PROTOCOL_GUID \
34 { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
35 #define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
42 #define EFI_BLOCK_IO_PROTOCOL_GUID \
43 { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
44 #define BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL_GUID
46 #define EFI_BLOCK_IO_PROTOCOL_REVISION 0x00010000
47 #define EFI_BLOCK_IO_PROTOCOL_REVISION2 0x00020001
48 #define EFI_BLOCK_IO_PROTOCOL_REVISION3 ((2<<16) | 31)
49 #define EFI_BLOCK_IO_INTERFACE_REVISION EFI_BLOCK_IO_PROTOCOL_REVISION
50 #define EFI_BLOCK_IO_INTERFACE_REVISION2 EFI_BLOCK_IO_PROTOCOL_REVISION2
51 #define EFI_BLOCK_IO_INTERFACE_REVISION3 EFI_BLOCK_IO_PROTOCOL_REVISION3
53 INTERFACE_DECL(_EFI_BLOCK_IO_PROTOCOL
);
57 (EFIAPI
*EFI_BLOCK_RESET
) (
58 IN
struct _EFI_BLOCK_IO_PROTOCOL
*This
,
59 IN BOOLEAN ExtendedVerification
64 (EFIAPI
*EFI_BLOCK_READ
) (
65 IN
struct _EFI_BLOCK_IO_PROTOCOL
*This
,
75 (EFIAPI
*EFI_BLOCK_WRITE
) (
76 IN
struct _EFI_BLOCK_IO_PROTOCOL
*This
,
86 (EFIAPI
*EFI_BLOCK_FLUSH
) (
87 IN
struct _EFI_BLOCK_IO_PROTOCOL
*This
94 BOOLEAN RemovableMedia
;
97 BOOLEAN LogicalPartition
;
107 EFI_LBA LowestAlignedLba
;
108 UINT32 LogicalBlocksPerPhysicalBlock
;
110 UINT32 OptimalTransferLengthGranularity
;
111 } EFI_BLOCK_IO_MEDIA
;
113 typedef struct _EFI_BLOCK_IO_PROTOCOL
{
116 EFI_BLOCK_IO_MEDIA
*Media
;
118 EFI_BLOCK_RESET Reset
;
119 EFI_BLOCK_READ ReadBlocks
;
120 EFI_BLOCK_WRITE WriteBlocks
;
121 EFI_BLOCK_FLUSH FlushBlocks
;
123 } EFI_BLOCK_IO_PROTOCOL
;
125 typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO
;
126 typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO
;
128 #define EFI_BLOCK_IO2_PROTOCOL_GUID \
129 { 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} }
131 INTERFACE_DECL(_EFI_BLOCK_IO2_PROTOCOL
);
135 EFI_STATUS TransactionStatus
;
136 } EFI_BLOCK_IO2_TOKEN
;
140 (EFIAPI
*EFI_BLOCK_RESET_EX
) (
141 IN
struct _EFI_BLOCK_IO2_PROTOCOL
*This
,
142 IN BOOLEAN ExtendedVerification
147 (EFIAPI
*EFI_BLOCK_READ_EX
) (
148 IN
struct _EFI_BLOCK_IO2_PROTOCOL
*This
,
151 IN OUT EFI_BLOCK_IO2_TOKEN
*Token
,
158 (EFIAPI
*EFI_BLOCK_WRITE_EX
) (
159 IN
struct _EFI_BLOCK_IO2_PROTOCOL
*This
,
162 IN OUT EFI_BLOCK_IO2_TOKEN
*Token
,
169 (EFIAPI
*EFI_BLOCK_FLUSH_EX
) (
170 IN
struct _EFI_BLOCK_IO2_PROTOCOL
*This
,
171 IN OUT EFI_BLOCK_IO2_TOKEN
*Token
174 typedef struct _EFI_BLOCK_IO2_PROTOCOL
{
175 EFI_BLOCK_IO_MEDIA
*Media
;
176 EFI_BLOCK_RESET_EX Reset
;
177 EFI_BLOCK_READ_EX ReadBlocksEx
;
178 EFI_BLOCK_WRITE_EX WriteBlocksEx
;
179 EFI_BLOCK_FLUSH_EX FlushBlocksEx
;
180 } EFI_BLOCK_IO2_PROTOCOL
;
183 // Disk Block IO protocol
186 #define EFI_DISK_IO_PROTOCOL_GUID \
187 { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
188 #define DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL_GUID
190 #define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000
191 #define EFI_DISK_IO_INTERFACE_REVISION EFI_DISK_IO_PROTOCOL_REVISION
193 INTERFACE_DECL(_EFI_DISK_IO_PROTOCOL
);
197 (EFIAPI
*EFI_DISK_READ
) (
198 IN
struct _EFI_DISK_IO_PROTOCOL
*This
,
208 (EFIAPI
*EFI_DISK_WRITE
) (
209 IN
struct _EFI_DISK_IO_PROTOCOL
*This
,
217 typedef struct _EFI_DISK_IO_PROTOCOL
{
219 EFI_DISK_READ ReadDisk
;
220 EFI_DISK_WRITE WriteDisk
;
221 } EFI_DISK_IO_PROTOCOL
;
223 typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO
;
224 typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO
;
227 #define EFI_DISK_IO2_PROTOCOL_GUID \
228 { 0x151c8eae, 0x7f2c, 0x472c, {0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88} }
230 #define EFI_DISK_IO2_PROTOCOL_REVISION 0x00020000
232 INTERFACE_DECL(_EFI_DISK_IO2_PROTOCOL
);
236 EFI_STATUS TransactionStatus
;
237 } EFI_DISK_IO2_TOKEN
;
241 (EFIAPI
*EFI_DISK_CANCEL_EX
) (
242 IN
struct _EFI_DISK_IO2_PROTOCOL
*This
247 (EFIAPI
*EFI_DISK_READ_EX
) (
248 IN
struct _EFI_DISK_IO2_PROTOCOL
*This
,
251 IN OUT EFI_DISK_IO2_TOKEN
*Token
,
258 (EFIAPI
*EFI_DISK_WRITE_EX
) (
259 IN
struct _EFI_DISK_IO2_PROTOCOL
*This
,
262 IN OUT EFI_DISK_IO2_TOKEN
*Token
,
269 (EFIAPI
*EFI_DISK_FLUSH_EX
) (
270 IN
struct _EFI_DISK_IO2_PROTOCOL
*This
,
271 IN OUT EFI_DISK_IO2_TOKEN
*Token
274 typedef struct _EFI_DISK_IO2_PROTOCOL
{
276 EFI_DISK_CANCEL_EX Cancel
;
277 EFI_DISK_READ_EX ReadDiskEx
;
278 EFI_DISK_WRITE_EX WriteDiskEx
;
279 EFI_DISK_FLUSH_EX FlushDiskEx
;
280 } EFI_DISK_IO2_PROTOCOL
;
283 // Simple file system protocol
286 #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
287 { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
288 #define SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
290 INTERFACE_DECL(_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
);
291 INTERFACE_DECL(_EFI_FILE_HANDLE
);
295 (EFIAPI
*EFI_VOLUME_OPEN
) (
296 IN
struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
*This
,
297 OUT
struct _EFI_FILE_HANDLE
**Root
300 #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000
301 #define EFI_FILE_IO_INTERFACE_REVISION EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION
303 typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
{
305 EFI_VOLUME_OPEN OpenVolume
;
306 } EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
;
308 typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL _EFI_FILE_IO_INTERFACE
;
309 typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_FILE_IO_INTERFACE
;
317 (EFIAPI
*EFI_FILE_OPEN
) (
318 IN
struct _EFI_FILE_HANDLE
*File
,
319 OUT
struct _EFI_FILE_HANDLE
**NewHandle
,
326 #define EFI_FILE_MODE_READ 0x0000000000000001
327 #define EFI_FILE_MODE_WRITE 0x0000000000000002
328 #define EFI_FILE_MODE_CREATE 0x8000000000000000
331 #define EFI_FILE_READ_ONLY 0x0000000000000001
332 #define EFI_FILE_HIDDEN 0x0000000000000002
333 #define EFI_FILE_SYSTEM 0x0000000000000004
334 #define EFI_FILE_RESERVIED 0x0000000000000008
335 #define EFI_FILE_DIRECTORY 0x0000000000000010
336 #define EFI_FILE_ARCHIVE 0x0000000000000020
337 #define EFI_FILE_VALID_ATTR 0x0000000000000037
341 (EFIAPI
*EFI_FILE_CLOSE
) (
342 IN
struct _EFI_FILE_HANDLE
*File
347 (EFIAPI
*EFI_FILE_DELETE
) (
348 IN
struct _EFI_FILE_HANDLE
*File
353 (EFIAPI
*EFI_FILE_READ
) (
354 IN
struct _EFI_FILE_HANDLE
*File
,
355 IN OUT UINTN
*BufferSize
,
361 (EFIAPI
*EFI_FILE_WRITE
) (
362 IN
struct _EFI_FILE_HANDLE
*File
,
363 IN OUT UINTN
*BufferSize
,
369 (EFIAPI
*EFI_FILE_SET_POSITION
) (
370 IN
struct _EFI_FILE_HANDLE
*File
,
376 (EFIAPI
*EFI_FILE_GET_POSITION
) (
377 IN
struct _EFI_FILE_HANDLE
*File
,
383 (EFIAPI
*EFI_FILE_GET_INFO
) (
384 IN
struct _EFI_FILE_HANDLE
*File
,
385 IN EFI_GUID
*InformationType
,
386 IN OUT UINTN
*BufferSize
,
392 (EFIAPI
*EFI_FILE_SET_INFO
) (
393 IN
struct _EFI_FILE_HANDLE
*File
,
394 IN EFI_GUID
*InformationType
,
401 (EFIAPI
*EFI_FILE_FLUSH
) (
402 IN
struct _EFI_FILE_HANDLE
*File
414 (EFIAPI
*EFI_FILE_OPEN_EX
)(
415 IN
struct _EFI_FILE_HANDLE
*File
,
416 OUT
struct _EFI_FILE_HANDLE
**NewHandle
,
419 IN UINT64 Attributes
,
420 IN OUT EFI_FILE_IO_TOKEN
*Token
425 (EFIAPI
*EFI_FILE_READ_EX
) (
426 IN
struct _EFI_FILE_HANDLE
*File
,
427 IN OUT EFI_FILE_IO_TOKEN
*Token
432 (EFIAPI
*EFI_FILE_WRITE_EX
) (
433 IN
struct _EFI_FILE_HANDLE
*File
,
434 IN OUT EFI_FILE_IO_TOKEN
*Token
439 (EFIAPI
*EFI_FILE_FLUSH_EX
) (
440 IN
struct _EFI_FILE_HANDLE
*File
,
441 IN OUT EFI_FILE_IO_TOKEN
*Token
444 #define EFI_FILE_PROTOCOL_REVISION 0x00010000
445 #define EFI_FILE_PROTOCOL_REVISION2 0x00020000
446 #define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
447 #define EFI_FILE_HANDLE_REVISION EFI_FILE_PROTOCOL_REVISION
449 typedef struct _EFI_FILE_HANDLE
{
452 EFI_FILE_CLOSE Close
;
453 EFI_FILE_DELETE Delete
;
455 EFI_FILE_WRITE Write
;
456 EFI_FILE_GET_POSITION GetPosition
;
457 EFI_FILE_SET_POSITION SetPosition
;
458 EFI_FILE_GET_INFO GetInfo
;
459 EFI_FILE_SET_INFO SetInfo
;
460 EFI_FILE_FLUSH Flush
;
461 EFI_FILE_OPEN_EX OpenEx
;
462 EFI_FILE_READ_EX ReadEx
;
463 EFI_FILE_WRITE_EX WriteEx
;
464 EFI_FILE_FLUSH_EX FlushEx
;
465 } EFI_FILE_PROTOCOL
, *EFI_FILE_HANDLE
;
467 typedef EFI_FILE_PROTOCOL EFI_FILE
;
471 // File information types
474 #define EFI_FILE_INFO_ID \
475 { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
482 EFI_TIME LastAccessTime
;
483 EFI_TIME ModificationTime
;
489 // The FileName field of the EFI_FILE_INFO data structure is variable length.
490 // Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
491 // be the size of the data structure without the FileName field. The following macro
492 // computes this size correctly no matter how big the FileName array is declared.
493 // This is required to make the EFI_FILE_INFO data structure ANSI compilant.
496 #define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
498 #define EFI_FILE_SYSTEM_INFO_ID \
499 { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
507 CHAR16 VolumeLabel
[1];
508 } EFI_FILE_SYSTEM_INFO
;
511 // The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
512 // Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
513 // to be the size of the data structure without the VolumeLable field. The following macro
514 // computes this size correctly no matter how big the VolumeLable array is declared.
515 // This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
518 #define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
520 #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
521 { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
524 CHAR16 VolumeLabel
[1];
525 } EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
;
527 #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
530 // Load file protocol
534 #define EFI_LOAD_FILE_PROTOCOL_GUID \
535 { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
536 #define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID
538 INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL
);
542 (EFIAPI
*EFI_LOAD_FILE
) (
543 IN
struct _EFI_LOAD_FILE_PROTOCOL
*This
,
544 IN EFI_DEVICE_PATH
*FilePath
,
545 IN BOOLEAN BootPolicy
,
546 IN OUT UINTN
*BufferSize
,
547 IN VOID
*Buffer OPTIONAL
550 typedef struct _EFI_LOAD_FILE_PROTOCOL
{
551 EFI_LOAD_FILE LoadFile
;
552 } EFI_LOAD_FILE_PROTOCOL
;
554 typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE
;
555 typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE
;
558 // Device IO protocol
561 #define EFI_DEVICE_IO_PROTOCOL_GUID \
562 { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
563 #define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID
565 INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL
);
573 // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
581 #define EFI_PCI_ADDRESS(_bus,_dev,_func) \
582 ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
587 (EFIAPI
*EFI_DEVICE_IO
) (
588 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
589 IN EFI_IO_WIDTH Width
,
602 (EFIAPI
*EFI_PCI_DEVICE_PATH
) (
603 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
605 IN OUT EFI_DEVICE_PATH
**PciDevicePath
611 EfiBusMasterCommonBuffer
612 } EFI_IO_OPERATION_TYPE
;
616 (EFIAPI
*EFI_IO_MAP
) (
617 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
618 IN EFI_IO_OPERATION_TYPE Operation
,
619 IN EFI_PHYSICAL_ADDRESS
*HostAddress
,
620 IN OUT UINTN
*NumberOfBytes
,
621 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
627 (EFIAPI
*EFI_IO_UNMAP
) (
628 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
634 (EFIAPI
*EFI_IO_ALLOCATE_BUFFER
) (
635 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
636 IN EFI_ALLOCATE_TYPE Type
,
637 IN EFI_MEMORY_TYPE MemoryType
,
639 IN OUT EFI_PHYSICAL_ADDRESS
*HostAddress
644 (EFIAPI
*EFI_IO_FLUSH
) (
645 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
650 (EFIAPI
*EFI_IO_FREE_BUFFER
) (
651 IN
struct _EFI_DEVICE_IO_PROTOCOL
*This
,
653 IN EFI_PHYSICAL_ADDRESS HostAddress
656 typedef struct _EFI_DEVICE_IO_PROTOCOL
{
661 EFI_PCI_DEVICE_PATH PciDevicePath
;
663 EFI_IO_ALLOCATE_BUFFER AllocateBuffer
;
665 EFI_IO_FREE_BUFFER FreeBuffer
;
666 } EFI_DEVICE_IO_PROTOCOL
;
668 typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE
;
669 typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE
;
672 // Unicode Collation protocol
675 #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
676 { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
677 #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID
679 #define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
680 #define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK
682 INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL
);
686 (EFIAPI
*EFI_UNICODE_STRICOLL
) (
687 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
694 (EFIAPI
*EFI_UNICODE_METAIMATCH
) (
695 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
702 (EFIAPI
*EFI_UNICODE_STRLWR
) (
703 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
709 (EFIAPI
*EFI_UNICODE_STRUPR
) (
710 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
716 (EFIAPI
*EFI_UNICODE_FATTOSTR
) (
717 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
725 (EFIAPI
*EFI_UNICODE_STRTOFAT
) (
726 IN
struct _EFI_UNICODE_COLLATION_PROTOCOL
*This
,
735 #define EFI_HASH_PROTOCOL_GUID \
736 { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } }
737 #define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID
739 #define EFI_HASH_ALGORITHM_SHA1_GUID \
740 { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated
741 #define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID
743 #define EFI_HASH_ALGORITHM_SHA224_GUID \
744 { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated
745 #define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID
747 #define EFI_HASH_ALGORITHM_SHA256_GUID \
748 { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated
749 #define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID
751 #define EFI_HASH_ALGORITHM_SHA384_GUID \
752 { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated
753 #define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID
755 #define EFI_HASH_ALGORITHM_SHA512_GUID \
756 { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated
757 #define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID
759 #define EFI_HASH_ALGORITHM_MD5_GUID \
760 { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated
761 #define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID
763 #define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \
764 { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } }
765 #define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID
767 #define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \
768 { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } }
769 #define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID
772 INTERFACE_DECL(_EFI_HASH_PROTOCOL
);
774 typedef UINT8 EFI_MD5_HASH
[16];
775 typedef UINT8 EFI_SHA1_HASH
[20];
776 typedef UINT8 EFI_SHA224_HASH
[28];
777 typedef UINT8 EFI_SHA256_HASH
[32];
778 typedef UINT8 EFI_SHA384_HASH
[48];
779 typedef UINT8 EFI_SHA512_HASH
[64];
780 typedef union _EFI_HASH_OUTPUT
{
781 EFI_MD5_HASH
*Md5Hash
;
782 EFI_SHA1_HASH
*Sha1Hash
;
783 EFI_SHA224_HASH
*Sha224Hash
;
784 EFI_SHA256_HASH
*Sha256Hash
;
785 EFI_SHA384_HASH
*Sha384Hash
;
786 EFI_SHA512_HASH
*Sha512Hash
;
791 (EFIAPI
*EFI_HASH_GET_HASH_SIZE
) (
792 IN CONST
struct _EFI_HASH_PROTOCOL
*This
,
793 IN CONST EFI_GUID
*HashAlgorithm
,
794 OUT UINTN
*HashSize
);
798 (EFIAPI
*EFI_HASH_HASH
) (
799 IN CONST
struct _EFI_HASH_PROTOCOL
*This
,
800 IN CONST EFI_GUID
*HashAlgorithm
,
802 IN CONST UINT8
*Message
,
803 IN UINT64 MessageSize
,
804 IN OUT EFI_HASH_OUTPUT
*Hash
);
806 typedef struct _EFI_HASH_PROTOCOL
{
807 EFI_HASH_GET_HASH_SIZE GetHashSize
;
811 typedef struct _EFI_HASH_PROTOCOL _EFI_HASH
;
812 typedef EFI_HASH_PROTOCOL EFI_HASH
;
815 typedef struct _EFI_UNICODE_COLLATION_PROTOCOL
{
818 EFI_UNICODE_STRICOLL StriColl
;
819 EFI_UNICODE_METAIMATCH MetaiMatch
;
820 EFI_UNICODE_STRLWR StrLwr
;
821 EFI_UNICODE_STRUPR StrUpr
;
823 // for supporting fat volumes
824 EFI_UNICODE_FATTOSTR FatToStr
;
825 EFI_UNICODE_STRTOFAT StrToFat
;
827 CHAR8
*SupportedLanguages
;
828 } EFI_UNICODE_COLLATION_PROTOCOL
;
830 typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE
;
832 /* Graphics output protocol */
833 #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
834 { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } }
835 typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL
;
845 PixelRedGreenBlueReserved8BitPerColor
,
846 PixelBlueGreenRedReserved8BitPerColor
,
850 } EFI_GRAPHICS_PIXEL_FORMAT
;
854 UINT32 HorizontalResolution
;
855 UINT32 VerticalResolution
;
856 EFI_GRAPHICS_PIXEL_FORMAT PixelFormat
;
857 EFI_PIXEL_BITMASK PixelInformation
;
858 UINT32 PixelsPerScanLine
;
859 } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
;
862 Return the current video mode information.
864 @param This Protocol instance pointer.
865 @param ModeNumber The mode number to return information on.
866 @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
867 @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
869 @retval EFI_SUCCESS Mode information returned.
870 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
871 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
872 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
873 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
878 (EFIAPI
*EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE
) (
879 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
880 IN UINT32 ModeNumber
,
881 OUT UINTN
*SizeOfInfo
,
882 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
887 Return the current video mode information.
889 @param This Protocol instance pointer.
890 @param ModeNumber The mode number to be set.
892 @retval EFI_SUCCESS Graphics mode was changed.
893 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
894 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
899 (EFIAPI
*EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE
) (
900 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
909 } EFI_GRAPHICS_OUTPUT_BLT_PIXEL
;
912 EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel
;
914 } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION
;
918 EfiBltVideoToBltBuffer
,
921 EfiGraphicsOutputBltOperationMax
922 } EFI_GRAPHICS_OUTPUT_BLT_OPERATION
;
925 The following table defines actions for BltOperations:
927 <B>EfiBltVideoFill</B> - Write data from the BltBuffer pixel (SourceX, SourceY)
928 directly to every pixel of the video display rectangle
929 (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
930 Only one pixel will be used from the BltBuffer. Delta is NOT used.
932 <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
933 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
934 the BltBuffer rectangle (DestinationX, DestinationY )
935 (DestinationX + Width, DestinationY + Height). If DestinationX or
936 DestinationY is not zero then Delta must be set to the length in bytes
937 of a row in the BltBuffer.
939 <B>EfiBltBufferToVideo</B> - Write data from the BltBuffer rectangle
940 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
941 video display rectangle (DestinationX, DestinationY)
942 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
943 not zero then Delta must be set to the length in bytes of a row in the
946 <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
947 (SourceX + Width, SourceY + Height) .to the video display rectangle
948 (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
949 The BltBuffer and Delta are not used in this mode.
951 @param This Protocol instance pointer.
952 @param BltBuffer Buffer containing data to blit into video buffer. This
953 buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
954 @param BltOperation Operation to perform on BlitBuffer and video memory
955 @param SourceX X coordinate of source for the BltBuffer.
956 @param SourceY Y coordinate of source for the BltBuffer.
957 @param DestinationX X coordinate of destination for the BltBuffer.
958 @param DestinationY Y coordinate of destination for the BltBuffer.
959 @param Width Width of rectangle in BltBuffer in pixels.
960 @param Height Hight of rectangle in BltBuffer in pixels.
961 @param Delta OPTIONAL
963 @retval EFI_SUCCESS The Blt operation completed.
964 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
965 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
970 (EFIAPI
*EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT
) (
971 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
972 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
973 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
976 IN UINTN DestinationX
,
977 IN UINTN DestinationY
,
980 IN UINTN Delta OPTIONAL
986 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
*Info
;
988 EFI_PHYSICAL_ADDRESS FrameBufferBase
;
989 UINTN FrameBufferSize
;
990 } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE
;
992 struct _EFI_GRAPHICS_OUTPUT_PROTOCOL
{
993 EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode
;
994 EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode
;
995 EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt
;
996 EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE
*Mode
;
1002 * EFI EDID Discovered Protocol
1003 * UEFI Specification Version 2.5 Section 11.9
1005 #define EFI_EDID_DISCOVERED_PROTOCOL_GUID \
1006 { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} }
1008 typedef struct _EFI_EDID_DISCOVERED_PROTOCOL
{
1011 } EFI_EDID_DISCOVERED_PROTOCOL
;
1016 * EFI EDID Active Protocol
1017 * UEFI Specification Version 2.5 Section 11.9
1019 #define EFI_EDID_ACTIVE_PROTOCOL_GUID \
1020 { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} }
1022 typedef struct _EFI_EDID_ACTIVE_PROTOCOL
{
1025 } EFI_EDID_ACTIVE_PROTOCOL
;
1030 * EFI EDID Override Protocol
1031 * UEFI Specification Version 2.5 Section 11.9
1033 #define EFI_EDID_OVERRIDE_PROTOCOL_GUID \
1034 { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} }
1036 INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL
);
1040 (EFIAPI
*EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID
) (
1041 IN
struct _EFI_EDID_OVERRIDE_PROTOCOL
*This
,
1042 IN EFI_HANDLE
*ChildHandle
,
1043 OUT UINT32
*Attributes
,
1044 IN OUT UINTN
*EdidSize
,
1045 IN OUT UINT8
**Edid
);
1047 typedef struct _EFI_EDID_OVERRIDE_PROTOCOL
{
1048 EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid
;
1049 } EFI_EDID_OVERRIDE_PROTOCOL
;
1053 INTERFACE_DECL(_EFI_SERVICE_BINDING
);
1057 (EFIAPI
*EFI_SERVICE_BINDING_CREATE_CHILD
) (
1058 IN
struct _EFI_SERVICE_BINDING
*This
,
1059 IN EFI_HANDLE
*ChildHandle
1064 (EFIAPI
*EFI_SERVICE_BINDING_DESTROY_CHILD
) (
1065 IN
struct _EFI_SERVICE_BINDING
*This
,
1066 IN EFI_HANDLE ChildHandle
1069 typedef struct _EFI_SERVICE_BINDING
{
1070 EFI_SERVICE_BINDING_CREATE_CHILD CreateChild
;
1071 EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild
;
1072 } EFI_SERVICE_BINDING
;
1077 * EFI Driver Binding Protocol
1078 * UEFI Specification Version 2.5 Section 10.1
1080 #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
1081 { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} }
1082 #define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID
1084 INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL
);
1088 (EFIAPI
*EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED
) (
1089 IN
struct _EFI_DRIVER_BINDING_PROTOCOL
*This
,
1090 IN EFI_HANDLE ControllerHandle
,
1091 IN EFI_DEVICE_PATH
*RemainingDevicePath OPTIONAL
);
1095 (EFIAPI
*EFI_DRIVER_BINDING_PROTOCOL_START
) (
1096 IN
struct _EFI_DRIVER_BINDING_PROTOCOL
*This
,
1097 IN EFI_HANDLE ControllerHandle
,
1098 IN EFI_DEVICE_PATH
*RemainingDevicePath OPTIONAL
);
1102 (EFIAPI
*EFI_DRIVER_BINDING_PROTOCOL_STOP
) (
1103 IN
struct _EFI_DRIVER_BINDING_PROTOCOL
*This
,
1104 IN EFI_HANDLE ControllerHandle
,
1105 IN UINTN NumberOfChildren
,
1106 IN EFI_HANDLE
*ChildHandleBuffer OPTIONAL
);
1108 typedef struct _EFI_DRIVER_BINDING_PROTOCOL
{
1109 EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported
;
1110 EFI_DRIVER_BINDING_PROTOCOL_START Start
;
1111 EFI_DRIVER_BINDING_PROTOCOL_STOP Stop
;
1113 EFI_HANDLE ImageHandle
;
1114 EFI_HANDLE DriverBindingHandle
;
1115 } EFI_DRIVER_BINDING_PROTOCOL
;
1117 typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING
;
1118 typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING
;
1122 * Backwards compatibility with older GNU-EFI versions. Deprecated.
1124 #define EFI_DRIVER_SUPPORTED EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED
1125 #define EFI_DRIVER_START EFI_DRIVER_BINDING_PROTOCOL_START
1126 #define EFI_DRIVER_STOP EFI_DRIVER_BINDING_PROTOCOL_STOP
1131 * EFI Component Name Protocol
1132 * Deprecated - use EFI Component Name 2 Protocol instead
1134 #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1135 {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
1136 #define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID
1138 INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL
);
1142 (EFIAPI
*EFI_COMPONENT_NAME_GET_DRIVER_NAME
) (
1143 IN
struct _EFI_COMPONENT_NAME_PROTOCOL
*This
,
1145 OUT CHAR16
**DriverName
);
1149 (EFIAPI
*EFI_COMPONENT_NAME_GET_CONTROLLER_NAME
) (
1150 IN
struct _EFI_COMPONENT_NAME_PROTOCOL
*This
,
1151 IN EFI_HANDLE ControllerHandle
,
1152 IN EFI_HANDLE ChildHandle OPTIONAL
,
1154 OUT CHAR16
**ControllerName
);
1156 typedef struct _EFI_COMPONENT_NAME_PROTOCOL
{
1157 EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName
;
1158 EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName
;
1159 CHAR8
*SupportedLanguages
;
1160 } EFI_COMPONENT_NAME_PROTOCOL
;
1162 typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME
;
1163 typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME
;
1167 * EFI Component Name 2 Protocol
1168 * UEFI Specification Version 2.5 Section 10.5
1170 #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1171 {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} }
1172 #define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID
1174 INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL
);
1178 (EFIAPI
*EFI_COMPONENT_NAME2_GET_DRIVER_NAME
) (
1179 IN
struct _EFI_COMPONENT_NAME2_PROTOCOL
*This
,
1181 OUT CHAR16
**DriverName
);
1185 (EFIAPI
*EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME
) (
1186 IN
struct _EFI_COMPONENT_NAME2_PROTOCOL
*This
,
1187 IN EFI_HANDLE ControllerHandle
,
1188 IN EFI_HANDLE ChildHandle OPTIONAL
,
1190 OUT CHAR16
**ControllerName
);
1192 typedef struct _EFI_COMPONENT_NAME2_PROTOCOL
{
1193 EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName
;
1194 EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName
;
1195 CHAR8
*SupportedLanguages
;
1196 } EFI_COMPONENT_NAME2_PROTOCOL
;
1198 typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2
;
1199 typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2
;
1204 * EFI Loaded Image Protocol
1205 * UEFI Specification Version 2.5 Section 8.1
1207 #define EFI_LOADED_IMAGE_PROTOCOL_GUID \
1208 { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
1209 #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID
1211 #define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
1212 #define EFI_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION
1216 (EFIAPI
*EFI_IMAGE_UNLOAD
) (
1217 IN EFI_HANDLE ImageHandle
1222 EFI_HANDLE ParentHandle
;
1223 struct _EFI_SYSTEM_TABLE
*SystemTable
;
1225 // Source location of image
1226 EFI_HANDLE DeviceHandle
;
1227 EFI_DEVICE_PATH
*FilePath
;
1230 // Images load options
1231 UINT32 LoadOptionsSize
;
1234 // Location of where image was loaded
1237 EFI_MEMORY_TYPE ImageCodeType
;
1238 EFI_MEMORY_TYPE ImageDataType
;
1240 // If the driver image supports a dynamic unload request
1241 EFI_IMAGE_UNLOAD Unload
;
1242 } EFI_LOADED_IMAGE_PROTOCOL
;
1244 typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE
;
1246 #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
1247 {0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf} }
1250 * Random Number Generator Protocol
1251 * UEFI Specification Version 2.5 Section 35.5
1253 #define EFI_RNG_PROTOCOL_GUID \
1254 { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} }
1256 typedef EFI_GUID EFI_RNG_ALGORITHM
;
1258 #define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \
1259 {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} }
1261 #define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \
1262 {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} }
1264 #define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \
1265 {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} }
1267 #define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \
1268 {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} }
1270 #define EFI_RNG_ALGORITHM_X9_31_AES_GUID \
1271 {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} }
1273 #define EFI_RNG_ALGORITHM_RAW \
1274 {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} }
1276 INTERFACE_DECL(_EFI_RNG_PROTOCOL
);
1280 (EFIAPI
*EFI_RNG_GET_INFO
) (
1281 IN
struct _EFI_RNG_PROTOCOL
*This
,
1282 IN OUT UINTN
*RNGAlgorithmListSize
,
1283 OUT EFI_RNG_ALGORITHM
*RNGAlgorithmList
1288 (EFIAPI
*EFI_RNG_GET_RNG
) (
1289 IN
struct _EFI_RNG_PROTOCOL
*This
,
1290 IN EFI_RNG_ALGORITHM
*RNGAlgorithm
, OPTIONAL
1291 IN UINTN RNGValueLength
,
1295 typedef struct _EFI_RNG_PROTOCOL
{
1296 EFI_RNG_GET_INFO GetInfo
;
1297 EFI_RNG_GET_RNG GetRNG
;
1302 // EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
1305 #define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \
1306 { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1308 INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
);
1312 (EFIAPI
*EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER
) (
1313 IN
struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
*This
,
1314 IN EFI_HANDLE ControllerHandle
,
1315 IN OUT EFI_HANDLE
*DriverImageHandle
);
1319 (EFIAPI
*EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH
) (
1320 IN
struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
*This
,
1321 IN EFI_HANDLE ControllerHandle
,
1322 IN OUT EFI_DEVICE_PATH
**DriverImagePath
);
1326 (EFIAPI
*EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED
) (
1327 IN
struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
*This
,
1328 IN EFI_HANDLE ControllerHandle
,
1329 IN EFI_DEVICE_PATH
*DriverImagePath
,
1330 IN EFI_HANDLE DriverImageHandle
);
1332 typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
{
1333 EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver
;
1334 EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath
;
1335 EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded
;
1336 } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
;
1339 // EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
1342 #define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \
1343 { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} }
1345 INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
);
1349 (EFIAPI
*EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER
) (
1350 IN
struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
*This
,
1351 IN OUT EFI_HANDLE
*DriverImageHandle
);
1353 typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
{
1354 EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver
;
1355 } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
;
1358 // EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
1361 #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \
1362 { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} }
1364 INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
);
1368 (EFIAPI
*EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION
) (
1369 IN
struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
*This
);
1371 typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
{
1372 EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion
;
1373 } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
;
1379 #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
1380 {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} }
1382 #define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
1384 INTERFACE_DECL(_EFI_EBC_PROTOCOL
);
1388 (EFIAPI
*EFI_EBC_CREATE_THUNK
)(
1389 IN
struct _EFI_EBC_PROTOCOL
*This
,
1390 IN EFI_HANDLE ImageHandle
,
1391 IN VOID
*EbcEntryPoint
,
1396 (EFIAPI
*EFI_EBC_UNLOAD_IMAGE
)(
1397 IN
struct _EFI_EBC_PROTOCOL
*This
,
1398 IN EFI_HANDLE ImageHandle
);
1402 (EFIAPI
*EBC_ICACHE_FLUSH
)(
1403 IN EFI_PHYSICAL_ADDRESS Start
,
1408 (EFIAPI
*EFI_EBC_REGISTER_ICACHE_FLUSH
)(
1409 IN
struct _EFI_EBC_PROTOCOL
*This
,
1410 IN EBC_ICACHE_FLUSH Flush
);
1414 (EFIAPI
*EFI_EBC_GET_VERSION
)(
1415 IN
struct _EFI_EBC_PROTOCOL
*This
,
1416 IN OUT UINT64
*Version
);
1418 typedef struct _EFI_EBC_PROTOCOL
{
1419 EFI_EBC_CREATE_THUNK CreateThunk
;
1420 EFI_EBC_UNLOAD_IMAGE UnloadImage
;
1421 EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush
;
1422 EFI_EBC_GET_VERSION GetVersion
;
1425 INTERFACE_DECL(_EFI_MEMORY_ATTRIBUTE_PROTOCOL
);
1429 (EFIAPI
*EFI_GET_MEMORY_ATTRIBUTES
)(
1430 IN
struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL
*This
,
1431 IN EFI_PHYSICAL_ADDRESS BaseAddress
,
1433 OUT UINT64
*Attributes
1438 (EFIAPI
*EFI_SET_MEMORY_ATTRIBUTES
)(
1439 IN
struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL
*This
,
1440 IN EFI_PHYSICAL_ADDRESS BaseAddress
,
1442 IN UINT64 Attributes
1447 (EFIAPI
*EFI_CLEAR_MEMORY_ATTRIBUTES
)(
1448 IN
struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL
*This
,
1449 IN EFI_PHYSICAL_ADDRESS BaseAddress
,
1451 IN UINT64 Attributes
1454 typedef struct _EFI_MEMORY_ATTRIBUTE_PROTOCOL
{
1455 EFI_GET_MEMORY_ATTRIBUTES GetMemoryAttributes
;
1456 EFI_SET_MEMORY_ATTRIBUTES SetMemoryAttributes
;
1457 EFI_CLEAR_MEMORY_ATTRIBUTES ClearMemoryAttributes
;
1458 } EFI_MEMORY_ATTRIBUTE_PROTOCOL
;