Home | History | Annotate | Line # | Download | only in inc
efiprot.h revision 1.1.1.2
      1      1.1  jakllsch /*	$NetBSD: efiprot.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $	*/
      2      1.1  jakllsch 
      3      1.1  jakllsch #ifndef _EFI_PROT_H
      4      1.1  jakllsch #define _EFI_PROT_H
      5      1.1  jakllsch 
      6      1.1  jakllsch /*++
      7      1.1  jakllsch 
      8      1.1  jakllsch Copyright (c) 1998  Intel Corporation
      9      1.1  jakllsch 
     10      1.1  jakllsch Module Name:
     11      1.1  jakllsch 
     12      1.1  jakllsch     efiprot.h
     13      1.1  jakllsch 
     14      1.1  jakllsch Abstract:
     15      1.1  jakllsch 
     16      1.1  jakllsch     EFI Protocols
     17      1.1  jakllsch 
     18      1.1  jakllsch 
     19      1.1  jakllsch 
     20      1.1  jakllsch Revision History
     21      1.1  jakllsch 
     22      1.1  jakllsch --*/
     23      1.1  jakllsch 
     24      1.1  jakllsch //
     25      1.1  jakllsch //  FPSWA library protocol
     26      1.1  jakllsch //
     27  1.1.1.2  jmcneill #define EFI_FPSWA_PROTOCOL_GUID \
     28      1.1  jakllsch     { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
     29  1.1.1.2  jmcneill #define FPSWA_PROTOCOL EFI_FPSWA_PROTOCOL_GUID
     30      1.1  jakllsch 
     31      1.1  jakllsch //
     32      1.1  jakllsch // Device Path protocol
     33      1.1  jakllsch //
     34      1.1  jakllsch 
     35  1.1.1.2  jmcneill #define EFI_DEVICE_PATH_PROTOCOL_GUID \
     36      1.1  jakllsch     { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     37  1.1.1.2  jmcneill #define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
     38      1.1  jakllsch 
     39      1.1  jakllsch 
     40      1.1  jakllsch //
     41      1.1  jakllsch // Block IO protocol
     42      1.1  jakllsch //
     43      1.1  jakllsch 
     44  1.1.1.2  jmcneill #define EFI_BLOCK_IO_PROTOCOL_GUID \
     45      1.1  jakllsch     { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     46  1.1.1.2  jmcneill #define BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL_GUID
     47      1.1  jakllsch 
     48  1.1.1.2  jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION    0x00010000
     49  1.1.1.2  jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION2   0x00020001
     50  1.1.1.2  jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION3   ((2<<16) | 31)
     51  1.1.1.2  jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION   EFI_BLOCK_IO_PROTOCOL_REVISION
     52  1.1.1.2  jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION2  EFI_BLOCK_IO_PROTOCOL_REVISION2
     53  1.1.1.2  jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION3  EFI_BLOCK_IO_PROTOCOL_REVISION3
     54  1.1.1.2  jmcneill 
     55  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_BLOCK_IO_PROTOCOL);
     56      1.1  jakllsch 
     57      1.1  jakllsch typedef
     58      1.1  jakllsch EFI_STATUS
     59      1.1  jakllsch (EFIAPI *EFI_BLOCK_RESET) (
     60  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO_PROTOCOL  *This,
     61  1.1.1.2  jmcneill     IN BOOLEAN                        ExtendedVerification
     62      1.1  jakllsch     );
     63      1.1  jakllsch 
     64      1.1  jakllsch typedef
     65      1.1  jakllsch EFI_STATUS
     66      1.1  jakllsch (EFIAPI *EFI_BLOCK_READ) (
     67  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO_PROTOCOL  *This,
     68  1.1.1.2  jmcneill     IN UINT32                         MediaId,
     69  1.1.1.2  jmcneill     IN EFI_LBA                        LBA,
     70  1.1.1.2  jmcneill     IN UINTN                          BufferSize,
     71  1.1.1.2  jmcneill     OUT VOID                          *Buffer
     72      1.1  jakllsch     );
     73      1.1  jakllsch 
     74      1.1  jakllsch 
     75      1.1  jakllsch typedef
     76      1.1  jakllsch EFI_STATUS
     77      1.1  jakllsch (EFIAPI *EFI_BLOCK_WRITE) (
     78  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO_PROTOCOL  *This,
     79  1.1.1.2  jmcneill     IN UINT32                         MediaId,
     80  1.1.1.2  jmcneill     IN EFI_LBA                        LBA,
     81  1.1.1.2  jmcneill     IN UINTN                          BufferSize,
     82  1.1.1.2  jmcneill     IN VOID                           *Buffer
     83      1.1  jakllsch     );
     84      1.1  jakllsch 
     85      1.1  jakllsch 
     86      1.1  jakllsch typedef
     87      1.1  jakllsch EFI_STATUS
     88      1.1  jakllsch (EFIAPI *EFI_BLOCK_FLUSH) (
     89  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO_PROTOCOL  *This
     90      1.1  jakllsch     );
     91      1.1  jakllsch 
     92      1.1  jakllsch 
     93      1.1  jakllsch 
     94      1.1  jakllsch typedef struct {
     95      1.1  jakllsch     UINT32              MediaId;
     96      1.1  jakllsch     BOOLEAN             RemovableMedia;
     97      1.1  jakllsch     BOOLEAN             MediaPresent;
     98      1.1  jakllsch 
     99      1.1  jakllsch     BOOLEAN             LogicalPartition;
    100      1.1  jakllsch     BOOLEAN             ReadOnly;
    101      1.1  jakllsch     BOOLEAN             WriteCaching;
    102      1.1  jakllsch 
    103      1.1  jakllsch     UINT32              BlockSize;
    104      1.1  jakllsch     UINT32              IoAlign;
    105      1.1  jakllsch 
    106      1.1  jakllsch     EFI_LBA             LastBlock;
    107      1.1  jakllsch 
    108      1.1  jakllsch     /* revision 2 */
    109      1.1  jakllsch     EFI_LBA             LowestAlignedLba;
    110      1.1  jakllsch     UINT32              LogicalBlocksPerPhysicalBlock;
    111      1.1  jakllsch     /* revision 3 */
    112      1.1  jakllsch     UINT32              OptimalTransferLengthGranularity;
    113      1.1  jakllsch } EFI_BLOCK_IO_MEDIA;
    114      1.1  jakllsch 
    115  1.1.1.2  jmcneill typedef struct _EFI_BLOCK_IO_PROTOCOL {
    116      1.1  jakllsch     UINT64                  Revision;
    117      1.1  jakllsch 
    118      1.1  jakllsch     EFI_BLOCK_IO_MEDIA      *Media;
    119      1.1  jakllsch 
    120      1.1  jakllsch     EFI_BLOCK_RESET         Reset;
    121      1.1  jakllsch     EFI_BLOCK_READ          ReadBlocks;
    122      1.1  jakllsch     EFI_BLOCK_WRITE         WriteBlocks;
    123      1.1  jakllsch     EFI_BLOCK_FLUSH         FlushBlocks;
    124      1.1  jakllsch 
    125  1.1.1.2  jmcneill } EFI_BLOCK_IO_PROTOCOL;
    126  1.1.1.2  jmcneill 
    127  1.1.1.2  jmcneill typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO;
    128  1.1.1.2  jmcneill typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO;
    129  1.1.1.2  jmcneill 
    130  1.1.1.2  jmcneill #define EFI_BLOCK_IO2_PROTOCOL_GUID \
    131  1.1.1.2  jmcneill     { 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} }
    132  1.1.1.2  jmcneill 
    133  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_BLOCK_IO2_PROTOCOL);
    134  1.1.1.2  jmcneill 
    135  1.1.1.2  jmcneill typedef struct {
    136  1.1.1.2  jmcneill     EFI_EVENT               Event;
    137  1.1.1.2  jmcneill     EFI_STATUS              TransactionStatus;
    138  1.1.1.2  jmcneill } EFI_BLOCK_IO2_TOKEN;
    139  1.1.1.2  jmcneill 
    140  1.1.1.2  jmcneill typedef
    141  1.1.1.2  jmcneill EFI_STATUS
    142  1.1.1.2  jmcneill (EFIAPI *EFI_BLOCK_RESET_EX) (
    143  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO2_PROTOCOL  *This,
    144  1.1.1.2  jmcneill     IN BOOLEAN                         ExtendedVerification
    145  1.1.1.2  jmcneill     );
    146  1.1.1.2  jmcneill 
    147  1.1.1.2  jmcneill typedef
    148  1.1.1.2  jmcneill EFI_STATUS
    149  1.1.1.2  jmcneill (EFIAPI *EFI_BLOCK_READ_EX) (
    150  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO2_PROTOCOL  *This,
    151  1.1.1.2  jmcneill     IN UINT32                          MediaId,
    152  1.1.1.2  jmcneill     IN EFI_LBA                         LBA,
    153  1.1.1.2  jmcneill     IN OUT EFI_BLOCK_IO2_TOKEN         *Token,
    154  1.1.1.2  jmcneill     IN UINTN                           BufferSize,
    155  1.1.1.2  jmcneill     OUT VOID                           *Buffer
    156  1.1.1.2  jmcneill     );
    157  1.1.1.2  jmcneill 
    158  1.1.1.2  jmcneill typedef
    159  1.1.1.2  jmcneill EFI_STATUS
    160  1.1.1.2  jmcneill (EFIAPI *EFI_BLOCK_WRITE_EX) (
    161  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO2_PROTOCOL  *This,
    162  1.1.1.2  jmcneill     IN UINT32                          MediaId,
    163  1.1.1.2  jmcneill     IN EFI_LBA                         LBA,
    164  1.1.1.2  jmcneill     IN OUT EFI_BLOCK_IO2_TOKEN         *Token,
    165  1.1.1.2  jmcneill     IN UINTN                           BufferSize,
    166  1.1.1.2  jmcneill     IN VOID                            *Buffer
    167  1.1.1.2  jmcneill     );
    168      1.1  jakllsch 
    169  1.1.1.2  jmcneill typedef
    170  1.1.1.2  jmcneill EFI_STATUS
    171  1.1.1.2  jmcneill (EFIAPI *EFI_BLOCK_FLUSH_EX) (
    172  1.1.1.2  jmcneill     IN struct _EFI_BLOCK_IO2_PROTOCOL  *This,
    173  1.1.1.2  jmcneill     IN OUT EFI_BLOCK_IO2_TOKEN         *Token
    174  1.1.1.2  jmcneill     );
    175      1.1  jakllsch 
    176  1.1.1.2  jmcneill typedef struct _EFI_BLOCK_IO2_PROTOCOL {
    177  1.1.1.2  jmcneill     EFI_BLOCK_IO_MEDIA  *Media;
    178  1.1.1.2  jmcneill     EFI_BLOCK_RESET_EX  Reset;
    179  1.1.1.2  jmcneill     EFI_BLOCK_READ_EX   ReadBlocksEx;
    180  1.1.1.2  jmcneill     EFI_BLOCK_WRITE_EX  WriteBlocksEx;
    181  1.1.1.2  jmcneill     EFI_BLOCK_FLUSH_EX  FlushBlocksEx;
    182  1.1.1.2  jmcneill } EFI_BLOCK_IO2_PROTOCOL;
    183      1.1  jakllsch 
    184      1.1  jakllsch //
    185      1.1  jakllsch // Disk Block IO protocol
    186      1.1  jakllsch //
    187      1.1  jakllsch 
    188  1.1.1.2  jmcneill #define EFI_DISK_IO_PROTOCOL_GUID \
    189      1.1  jakllsch     { 0xce345171, 0xba0b, 0x11d2,  {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    190  1.1.1.2  jmcneill #define DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL_GUID
    191  1.1.1.2  jmcneill 
    192  1.1.1.2  jmcneill #define EFI_DISK_IO_PROTOCOL_REVISION  0x00010000
    193  1.1.1.2  jmcneill #define EFI_DISK_IO_INTERFACE_REVISION EFI_DISK_IO_PROTOCOL_REVISION
    194      1.1  jakllsch 
    195  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_DISK_IO_PROTOCOL);
    196      1.1  jakllsch 
    197      1.1  jakllsch typedef
    198      1.1  jakllsch EFI_STATUS
    199      1.1  jakllsch (EFIAPI *EFI_DISK_READ) (
    200  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO_PROTOCOL  *This,
    201  1.1.1.2  jmcneill     IN UINT32                        MediaId,
    202  1.1.1.2  jmcneill     IN UINT64                        Offset,
    203  1.1.1.2  jmcneill     IN UINTN                         BufferSize,
    204  1.1.1.2  jmcneill     OUT VOID                         *Buffer
    205      1.1  jakllsch     );
    206      1.1  jakllsch 
    207      1.1  jakllsch 
    208      1.1  jakllsch typedef
    209      1.1  jakllsch EFI_STATUS
    210      1.1  jakllsch (EFIAPI *EFI_DISK_WRITE) (
    211  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO_PROTOCOL  *This,
    212  1.1.1.2  jmcneill     IN UINT32                        MediaId,
    213  1.1.1.2  jmcneill     IN UINT64                        Offset,
    214  1.1.1.2  jmcneill     IN UINTN                         BufferSize,
    215  1.1.1.2  jmcneill     IN VOID                          *Buffer
    216      1.1  jakllsch     );
    217      1.1  jakllsch 
    218      1.1  jakllsch 
    219  1.1.1.2  jmcneill typedef struct _EFI_DISK_IO_PROTOCOL {
    220      1.1  jakllsch     UINT64              Revision;
    221      1.1  jakllsch     EFI_DISK_READ       ReadDisk;
    222      1.1  jakllsch     EFI_DISK_WRITE      WriteDisk;
    223  1.1.1.2  jmcneill } EFI_DISK_IO_PROTOCOL;
    224  1.1.1.2  jmcneill 
    225  1.1.1.2  jmcneill typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO;
    226  1.1.1.2  jmcneill typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
    227  1.1.1.2  jmcneill 
    228      1.1  jakllsch 
    229  1.1.1.2  jmcneill #define EFI_DISK_IO2_PROTOCOL_GUID \
    230  1.1.1.2  jmcneill     { 0x151c8eae, 0x7f2c, 0x472c,  {0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88} }
    231  1.1.1.2  jmcneill 
    232  1.1.1.2  jmcneill #define EFI_DISK_IO2_PROTOCOL_REVISION  0x00020000
    233  1.1.1.2  jmcneill 
    234  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_DISK_IO2_PROTOCOL);
    235  1.1.1.2  jmcneill 
    236  1.1.1.2  jmcneill typedef struct {
    237  1.1.1.2  jmcneill     EFI_EVENT  Event;
    238  1.1.1.2  jmcneill     EFI_STATUS TransactionStatus;
    239  1.1.1.2  jmcneill } EFI_DISK_IO2_TOKEN;
    240  1.1.1.2  jmcneill 
    241  1.1.1.2  jmcneill typedef
    242  1.1.1.2  jmcneill EFI_STATUS
    243  1.1.1.2  jmcneill (EFIAPI *EFI_DISK_CANCEL_EX) (
    244  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO2_PROTOCOL  *This
    245  1.1.1.2  jmcneill     );
    246  1.1.1.2  jmcneill 
    247  1.1.1.2  jmcneill typedef
    248  1.1.1.2  jmcneill EFI_STATUS
    249  1.1.1.2  jmcneill (EFIAPI *EFI_DISK_READ_EX) (
    250  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO2_PROTOCOL  *This,
    251  1.1.1.2  jmcneill     IN UINT32                         MediaId,
    252  1.1.1.2  jmcneill     IN UINT64                         Offset,
    253  1.1.1.2  jmcneill     IN OUT EFI_DISK_IO2_TOKEN         *Token,
    254  1.1.1.2  jmcneill     IN UINTN                          BufferSize,
    255  1.1.1.2  jmcneill     OUT VOID                          *Buffer
    256  1.1.1.2  jmcneill     );
    257  1.1.1.2  jmcneill 
    258  1.1.1.2  jmcneill typedef
    259  1.1.1.2  jmcneill EFI_STATUS
    260  1.1.1.2  jmcneill (EFIAPI *EFI_DISK_WRITE_EX) (
    261  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO2_PROTOCOL  *This,
    262  1.1.1.2  jmcneill     IN UINT32                         MediaId,
    263  1.1.1.2  jmcneill     IN UINT64                         Offset,
    264  1.1.1.2  jmcneill     IN OUT EFI_DISK_IO2_TOKEN         *Token,
    265  1.1.1.2  jmcneill     IN UINTN                          BufferSize,
    266  1.1.1.2  jmcneill     IN VOID                           *Buffer
    267  1.1.1.2  jmcneill     );
    268  1.1.1.2  jmcneill 
    269  1.1.1.2  jmcneill typedef
    270  1.1.1.2  jmcneill EFI_STATUS
    271  1.1.1.2  jmcneill (EFIAPI *EFI_DISK_FLUSH_EX) (
    272  1.1.1.2  jmcneill     IN struct _EFI_DISK_IO2_PROTOCOL  *This,
    273  1.1.1.2  jmcneill     IN OUT EFI_DISK_IO2_TOKEN         *Token
    274  1.1.1.2  jmcneill     );
    275  1.1.1.2  jmcneill 
    276  1.1.1.2  jmcneill typedef struct _EFI_DISK_IO2_PROTOCOL {
    277  1.1.1.2  jmcneill     UINT64                            Revision;
    278  1.1.1.2  jmcneill     EFI_DISK_CANCEL_EX                Cancel;
    279  1.1.1.2  jmcneill     EFI_DISK_READ_EX                  ReadDiskEx;
    280  1.1.1.2  jmcneill     EFI_DISK_WRITE_EX                 WriteDiskEx;
    281  1.1.1.2  jmcneill     EFI_DISK_FLUSH_EX                 FlushDiskEx;
    282  1.1.1.2  jmcneill } EFI_DISK_IO2_PROTOCOL;
    283      1.1  jakllsch 
    284      1.1  jakllsch //
    285      1.1  jakllsch // Simple file system protocol
    286      1.1  jakllsch //
    287      1.1  jakllsch 
    288  1.1.1.2  jmcneill #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
    289      1.1  jakllsch     { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    290  1.1.1.2  jmcneill #define SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
    291      1.1  jakllsch 
    292  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL);
    293      1.1  jakllsch INTERFACE_DECL(_EFI_FILE_HANDLE);
    294      1.1  jakllsch 
    295      1.1  jakllsch typedef
    296      1.1  jakllsch EFI_STATUS
    297      1.1  jakllsch (EFIAPI *EFI_VOLUME_OPEN) (
    298  1.1.1.2  jmcneill     IN struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL    *This,
    299  1.1.1.2  jmcneill     OUT struct _EFI_FILE_HANDLE                   **Root
    300      1.1  jakllsch     );
    301      1.1  jakllsch 
    302  1.1.1.2  jmcneill #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION  0x00010000
    303  1.1.1.2  jmcneill #define EFI_FILE_IO_INTERFACE_REVISION EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION
    304      1.1  jakllsch 
    305  1.1.1.2  jmcneill typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {
    306      1.1  jakllsch     UINT64                  Revision;
    307      1.1  jakllsch     EFI_VOLUME_OPEN         OpenVolume;
    308  1.1.1.2  jmcneill } EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
    309  1.1.1.2  jmcneill 
    310  1.1.1.2  jmcneill typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL _EFI_FILE_IO_INTERFACE;
    311  1.1.1.2  jmcneill typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_FILE_IO_INTERFACE;
    312      1.1  jakllsch 
    313      1.1  jakllsch //
    314      1.1  jakllsch //
    315      1.1  jakllsch //
    316      1.1  jakllsch 
    317      1.1  jakllsch typedef
    318      1.1  jakllsch EFI_STATUS
    319      1.1  jakllsch (EFIAPI *EFI_FILE_OPEN) (
    320      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    321      1.1  jakllsch     OUT struct _EFI_FILE_HANDLE **NewHandle,
    322      1.1  jakllsch     IN CHAR16                   *FileName,
    323      1.1  jakllsch     IN UINT64                   OpenMode,
    324      1.1  jakllsch     IN UINT64                   Attributes
    325      1.1  jakllsch     );
    326      1.1  jakllsch 
    327      1.1  jakllsch // Open modes
    328      1.1  jakllsch #define EFI_FILE_MODE_READ      0x0000000000000001
    329      1.1  jakllsch #define EFI_FILE_MODE_WRITE     0x0000000000000002
    330      1.1  jakllsch #define EFI_FILE_MODE_CREATE    0x8000000000000000
    331      1.1  jakllsch 
    332      1.1  jakllsch // File attributes
    333      1.1  jakllsch #define EFI_FILE_READ_ONLY      0x0000000000000001
    334      1.1  jakllsch #define EFI_FILE_HIDDEN         0x0000000000000002
    335      1.1  jakllsch #define EFI_FILE_SYSTEM         0x0000000000000004
    336      1.1  jakllsch #define EFI_FILE_RESERVIED      0x0000000000000008
    337      1.1  jakllsch #define EFI_FILE_DIRECTORY      0x0000000000000010
    338      1.1  jakllsch #define EFI_FILE_ARCHIVE        0x0000000000000020
    339      1.1  jakllsch #define EFI_FILE_VALID_ATTR     0x0000000000000037
    340      1.1  jakllsch 
    341      1.1  jakllsch typedef
    342      1.1  jakllsch EFI_STATUS
    343      1.1  jakllsch (EFIAPI *EFI_FILE_CLOSE) (
    344      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    345      1.1  jakllsch     );
    346      1.1  jakllsch 
    347      1.1  jakllsch typedef
    348      1.1  jakllsch EFI_STATUS
    349      1.1  jakllsch (EFIAPI *EFI_FILE_DELETE) (
    350      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    351      1.1  jakllsch     );
    352      1.1  jakllsch 
    353      1.1  jakllsch typedef
    354      1.1  jakllsch EFI_STATUS
    355      1.1  jakllsch (EFIAPI *EFI_FILE_READ) (
    356      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    357      1.1  jakllsch     IN OUT UINTN                *BufferSize,
    358      1.1  jakllsch     OUT VOID                    *Buffer
    359      1.1  jakllsch     );
    360      1.1  jakllsch 
    361      1.1  jakllsch typedef
    362      1.1  jakllsch EFI_STATUS
    363      1.1  jakllsch (EFIAPI *EFI_FILE_WRITE) (
    364      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    365      1.1  jakllsch     IN OUT UINTN                *BufferSize,
    366      1.1  jakllsch     IN VOID                     *Buffer
    367      1.1  jakllsch     );
    368      1.1  jakllsch 
    369      1.1  jakllsch typedef
    370      1.1  jakllsch EFI_STATUS
    371      1.1  jakllsch (EFIAPI *EFI_FILE_SET_POSITION) (
    372      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    373      1.1  jakllsch     IN UINT64                   Position
    374      1.1  jakllsch     );
    375      1.1  jakllsch 
    376      1.1  jakllsch typedef
    377      1.1  jakllsch EFI_STATUS
    378      1.1  jakllsch (EFIAPI *EFI_FILE_GET_POSITION) (
    379      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    380      1.1  jakllsch     OUT UINT64                  *Position
    381      1.1  jakllsch     );
    382      1.1  jakllsch 
    383      1.1  jakllsch typedef
    384      1.1  jakllsch EFI_STATUS
    385      1.1  jakllsch (EFIAPI *EFI_FILE_GET_INFO) (
    386      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    387      1.1  jakllsch     IN EFI_GUID                 *InformationType,
    388      1.1  jakllsch     IN OUT UINTN                *BufferSize,
    389      1.1  jakllsch     OUT VOID                    *Buffer
    390      1.1  jakllsch     );
    391      1.1  jakllsch 
    392      1.1  jakllsch typedef
    393      1.1  jakllsch EFI_STATUS
    394      1.1  jakllsch (EFIAPI *EFI_FILE_SET_INFO) (
    395      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    396      1.1  jakllsch     IN EFI_GUID                 *InformationType,
    397      1.1  jakllsch     IN UINTN                    BufferSize,
    398      1.1  jakllsch     IN VOID                     *Buffer
    399      1.1  jakllsch     );
    400      1.1  jakllsch 
    401      1.1  jakllsch typedef
    402      1.1  jakllsch EFI_STATUS
    403      1.1  jakllsch (EFIAPI *EFI_FILE_FLUSH) (
    404      1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    405      1.1  jakllsch     );
    406      1.1  jakllsch 
    407  1.1.1.2  jmcneill typedef struct {
    408  1.1.1.2  jmcneill     EFI_EVENT       Event;
    409  1.1.1.2  jmcneill     EFI_STATUS      Status;
    410  1.1.1.2  jmcneill     UINTN           BufferSize;
    411  1.1.1.2  jmcneill     VOID            *Buffer;
    412  1.1.1.2  jmcneill } EFI_FILE_IO_TOKEN;
    413  1.1.1.2  jmcneill 
    414  1.1.1.2  jmcneill typedef
    415  1.1.1.2  jmcneill EFI_STATUS
    416  1.1.1.2  jmcneill (EFIAPI *EFI_FILE_OPEN_EX)(
    417  1.1.1.2  jmcneill     IN struct _EFI_FILE_HANDLE  *File,
    418  1.1.1.2  jmcneill     OUT struct _EFI_FILE_HANDLE **NewHandle,
    419  1.1.1.2  jmcneill     IN CHAR16                   *FileName,
    420  1.1.1.2  jmcneill     IN UINT64                   OpenMode,
    421  1.1.1.2  jmcneill     IN UINT64                   Attributes,
    422  1.1.1.2  jmcneill     IN OUT EFI_FILE_IO_TOKEN    *Token
    423  1.1.1.2  jmcneill     );
    424  1.1.1.2  jmcneill 
    425  1.1.1.2  jmcneill typedef
    426  1.1.1.2  jmcneill EFI_STATUS
    427  1.1.1.2  jmcneill (EFIAPI *EFI_FILE_READ_EX) (
    428  1.1.1.2  jmcneill     IN struct _EFI_FILE_HANDLE  *File,
    429  1.1.1.2  jmcneill     IN OUT EFI_FILE_IO_TOKEN    *Token
    430  1.1.1.2  jmcneill     );
    431  1.1.1.2  jmcneill 
    432  1.1.1.2  jmcneill typedef
    433  1.1.1.2  jmcneill EFI_STATUS
    434  1.1.1.2  jmcneill (EFIAPI *EFI_FILE_WRITE_EX) (
    435  1.1.1.2  jmcneill     IN struct _EFI_FILE_HANDLE  *File,
    436  1.1.1.2  jmcneill     IN OUT EFI_FILE_IO_TOKEN    *Token
    437  1.1.1.2  jmcneill     );
    438  1.1.1.2  jmcneill 
    439  1.1.1.2  jmcneill typedef
    440  1.1.1.2  jmcneill EFI_STATUS
    441  1.1.1.2  jmcneill (EFIAPI *EFI_FILE_FLUSH_EX) (
    442  1.1.1.2  jmcneill     IN struct _EFI_FILE_HANDLE  *File,
    443  1.1.1.2  jmcneill     IN OUT EFI_FILE_IO_TOKEN    *Token
    444  1.1.1.2  jmcneill     );
    445      1.1  jakllsch 
    446  1.1.1.2  jmcneill #define EFI_FILE_PROTOCOL_REVISION         0x00010000
    447  1.1.1.2  jmcneill #define EFI_FILE_PROTOCOL_REVISION2        0x00020000
    448  1.1.1.2  jmcneill #define EFI_FILE_PROTOCOL_LATEST_REVISION  EFI_FILE_PROTOCOL_REVISION2
    449  1.1.1.2  jmcneill #define EFI_FILE_HANDLE_REVISION           EFI_FILE_PROTOCOL_REVISION
    450      1.1  jakllsch 
    451      1.1  jakllsch typedef struct _EFI_FILE_HANDLE {
    452      1.1  jakllsch     UINT64                  Revision;
    453      1.1  jakllsch     EFI_FILE_OPEN           Open;
    454      1.1  jakllsch     EFI_FILE_CLOSE          Close;
    455      1.1  jakllsch     EFI_FILE_DELETE         Delete;
    456      1.1  jakllsch     EFI_FILE_READ           Read;
    457      1.1  jakllsch     EFI_FILE_WRITE          Write;
    458      1.1  jakllsch     EFI_FILE_GET_POSITION   GetPosition;
    459      1.1  jakllsch     EFI_FILE_SET_POSITION   SetPosition;
    460      1.1  jakllsch     EFI_FILE_GET_INFO       GetInfo;
    461      1.1  jakllsch     EFI_FILE_SET_INFO       SetInfo;
    462      1.1  jakllsch     EFI_FILE_FLUSH          Flush;
    463  1.1.1.2  jmcneill     EFI_FILE_OPEN_EX        OpenEx;
    464  1.1.1.2  jmcneill     EFI_FILE_READ_EX        ReadEx;
    465  1.1.1.2  jmcneill     EFI_FILE_WRITE_EX       WriteEx;
    466  1.1.1.2  jmcneill     EFI_FILE_FLUSH_EX       FlushEx;
    467  1.1.1.2  jmcneill } EFI_FILE_PROTOCOL, *EFI_FILE_HANDLE;
    468  1.1.1.2  jmcneill 
    469  1.1.1.2  jmcneill typedef EFI_FILE_PROTOCOL EFI_FILE;
    470      1.1  jakllsch 
    471      1.1  jakllsch 
    472      1.1  jakllsch //
    473      1.1  jakllsch // File information types
    474      1.1  jakllsch //
    475      1.1  jakllsch 
    476      1.1  jakllsch #define EFI_FILE_INFO_ID   \
    477      1.1  jakllsch     { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    478      1.1  jakllsch 
    479      1.1  jakllsch typedef struct {
    480      1.1  jakllsch     UINT64                  Size;
    481      1.1  jakllsch     UINT64                  FileSize;
    482      1.1  jakllsch     UINT64                  PhysicalSize;
    483      1.1  jakllsch     EFI_TIME                CreateTime;
    484      1.1  jakllsch     EFI_TIME                LastAccessTime;
    485      1.1  jakllsch     EFI_TIME                ModificationTime;
    486      1.1  jakllsch     UINT64                  Attribute;
    487      1.1  jakllsch     CHAR16                  FileName[1];
    488      1.1  jakllsch } EFI_FILE_INFO;
    489      1.1  jakllsch 
    490      1.1  jakllsch //
    491      1.1  jakllsch // The FileName field of the EFI_FILE_INFO data structure is variable length.
    492      1.1  jakllsch // Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
    493  1.1.1.2  jmcneill // be the size of the data structure without the FileName field.  The following macro
    494      1.1  jakllsch // computes this size correctly no matter how big the FileName array is declared.
    495  1.1.1.2  jmcneill // This is required to make the EFI_FILE_INFO data structure ANSI compilant.
    496      1.1  jakllsch //
    497      1.1  jakllsch 
    498      1.1  jakllsch #define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
    499      1.1  jakllsch 
    500      1.1  jakllsch #define EFI_FILE_SYSTEM_INFO_ID    \
    501      1.1  jakllsch     { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    502      1.1  jakllsch 
    503      1.1  jakllsch typedef struct {
    504      1.1  jakllsch     UINT64                  Size;
    505      1.1  jakllsch     BOOLEAN                 ReadOnly;
    506      1.1  jakllsch     UINT64                  VolumeSize;
    507      1.1  jakllsch     UINT64                  FreeSpace;
    508      1.1  jakllsch     UINT32                  BlockSize;
    509      1.1  jakllsch     CHAR16                  VolumeLabel[1];
    510      1.1  jakllsch } EFI_FILE_SYSTEM_INFO;
    511      1.1  jakllsch 
    512      1.1  jakllsch //
    513      1.1  jakllsch // The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
    514      1.1  jakllsch // Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
    515  1.1.1.2  jmcneill // to be the size of the data structure without the VolumeLable field.  The following macro
    516      1.1  jakllsch // computes this size correctly no matter how big the VolumeLable array is declared.
    517  1.1.1.2  jmcneill // This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
    518      1.1  jakllsch //
    519      1.1  jakllsch 
    520      1.1  jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
    521      1.1  jakllsch 
    522      1.1  jakllsch #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID    \
    523      1.1  jakllsch     { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
    524      1.1  jakllsch 
    525      1.1  jakllsch typedef struct {
    526      1.1  jakllsch     CHAR16                  VolumeLabel[1];
    527      1.1  jakllsch } EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
    528      1.1  jakllsch 
    529      1.1  jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
    530      1.1  jakllsch 
    531      1.1  jakllsch //
    532      1.1  jakllsch // Load file protocol
    533      1.1  jakllsch //
    534      1.1  jakllsch 
    535      1.1  jakllsch 
    536  1.1.1.2  jmcneill #define EFI_LOAD_FILE_PROTOCOL_GUID \
    537      1.1  jakllsch     { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
    538  1.1.1.2  jmcneill #define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID
    539      1.1  jakllsch 
    540  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL);
    541      1.1  jakllsch 
    542      1.1  jakllsch typedef
    543      1.1  jakllsch EFI_STATUS
    544      1.1  jakllsch (EFIAPI *EFI_LOAD_FILE) (
    545  1.1.1.2  jmcneill     IN struct _EFI_LOAD_FILE_PROTOCOL  *This,
    546      1.1  jakllsch     IN EFI_DEVICE_PATH                  *FilePath,
    547      1.1  jakllsch     IN BOOLEAN                          BootPolicy,
    548      1.1  jakllsch     IN OUT UINTN                        *BufferSize,
    549      1.1  jakllsch     IN VOID                             *Buffer OPTIONAL
    550      1.1  jakllsch     );
    551      1.1  jakllsch 
    552  1.1.1.2  jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL {
    553      1.1  jakllsch     EFI_LOAD_FILE                       LoadFile;
    554  1.1.1.2  jmcneill } EFI_LOAD_FILE_PROTOCOL;
    555      1.1  jakllsch 
    556  1.1.1.2  jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE;
    557  1.1.1.2  jmcneill typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE;
    558      1.1  jakllsch 
    559      1.1  jakllsch //
    560      1.1  jakllsch // Device IO protocol
    561      1.1  jakllsch //
    562      1.1  jakllsch 
    563  1.1.1.2  jmcneill #define EFI_DEVICE_IO_PROTOCOL_GUID \
    564      1.1  jakllsch     { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    565  1.1.1.2  jmcneill #define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID
    566      1.1  jakllsch 
    567  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL);
    568      1.1  jakllsch 
    569      1.1  jakllsch typedef enum {
    570      1.1  jakllsch     IO_UINT8,
    571      1.1  jakllsch     IO_UINT16,
    572      1.1  jakllsch     IO_UINT32,
    573      1.1  jakllsch     IO_UINT64,
    574      1.1  jakllsch //
    575      1.1  jakllsch // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
    576      1.1  jakllsch //
    577      1.1  jakllsch     MMIO_COPY_UINT8,
    578      1.1  jakllsch     MMIO_COPY_UINT16,
    579      1.1  jakllsch     MMIO_COPY_UINT32,
    580      1.1  jakllsch     MMIO_COPY_UINT64
    581      1.1  jakllsch } EFI_IO_WIDTH;
    582      1.1  jakllsch 
    583      1.1  jakllsch #define EFI_PCI_ADDRESS(_bus,_dev,_func) \
    584      1.1  jakllsch     ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
    585      1.1  jakllsch 
    586      1.1  jakllsch 
    587      1.1  jakllsch typedef
    588      1.1  jakllsch EFI_STATUS
    589      1.1  jakllsch (EFIAPI *EFI_DEVICE_IO) (
    590  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL *This,
    591      1.1  jakllsch     IN EFI_IO_WIDTH                 Width,
    592      1.1  jakllsch     IN UINT64                       Address,
    593      1.1  jakllsch     IN UINTN                        Count,
    594      1.1  jakllsch     IN OUT VOID                     *Buffer
    595      1.1  jakllsch     );
    596      1.1  jakllsch 
    597      1.1  jakllsch typedef struct {
    598      1.1  jakllsch     EFI_DEVICE_IO                   Read;
    599      1.1  jakllsch     EFI_DEVICE_IO                   Write;
    600      1.1  jakllsch } EFI_IO_ACCESS;
    601      1.1  jakllsch 
    602  1.1.1.2  jmcneill typedef
    603      1.1  jakllsch EFI_STATUS
    604      1.1  jakllsch (EFIAPI *EFI_PCI_DEVICE_PATH) (
    605  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This,
    606      1.1  jakllsch     IN UINT64                           Address,
    607      1.1  jakllsch     IN OUT EFI_DEVICE_PATH              **PciDevicePath
    608      1.1  jakllsch     );
    609      1.1  jakllsch 
    610      1.1  jakllsch typedef enum {
    611      1.1  jakllsch     EfiBusMasterRead,
    612      1.1  jakllsch     EfiBusMasterWrite,
    613      1.1  jakllsch     EfiBusMasterCommonBuffer
    614      1.1  jakllsch } EFI_IO_OPERATION_TYPE;
    615      1.1  jakllsch 
    616      1.1  jakllsch typedef
    617      1.1  jakllsch EFI_STATUS
    618      1.1  jakllsch (EFIAPI *EFI_IO_MAP) (
    619  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This,
    620      1.1  jakllsch     IN EFI_IO_OPERATION_TYPE            Operation,
    621      1.1  jakllsch     IN EFI_PHYSICAL_ADDRESS             *HostAddress,
    622      1.1  jakllsch     IN OUT UINTN                        *NumberOfBytes,
    623      1.1  jakllsch     OUT EFI_PHYSICAL_ADDRESS            *DeviceAddress,
    624      1.1  jakllsch     OUT VOID                            **Mapping
    625      1.1  jakllsch     );
    626      1.1  jakllsch 
    627      1.1  jakllsch typedef
    628      1.1  jakllsch EFI_STATUS
    629      1.1  jakllsch (EFIAPI *EFI_IO_UNMAP) (
    630  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This,
    631      1.1  jakllsch     IN VOID                             *Mapping
    632      1.1  jakllsch     );
    633      1.1  jakllsch 
    634      1.1  jakllsch typedef
    635      1.1  jakllsch EFI_STATUS
    636      1.1  jakllsch (EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
    637  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This,
    638      1.1  jakllsch     IN EFI_ALLOCATE_TYPE                Type,
    639      1.1  jakllsch     IN EFI_MEMORY_TYPE                  MemoryType,
    640      1.1  jakllsch     IN UINTN                            Pages,
    641      1.1  jakllsch     IN OUT EFI_PHYSICAL_ADDRESS         *HostAddress
    642      1.1  jakllsch     );
    643      1.1  jakllsch 
    644      1.1  jakllsch typedef
    645      1.1  jakllsch EFI_STATUS
    646      1.1  jakllsch (EFIAPI *EFI_IO_FLUSH) (
    647  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This
    648      1.1  jakllsch     );
    649      1.1  jakllsch 
    650      1.1  jakllsch typedef
    651      1.1  jakllsch EFI_STATUS
    652      1.1  jakllsch (EFIAPI *EFI_IO_FREE_BUFFER) (
    653  1.1.1.2  jmcneill     IN struct _EFI_DEVICE_IO_PROTOCOL   *This,
    654      1.1  jakllsch     IN UINTN                            Pages,
    655      1.1  jakllsch     IN EFI_PHYSICAL_ADDRESS             HostAddress
    656      1.1  jakllsch     );
    657      1.1  jakllsch 
    658  1.1.1.2  jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL {
    659      1.1  jakllsch     EFI_IO_ACCESS                       Mem;
    660      1.1  jakllsch     EFI_IO_ACCESS                       Io;
    661      1.1  jakllsch     EFI_IO_ACCESS                       Pci;
    662      1.1  jakllsch     EFI_IO_MAP                          Map;
    663      1.1  jakllsch     EFI_PCI_DEVICE_PATH                 PciDevicePath;
    664      1.1  jakllsch     EFI_IO_UNMAP                        Unmap;
    665      1.1  jakllsch     EFI_IO_ALLOCATE_BUFFER              AllocateBuffer;
    666      1.1  jakllsch     EFI_IO_FLUSH                        Flush;
    667      1.1  jakllsch     EFI_IO_FREE_BUFFER                  FreeBuffer;
    668  1.1.1.2  jmcneill } EFI_DEVICE_IO_PROTOCOL;
    669      1.1  jakllsch 
    670  1.1.1.2  jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE;
    671  1.1.1.2  jmcneill typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE;
    672      1.1  jakllsch 
    673      1.1  jakllsch //
    674      1.1  jakllsch // Unicode Collation protocol
    675      1.1  jakllsch //
    676      1.1  jakllsch 
    677  1.1.1.2  jmcneill #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
    678      1.1  jakllsch     { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc,  0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    679  1.1.1.2  jmcneill #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID
    680      1.1  jakllsch 
    681  1.1.1.2  jmcneill #define EFI_UNICODE_BYTE_ORDER_MARK       (CHAR16)(0xfeff)
    682  1.1.1.2  jmcneill #define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK
    683      1.1  jakllsch 
    684  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL);
    685      1.1  jakllsch 
    686      1.1  jakllsch typedef
    687      1.1  jakllsch INTN
    688      1.1  jakllsch (EFIAPI *EFI_UNICODE_STRICOLL) (
    689  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    690      1.1  jakllsch     IN CHAR16                         *s1,
    691      1.1  jakllsch     IN CHAR16                         *s2
    692      1.1  jakllsch     );
    693      1.1  jakllsch 
    694      1.1  jakllsch typedef
    695      1.1  jakllsch BOOLEAN
    696      1.1  jakllsch (EFIAPI *EFI_UNICODE_METAIMATCH) (
    697  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    698      1.1  jakllsch     IN CHAR16                         *String,
    699      1.1  jakllsch     IN CHAR16                         *Pattern
    700      1.1  jakllsch     );
    701      1.1  jakllsch 
    702      1.1  jakllsch typedef
    703      1.1  jakllsch VOID
    704      1.1  jakllsch (EFIAPI *EFI_UNICODE_STRLWR) (
    705  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    706      1.1  jakllsch     IN OUT CHAR16                       *Str
    707      1.1  jakllsch     );
    708      1.1  jakllsch 
    709      1.1  jakllsch typedef
    710      1.1  jakllsch VOID
    711      1.1  jakllsch (EFIAPI *EFI_UNICODE_STRUPR) (
    712  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    713      1.1  jakllsch     IN OUT CHAR16                       *Str
    714      1.1  jakllsch     );
    715      1.1  jakllsch 
    716      1.1  jakllsch typedef
    717      1.1  jakllsch VOID
    718      1.1  jakllsch (EFIAPI *EFI_UNICODE_FATTOSTR) (
    719  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    720      1.1  jakllsch     IN UINTN                            FatSize,
    721      1.1  jakllsch     IN CHAR8                            *Fat,
    722      1.1  jakllsch     OUT CHAR16                          *String
    723      1.1  jakllsch     );
    724      1.1  jakllsch 
    725      1.1  jakllsch typedef
    726      1.1  jakllsch BOOLEAN
    727      1.1  jakllsch (EFIAPI *EFI_UNICODE_STRTOFAT) (
    728  1.1.1.2  jmcneill     IN struct _EFI_UNICODE_COLLATION_PROTOCOL  *This,
    729      1.1  jakllsch     IN CHAR16                           *String,
    730      1.1  jakllsch     IN UINTN                            FatSize,
    731      1.1  jakllsch     OUT CHAR8                           *Fat
    732      1.1  jakllsch     );
    733      1.1  jakllsch 
    734  1.1.1.2  jmcneill //
    735  1.1.1.2  jmcneill // Hash Protocol
    736  1.1.1.2  jmcneill //
    737  1.1.1.2  jmcneill #define EFI_HASH_PROTOCOL_GUID \
    738  1.1.1.2  jmcneill   { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } }
    739  1.1.1.2  jmcneill #define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID
    740  1.1.1.2  jmcneill 
    741  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA1_GUID \
    742  1.1.1.2  jmcneill   { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated
    743  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID
    744  1.1.1.2  jmcneill 
    745  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA224_GUID \
    746  1.1.1.2  jmcneill   { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated
    747  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID
    748  1.1.1.2  jmcneill 
    749  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA256_GUID \
    750  1.1.1.2  jmcneill   { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated
    751  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID
    752  1.1.1.2  jmcneill 
    753  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA384_GUID \
    754  1.1.1.2  jmcneill   { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated
    755  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID
    756  1.1.1.2  jmcneill 
    757  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA512_GUID \
    758  1.1.1.2  jmcneill   { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated
    759  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID
    760      1.1  jakllsch 
    761  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_MD5_GUID \
    762  1.1.1.2  jmcneill   { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated
    763  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID
    764  1.1.1.2  jmcneill 
    765  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \
    766  1.1.1.2  jmcneill   { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } }
    767  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID
    768  1.1.1.2  jmcneill 
    769  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \
    770  1.1.1.2  jmcneill   { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } }
    771  1.1.1.2  jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID
    772  1.1.1.2  jmcneill 
    773  1.1.1.2  jmcneill 
    774  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_HASH_PROTOCOL);
    775  1.1.1.2  jmcneill 
    776  1.1.1.2  jmcneill typedef UINT8 EFI_MD5_HASH[16];
    777  1.1.1.2  jmcneill typedef UINT8 EFI_SHA1_HASH[20];
    778  1.1.1.2  jmcneill typedef UINT8 EFI_SHA224_HASH[28];
    779  1.1.1.2  jmcneill typedef UINT8 EFI_SHA256_HASH[32];
    780  1.1.1.2  jmcneill typedef UINT8 EFI_SHA384_HASH[48];
    781  1.1.1.2  jmcneill typedef UINT8 EFI_SHA512_HASH[64];
    782  1.1.1.2  jmcneill typedef union _EFI_HASH_OUTPUT {
    783  1.1.1.2  jmcneill   EFI_MD5_HASH                    *Md5Hash;
    784  1.1.1.2  jmcneill   EFI_SHA1_HASH                   *Sha1Hash;
    785  1.1.1.2  jmcneill   EFI_SHA224_HASH                 *Sha224Hash;
    786  1.1.1.2  jmcneill   EFI_SHA256_HASH                 *Sha256Hash;
    787  1.1.1.2  jmcneill   EFI_SHA384_HASH                 *Sha384Hash;
    788  1.1.1.2  jmcneill   EFI_SHA512_HASH                 *Sha512Hash;
    789  1.1.1.2  jmcneill } EFI_HASH_OUTPUT;
    790  1.1.1.2  jmcneill 
    791  1.1.1.2  jmcneill typedef
    792  1.1.1.2  jmcneill EFI_STATUS
    793  1.1.1.2  jmcneill (EFIAPI *EFI_HASH_GET_HASH_SIZE) (
    794  1.1.1.2  jmcneill   IN CONST struct _EFI_HASH_PROTOCOL  *This,
    795  1.1.1.2  jmcneill   IN CONST EFI_GUID               *HashAlgorithm,
    796  1.1.1.2  jmcneill   OUT UINTN                       *HashSize);
    797  1.1.1.2  jmcneill 
    798  1.1.1.2  jmcneill typedef
    799  1.1.1.2  jmcneill EFI_STATUS
    800  1.1.1.2  jmcneill (EFIAPI *EFI_HASH_HASH) (
    801  1.1.1.2  jmcneill   IN CONST struct _EFI_HASH_PROTOCOL  *This,
    802  1.1.1.2  jmcneill   IN CONST EFI_GUID               *HashAlgorithm,
    803  1.1.1.2  jmcneill   IN BOOLEAN                      Extend,
    804  1.1.1.2  jmcneill   IN CONST UINT8                  *Message,
    805  1.1.1.2  jmcneill   IN UINT64                       MessageSize,
    806  1.1.1.2  jmcneill   IN OUT EFI_HASH_OUTPUT          *Hash);
    807  1.1.1.2  jmcneill 
    808  1.1.1.2  jmcneill typedef struct _EFI_HASH_PROTOCOL {
    809  1.1.1.2  jmcneill   EFI_HASH_GET_HASH_SIZE                  GetHashSize;
    810  1.1.1.2  jmcneill   EFI_HASH_HASH                           Hash;
    811  1.1.1.2  jmcneill } EFI_HASH_PROTOCOL;
    812  1.1.1.2  jmcneill 
    813  1.1.1.2  jmcneill typedef struct _EFI_HASH_PROTOCOL _EFI_HASH;
    814  1.1.1.2  jmcneill typedef EFI_HASH_PROTOCOL EFI_HASH;
    815  1.1.1.2  jmcneill 
    816  1.1.1.2  jmcneill 
    817  1.1.1.2  jmcneill typedef struct _EFI_UNICODE_COLLATION_PROTOCOL {
    818      1.1  jakllsch 
    819      1.1  jakllsch     // general
    820      1.1  jakllsch     EFI_UNICODE_STRICOLL                StriColl;
    821      1.1  jakllsch     EFI_UNICODE_METAIMATCH              MetaiMatch;
    822      1.1  jakllsch     EFI_UNICODE_STRLWR                  StrLwr;
    823      1.1  jakllsch     EFI_UNICODE_STRUPR                  StrUpr;
    824      1.1  jakllsch 
    825      1.1  jakllsch     // for supporting fat volumes
    826      1.1  jakllsch     EFI_UNICODE_FATTOSTR                FatToStr;
    827      1.1  jakllsch     EFI_UNICODE_STRTOFAT                StrToFat;
    828      1.1  jakllsch 
    829      1.1  jakllsch     CHAR8                               *SupportedLanguages;
    830  1.1.1.2  jmcneill } EFI_UNICODE_COLLATION_PROTOCOL;
    831  1.1.1.2  jmcneill 
    832  1.1.1.2  jmcneill typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE;
    833      1.1  jakllsch 
    834      1.1  jakllsch /* Graphics output protocol */
    835      1.1  jakllsch #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
    836  1.1.1.2  jmcneill    { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } }
    837      1.1  jakllsch typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
    838      1.1  jakllsch 
    839      1.1  jakllsch typedef struct {
    840      1.1  jakllsch   UINT32            RedMask;
    841      1.1  jakllsch   UINT32            GreenMask;
    842      1.1  jakllsch   UINT32            BlueMask;
    843      1.1  jakllsch   UINT32            ReservedMask;
    844      1.1  jakllsch } EFI_PIXEL_BITMASK;
    845      1.1  jakllsch 
    846      1.1  jakllsch typedef enum {
    847      1.1  jakllsch   PixelRedGreenBlueReserved8BitPerColor,
    848      1.1  jakllsch   PixelBlueGreenRedReserved8BitPerColor,
    849      1.1  jakllsch   PixelBitMask,
    850      1.1  jakllsch   PixelBltOnly,
    851      1.1  jakllsch   PixelFormatMax
    852      1.1  jakllsch } EFI_GRAPHICS_PIXEL_FORMAT;
    853      1.1  jakllsch 
    854      1.1  jakllsch typedef struct {
    855      1.1  jakllsch   UINT32                     Version;
    856      1.1  jakllsch   UINT32                     HorizontalResolution;
    857      1.1  jakllsch   UINT32                     VerticalResolution;
    858      1.1  jakllsch   EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;
    859      1.1  jakllsch   EFI_PIXEL_BITMASK          PixelInformation;
    860      1.1  jakllsch   UINT32                     PixelsPerScanLine;
    861      1.1  jakllsch } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
    862      1.1  jakllsch 
    863      1.1  jakllsch /**
    864      1.1  jakllsch   Return the current video mode information.
    865      1.1  jakllsch 
    866      1.1  jakllsch   @param  This       Protocol instance pointer.
    867      1.1  jakllsch   @param  ModeNumber The mode number to return information on.
    868      1.1  jakllsch   @param  SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
    869      1.1  jakllsch   @param  Info       A pointer to callee allocated buffer that returns information about ModeNumber.
    870      1.1  jakllsch 
    871      1.1  jakllsch   @retval EFI_SUCCESS           Mode information returned.
    872      1.1  jakllsch   @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.
    873      1.1  jakllsch   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.
    874      1.1  jakllsch   @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()
    875      1.1  jakllsch   @retval EFI_INVALID_PARAMETER One of the input args was NULL.
    876      1.1  jakllsch 
    877      1.1  jakllsch **/
    878      1.1  jakllsch typedef
    879      1.1  jakllsch EFI_STATUS
    880      1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
    881      1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
    882      1.1  jakllsch   IN  UINT32                                ModeNumber,
    883      1.1  jakllsch   OUT UINTN                                 *SizeOfInfo,
    884      1.1  jakllsch   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info
    885      1.1  jakllsch   )
    886      1.1  jakllsch ;
    887      1.1  jakllsch 
    888      1.1  jakllsch /**
    889      1.1  jakllsch   Return the current video mode information.
    890      1.1  jakllsch 
    891      1.1  jakllsch   @param  This              Protocol instance pointer.
    892      1.1  jakllsch   @param  ModeNumber        The mode number to be set.
    893      1.1  jakllsch 
    894      1.1  jakllsch   @retval EFI_SUCCESS       Graphics mode was changed.
    895      1.1  jakllsch   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
    896      1.1  jakllsch   @retval EFI_UNSUPPORTED   ModeNumber is not supported by this device.
    897      1.1  jakllsch 
    898      1.1  jakllsch **/
    899      1.1  jakllsch typedef
    900      1.1  jakllsch EFI_STATUS
    901      1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
    902      1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
    903      1.1  jakllsch   IN  UINT32                       ModeNumber
    904      1.1  jakllsch   );
    905      1.1  jakllsch 
    906      1.1  jakllsch typedef struct {
    907      1.1  jakllsch   UINT8 Blue;
    908      1.1  jakllsch   UINT8 Green;
    909      1.1  jakllsch   UINT8 Red;
    910      1.1  jakllsch   UINT8 Reserved;
    911      1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
    912      1.1  jakllsch 
    913      1.1  jakllsch typedef union {
    914      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
    915      1.1  jakllsch   UINT32                        Raw;
    916      1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
    917      1.1  jakllsch 
    918      1.1  jakllsch typedef enum {
    919      1.1  jakllsch   EfiBltVideoFill,
    920      1.1  jakllsch   EfiBltVideoToBltBuffer,
    921  1.1.1.2  jmcneill   EfiBltBufferToVideo,
    922      1.1  jakllsch   EfiBltVideoToVideo,
    923      1.1  jakllsch   EfiGraphicsOutputBltOperationMax
    924      1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
    925      1.1  jakllsch 
    926      1.1  jakllsch /**
    927      1.1  jakllsch   The following table defines actions for BltOperations:
    928      1.1  jakllsch 
    929  1.1.1.2  jmcneill   <B>EfiBltVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY)
    930  1.1.1.2  jmcneill   directly to every pixel of the video display rectangle
    931  1.1.1.2  jmcneill   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
    932      1.1  jakllsch   Only one pixel will be used from the BltBuffer. Delta is NOT used.
    933      1.1  jakllsch 
    934  1.1.1.2  jmcneill   <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
    935  1.1.1.2  jmcneill   (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
    936  1.1.1.2  jmcneill   the BltBuffer rectangle (DestinationX, DestinationY )
    937  1.1.1.2  jmcneill   (DestinationX + Width, DestinationY + Height). If DestinationX or
    938  1.1.1.2  jmcneill   DestinationY is not zero then Delta must be set to the length in bytes
    939      1.1  jakllsch   of a row in the BltBuffer.
    940      1.1  jakllsch 
    941  1.1.1.2  jmcneill   <B>EfiBltBufferToVideo</B> - Write data from the  BltBuffer rectangle
    942  1.1.1.2  jmcneill   (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
    943  1.1.1.2  jmcneill   video display rectangle (DestinationX, DestinationY)
    944  1.1.1.2  jmcneill   (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
    945  1.1.1.2  jmcneill   not zero then Delta must be set to the length in bytes of a row in the
    946      1.1  jakllsch   BltBuffer.
    947      1.1  jakllsch 
    948      1.1  jakllsch   <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
    949  1.1.1.2  jmcneill   (SourceX + Width, SourceY + Height) .to the video display rectangle
    950  1.1.1.2  jmcneill   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
    951      1.1  jakllsch   The BltBuffer and Delta  are not used in this mode.
    952      1.1  jakllsch 
    953      1.1  jakllsch   @param  This         Protocol instance pointer.
    954      1.1  jakllsch   @param  BltBuffer    Buffer containing data to blit into video buffer. This
    955      1.1  jakllsch                        buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
    956      1.1  jakllsch   @param  BltOperation Operation to perform on BlitBuffer and video memory
    957      1.1  jakllsch   @param  SourceX      X coordinate of source for the BltBuffer.
    958      1.1  jakllsch   @param  SourceY      Y coordinate of source for the BltBuffer.
    959      1.1  jakllsch   @param  DestinationX X coordinate of destination for the BltBuffer.
    960      1.1  jakllsch   @param  DestinationY Y coordinate of destination for the BltBuffer.
    961      1.1  jakllsch   @param  Width        Width of rectangle in BltBuffer in pixels.
    962      1.1  jakllsch   @param  Height       Hight of rectangle in BltBuffer in pixels.
    963      1.1  jakllsch   @param  Delta        OPTIONAL
    964      1.1  jakllsch 
    965      1.1  jakllsch   @retval EFI_SUCCESS           The Blt operation completed.
    966      1.1  jakllsch   @retval EFI_INVALID_PARAMETER BltOperation is not valid.
    967      1.1  jakllsch   @retval EFI_DEVICE_ERROR      A hardware error occured writting to the video buffer.
    968      1.1  jakllsch 
    969      1.1  jakllsch **/
    970      1.1  jakllsch typedef
    971      1.1  jakllsch EFI_STATUS
    972      1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
    973      1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL            *This,
    974      1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer,   OPTIONAL
    975      1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION       BltOperation,
    976      1.1  jakllsch   IN  UINTN                                   SourceX,
    977      1.1  jakllsch   IN  UINTN                                   SourceY,
    978      1.1  jakllsch   IN  UINTN                                   DestinationX,
    979      1.1  jakllsch   IN  UINTN                                   DestinationY,
    980      1.1  jakllsch   IN  UINTN                                   Width,
    981      1.1  jakllsch   IN  UINTN                                   Height,
    982      1.1  jakllsch   IN  UINTN                                   Delta         OPTIONAL
    983      1.1  jakllsch   );
    984      1.1  jakllsch 
    985      1.1  jakllsch typedef struct {
    986      1.1  jakllsch   UINT32                                 MaxMode;
    987      1.1  jakllsch   UINT32                                 Mode;
    988      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;
    989      1.1  jakllsch   UINTN                                  SizeOfInfo;
    990      1.1  jakllsch   EFI_PHYSICAL_ADDRESS                   FrameBufferBase;
    991      1.1  jakllsch   UINTN                                  FrameBufferSize;
    992      1.1  jakllsch } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
    993      1.1  jakllsch 
    994      1.1  jakllsch struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
    995      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE  QueryMode;
    996      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE    SetMode;
    997      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT         Blt;
    998      1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE        *Mode;
    999      1.1  jakllsch };
   1000      1.1  jakllsch 
   1001  1.1.1.2  jmcneill 
   1002  1.1.1.2  jmcneill 
   1003  1.1.1.2  jmcneill /*
   1004  1.1.1.2  jmcneill  * EFI EDID Discovered Protocol
   1005  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 11.9
   1006  1.1.1.2  jmcneill  */
   1007  1.1.1.2  jmcneill #define EFI_EDID_DISCOVERED_PROTOCOL_GUID \
   1008  1.1.1.2  jmcneill     { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} }
   1009  1.1.1.2  jmcneill 
   1010  1.1.1.2  jmcneill typedef struct _EFI_EDID_DISCOVERED_PROTOCOL {
   1011  1.1.1.2  jmcneill     UINT32   SizeOfEdid;
   1012  1.1.1.2  jmcneill     UINT8   *Edid;
   1013  1.1.1.2  jmcneill } EFI_EDID_DISCOVERED_PROTOCOL;
   1014  1.1.1.2  jmcneill 
   1015  1.1.1.2  jmcneill 
   1016  1.1.1.2  jmcneill 
   1017  1.1.1.2  jmcneill /*
   1018  1.1.1.2  jmcneill  * EFI EDID Active Protocol
   1019  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 11.9
   1020  1.1.1.2  jmcneill  */
   1021  1.1.1.2  jmcneill #define EFI_EDID_ACTIVE_PROTOCOL_GUID \
   1022  1.1.1.2  jmcneill     { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} }
   1023  1.1.1.2  jmcneill 
   1024  1.1.1.2  jmcneill typedef struct _EFI_EDID_ACTIVE_PROTOCOL {
   1025  1.1.1.2  jmcneill     UINT32   SizeOfEdid;
   1026  1.1.1.2  jmcneill     UINT8   *Edid;
   1027  1.1.1.2  jmcneill } EFI_EDID_ACTIVE_PROTOCOL;
   1028  1.1.1.2  jmcneill 
   1029  1.1.1.2  jmcneill 
   1030  1.1.1.2  jmcneill 
   1031  1.1.1.2  jmcneill /*
   1032  1.1.1.2  jmcneill  * EFI EDID Override Protocol
   1033  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 11.9
   1034  1.1.1.2  jmcneill  */
   1035  1.1.1.2  jmcneill #define EFI_EDID_OVERRIDE_PROTOCOL_GUID \
   1036  1.1.1.2  jmcneill     { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} }
   1037  1.1.1.2  jmcneill 
   1038  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL);
   1039  1.1.1.2  jmcneill 
   1040  1.1.1.2  jmcneill typedef
   1041  1.1.1.2  jmcneill EFI_STATUS
   1042  1.1.1.2  jmcneill (EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID) (
   1043  1.1.1.2  jmcneill   IN      struct _EFI_EDID_OVERRIDE_PROTOCOL   *This,
   1044  1.1.1.2  jmcneill   IN      EFI_HANDLE                           *ChildHandle,
   1045  1.1.1.2  jmcneill   OUT     UINT32                               *Attributes,
   1046  1.1.1.2  jmcneill   IN OUT  UINTN                                *EdidSize,
   1047  1.1.1.2  jmcneill   IN OUT  UINT8                               **Edid);
   1048  1.1.1.2  jmcneill 
   1049  1.1.1.2  jmcneill typedef struct _EFI_EDID_OVERRIDE_PROTOCOL {
   1050  1.1.1.2  jmcneill     EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID  GetEdid;
   1051  1.1.1.2  jmcneill } EFI_EDID_OVERRIDE_PROTOCOL;
   1052  1.1.1.2  jmcneill 
   1053  1.1.1.2  jmcneill 
   1054  1.1.1.2  jmcneill 
   1055      1.1  jakllsch INTERFACE_DECL(_EFI_SERVICE_BINDING);
   1056      1.1  jakllsch 
   1057      1.1  jakllsch typedef
   1058      1.1  jakllsch EFI_STATUS
   1059      1.1  jakllsch (EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) (
   1060      1.1  jakllsch     IN struct _EFI_SERVICE_BINDING *This,
   1061      1.1  jakllsch     IN EFI_HANDLE                  *ChildHandle
   1062      1.1  jakllsch     );
   1063      1.1  jakllsch 
   1064      1.1  jakllsch typedef
   1065      1.1  jakllsch EFI_STATUS
   1066      1.1  jakllsch (EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) (
   1067      1.1  jakllsch     IN struct _EFI_SERVICE_BINDING *This,
   1068      1.1  jakllsch     IN EFI_HANDLE                  ChildHandle
   1069      1.1  jakllsch     );
   1070      1.1  jakllsch 
   1071      1.1  jakllsch typedef struct _EFI_SERVICE_BINDING {
   1072      1.1  jakllsch     EFI_SERVICE_BINDING_CREATE_CHILD  CreateChild;
   1073      1.1  jakllsch     EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild;
   1074      1.1  jakllsch } EFI_SERVICE_BINDING;
   1075      1.1  jakllsch 
   1076      1.1  jakllsch 
   1077  1.1.1.2  jmcneill 
   1078  1.1.1.2  jmcneill /*
   1079  1.1.1.2  jmcneill  * EFI Driver Binding Protocol
   1080  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 10.1
   1081  1.1.1.2  jmcneill  */
   1082  1.1.1.2  jmcneill #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
   1083  1.1.1.2  jmcneill     { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} }
   1084  1.1.1.2  jmcneill #define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID
   1085  1.1.1.2  jmcneill 
   1086  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL);
   1087  1.1.1.2  jmcneill 
   1088  1.1.1.2  jmcneill typedef
   1089  1.1.1.2  jmcneill EFI_STATUS
   1090  1.1.1.2  jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED) (
   1091  1.1.1.2  jmcneill   IN      struct _EFI_DRIVER_BINDING_PROTOCOL *This,
   1092  1.1.1.2  jmcneill   IN      EFI_HANDLE                          ControllerHandle,
   1093  1.1.1.2  jmcneill   IN      EFI_DEVICE_PATH                     *RemainingDevicePath OPTIONAL);
   1094  1.1.1.2  jmcneill 
   1095  1.1.1.2  jmcneill typedef
   1096  1.1.1.2  jmcneill EFI_STATUS
   1097  1.1.1.2  jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START) (
   1098  1.1.1.2  jmcneill   IN      struct _EFI_DRIVER_BINDING_PROTOCOL *This,
   1099  1.1.1.2  jmcneill   IN      EFI_HANDLE                          ControllerHandle,
   1100  1.1.1.2  jmcneill   IN      EFI_DEVICE_PATH                     *RemainingDevicePath OPTIONAL);
   1101  1.1.1.2  jmcneill 
   1102  1.1.1.2  jmcneill typedef
   1103  1.1.1.2  jmcneill EFI_STATUS
   1104  1.1.1.2  jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP) (
   1105  1.1.1.2  jmcneill   IN      struct _EFI_DRIVER_BINDING_PROTOCOL *This,
   1106  1.1.1.2  jmcneill   IN      EFI_HANDLE                          ControllerHandle,
   1107  1.1.1.2  jmcneill   IN      UINTN                               NumberOfChildren,
   1108  1.1.1.2  jmcneill   IN      EFI_HANDLE                          *ChildHandleBuffer OPTIONAL);
   1109  1.1.1.2  jmcneill 
   1110  1.1.1.2  jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL {
   1111  1.1.1.2  jmcneill   EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED       Supported;
   1112  1.1.1.2  jmcneill   EFI_DRIVER_BINDING_PROTOCOL_START           Start;
   1113  1.1.1.2  jmcneill   EFI_DRIVER_BINDING_PROTOCOL_STOP            Stop;
   1114  1.1.1.2  jmcneill   UINT32                                      Version;
   1115  1.1.1.2  jmcneill   EFI_HANDLE                                  ImageHandle;
   1116  1.1.1.2  jmcneill   EFI_HANDLE                                  DriverBindingHandle;
   1117  1.1.1.2  jmcneill } EFI_DRIVER_BINDING_PROTOCOL;
   1118  1.1.1.2  jmcneill 
   1119  1.1.1.2  jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING;
   1120  1.1.1.2  jmcneill typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING;
   1121  1.1.1.2  jmcneill 
   1122  1.1.1.2  jmcneill 
   1123  1.1.1.2  jmcneill /*
   1124  1.1.1.2  jmcneill  * Backwards compatibility with older GNU-EFI versions. Deprecated.
   1125  1.1.1.2  jmcneill  */
   1126  1.1.1.2  jmcneill #define EFI_DRIVER_SUPPORTED         EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED
   1127  1.1.1.2  jmcneill #define EFI_DRIVER_START             EFI_DRIVER_BINDING_PROTOCOL_START
   1128  1.1.1.2  jmcneill #define EFI_DRIVER_STOP              EFI_DRIVER_BINDING_PROTOCOL_STOP
   1129  1.1.1.2  jmcneill 
   1130  1.1.1.2  jmcneill 
   1131  1.1.1.2  jmcneill 
   1132  1.1.1.2  jmcneill /*
   1133  1.1.1.2  jmcneill  * EFI Component Name Protocol
   1134  1.1.1.2  jmcneill  * Deprecated - use EFI Component Name 2 Protocol instead
   1135  1.1.1.2  jmcneill  */
   1136  1.1.1.2  jmcneill #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
   1137  1.1.1.2  jmcneill     {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
   1138  1.1.1.2  jmcneill #define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID
   1139  1.1.1.2  jmcneill 
   1140  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL);
   1141  1.1.1.2  jmcneill 
   1142  1.1.1.2  jmcneill typedef
   1143  1.1.1.2  jmcneill EFI_STATUS
   1144  1.1.1.2  jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) (
   1145  1.1.1.2  jmcneill   IN      struct _EFI_COMPONENT_NAME_PROTOCOL   *This,
   1146  1.1.1.2  jmcneill   IN      CHAR8                                 *Language,
   1147  1.1.1.2  jmcneill   OUT     CHAR16                                **DriverName);
   1148  1.1.1.2  jmcneill 
   1149  1.1.1.2  jmcneill typedef
   1150  1.1.1.2  jmcneill EFI_STATUS
   1151  1.1.1.2  jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) (
   1152  1.1.1.2  jmcneill   IN      struct _EFI_COMPONENT_NAME_PROTOCOL   *This,
   1153  1.1.1.2  jmcneill   IN      EFI_HANDLE                            ControllerHandle,
   1154  1.1.1.2  jmcneill   IN      EFI_HANDLE                            ChildHandle OPTIONAL,
   1155  1.1.1.2  jmcneill   IN      CHAR8                                 *Language,
   1156  1.1.1.2  jmcneill   OUT     CHAR16                                **ControllerName);
   1157  1.1.1.2  jmcneill 
   1158  1.1.1.2  jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL {
   1159  1.1.1.2  jmcneill   EFI_COMPONENT_NAME_GET_DRIVER_NAME      GetDriverName;
   1160  1.1.1.2  jmcneill   EFI_COMPONENT_NAME_GET_CONTROLLER_NAME  GetControllerName;
   1161  1.1.1.2  jmcneill   CHAR8                                   *SupportedLanguages;
   1162  1.1.1.2  jmcneill } EFI_COMPONENT_NAME_PROTOCOL;
   1163  1.1.1.2  jmcneill 
   1164  1.1.1.2  jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME;
   1165  1.1.1.2  jmcneill typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME;
   1166  1.1.1.2  jmcneill 
   1167  1.1.1.2  jmcneill 
   1168  1.1.1.2  jmcneill /*
   1169  1.1.1.2  jmcneill  * EFI Component Name 2 Protocol
   1170  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 10.5
   1171  1.1.1.2  jmcneill  */
   1172  1.1.1.2  jmcneill #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
   1173  1.1.1.2  jmcneill     {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} }
   1174  1.1.1.2  jmcneill #define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID
   1175  1.1.1.2  jmcneill 
   1176  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL);
   1177  1.1.1.2  jmcneill 
   1178  1.1.1.2  jmcneill typedef
   1179  1.1.1.2  jmcneill EFI_STATUS
   1180  1.1.1.2  jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) (
   1181  1.1.1.2  jmcneill   IN      struct _EFI_COMPONENT_NAME2_PROTOCOL   *This,
   1182  1.1.1.2  jmcneill   IN      CHAR8                                  *Language,
   1183  1.1.1.2  jmcneill   OUT     CHAR16                                 **DriverName);
   1184  1.1.1.2  jmcneill 
   1185  1.1.1.2  jmcneill typedef
   1186  1.1.1.2  jmcneill EFI_STATUS
   1187  1.1.1.2  jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) (
   1188  1.1.1.2  jmcneill   IN      struct _EFI_COMPONENT_NAME2_PROTOCOL   *This,
   1189  1.1.1.2  jmcneill   IN      EFI_HANDLE                             ControllerHandle,
   1190  1.1.1.2  jmcneill   IN      EFI_HANDLE                             ChildHandle OPTIONAL,
   1191  1.1.1.2  jmcneill   IN      CHAR8                                  *Language,
   1192  1.1.1.2  jmcneill   OUT     CHAR16                                 **ControllerName);
   1193  1.1.1.2  jmcneill 
   1194  1.1.1.2  jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL {
   1195  1.1.1.2  jmcneill   EFI_COMPONENT_NAME2_GET_DRIVER_NAME       GetDriverName;
   1196  1.1.1.2  jmcneill   EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME   GetControllerName;
   1197  1.1.1.2  jmcneill   CHAR8                                     *SupportedLanguages;
   1198  1.1.1.2  jmcneill } EFI_COMPONENT_NAME2_PROTOCOL;
   1199  1.1.1.2  jmcneill 
   1200  1.1.1.2  jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2;
   1201  1.1.1.2  jmcneill typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2;
   1202  1.1.1.2  jmcneill 
   1203  1.1.1.2  jmcneill 
   1204  1.1.1.2  jmcneill 
   1205  1.1.1.2  jmcneill /*
   1206  1.1.1.2  jmcneill  * EFI Loaded Image Protocol
   1207  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 8.1
   1208  1.1.1.2  jmcneill  */
   1209  1.1.1.2  jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_GUID \
   1210  1.1.1.2  jmcneill     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
   1211  1.1.1.2  jmcneill #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID
   1212  1.1.1.2  jmcneill 
   1213  1.1.1.2  jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_REVISION  0x1000
   1214  1.1.1.2  jmcneill #define EFI_IMAGE_INFORMATION_REVISION  EFI_LOADED_IMAGE_PROTOCOL_REVISION
   1215  1.1.1.2  jmcneill 
   1216  1.1.1.2  jmcneill typedef
   1217  1.1.1.2  jmcneill EFI_STATUS
   1218  1.1.1.2  jmcneill (EFIAPI *EFI_IMAGE_UNLOAD) (
   1219  1.1.1.2  jmcneill     IN EFI_HANDLE                   ImageHandle
   1220  1.1.1.2  jmcneill     );
   1221  1.1.1.2  jmcneill 
   1222  1.1.1.2  jmcneill typedef struct {
   1223  1.1.1.2  jmcneill     UINT32                          Revision;
   1224  1.1.1.2  jmcneill     EFI_HANDLE                      ParentHandle;
   1225  1.1.1.2  jmcneill     struct _EFI_SYSTEM_TABLE        *SystemTable;
   1226  1.1.1.2  jmcneill 
   1227  1.1.1.2  jmcneill     // Source location of image
   1228  1.1.1.2  jmcneill     EFI_HANDLE                      DeviceHandle;
   1229  1.1.1.2  jmcneill     EFI_DEVICE_PATH                 *FilePath;
   1230  1.1.1.2  jmcneill     VOID                            *Reserved;
   1231  1.1.1.2  jmcneill 
   1232  1.1.1.2  jmcneill     // Images load options
   1233  1.1.1.2  jmcneill     UINT32                          LoadOptionsSize;
   1234  1.1.1.2  jmcneill     VOID                            *LoadOptions;
   1235  1.1.1.2  jmcneill 
   1236  1.1.1.2  jmcneill     // Location of where image was loaded
   1237  1.1.1.2  jmcneill     VOID                            *ImageBase;
   1238  1.1.1.2  jmcneill     UINT64                          ImageSize;
   1239  1.1.1.2  jmcneill     EFI_MEMORY_TYPE                 ImageCodeType;
   1240  1.1.1.2  jmcneill     EFI_MEMORY_TYPE                 ImageDataType;
   1241  1.1.1.2  jmcneill 
   1242  1.1.1.2  jmcneill     // If the driver image supports a dynamic unload request
   1243  1.1.1.2  jmcneill     EFI_IMAGE_UNLOAD                Unload;
   1244  1.1.1.2  jmcneill } EFI_LOADED_IMAGE_PROTOCOL;
   1245  1.1.1.2  jmcneill 
   1246  1.1.1.2  jmcneill typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE;
   1247  1.1.1.2  jmcneill 
   1248  1.1.1.2  jmcneill 
   1249  1.1.1.2  jmcneill 
   1250  1.1.1.2  jmcneill /*
   1251  1.1.1.2  jmcneill  * Random Number Generator Protocol
   1252  1.1.1.2  jmcneill  * UEFI Specification Version 2.5 Section 35.5
   1253  1.1.1.2  jmcneill  */
   1254  1.1.1.2  jmcneill #define EFI_RNG_PROTOCOL_GUID                          \
   1255  1.1.1.2  jmcneill           { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} }
   1256  1.1.1.2  jmcneill 
   1257  1.1.1.2  jmcneill typedef EFI_GUID EFI_RNG_ALGORITHM;
   1258  1.1.1.2  jmcneill 
   1259  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID       \
   1260  1.1.1.2  jmcneill      {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} }
   1261  1.1.1.2  jmcneill 
   1262  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID       \
   1263  1.1.1.2  jmcneill      {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} }
   1264  1.1.1.2  jmcneill 
   1265  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID        \
   1266  1.1.1.2  jmcneill      {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} }
   1267  1.1.1.2  jmcneill 
   1268  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_X9_31_3DES_GUID              \
   1269  1.1.1.2  jmcneill      {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} }
   1270  1.1.1.2  jmcneill 
   1271  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_X9_31_AES_GUID               \
   1272  1.1.1.2  jmcneill      {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} }
   1273  1.1.1.2  jmcneill 
   1274  1.1.1.2  jmcneill #define EFI_RNG_ALGORITHM_RAW                          \
   1275  1.1.1.2  jmcneill      {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} }
   1276  1.1.1.2  jmcneill 
   1277  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_RNG_PROTOCOL);
   1278  1.1.1.2  jmcneill 
   1279  1.1.1.2  jmcneill typedef
   1280  1.1.1.2  jmcneill EFI_STATUS
   1281  1.1.1.2  jmcneill (EFIAPI *EFI_RNG_GET_INFO) (
   1282  1.1.1.2  jmcneill   IN      struct _EFI_RNG_PROTOCOL   *This,
   1283  1.1.1.2  jmcneill   IN OUT  UINTN                      *RNGAlgorithmListSize,
   1284  1.1.1.2  jmcneill   OUT     EFI_RNG_ALGORITHM          *RNGAlgorithmList
   1285  1.1.1.2  jmcneill );
   1286  1.1.1.2  jmcneill 
   1287  1.1.1.2  jmcneill typedef
   1288  1.1.1.2  jmcneill EFI_STATUS
   1289  1.1.1.2  jmcneill (EFIAPI *EFI_RNG_GET_RNG) (
   1290  1.1.1.2  jmcneill   IN      struct _EFI_RNG_PROTOCOL   *This,
   1291  1.1.1.2  jmcneill   IN      EFI_RNG_ALGORITHM          *RNGAlgorithm,           OPTIONAL
   1292  1.1.1.2  jmcneill   IN      UINTN                      RNGValueLength,
   1293  1.1.1.2  jmcneill   OUT     UINT8                      *RNGValue
   1294  1.1.1.2  jmcneill );
   1295  1.1.1.2  jmcneill 
   1296  1.1.1.2  jmcneill typedef struct _EFI_RNG_PROTOCOL {
   1297  1.1.1.2  jmcneill           EFI_RNG_GET_INFO           GetInfo;
   1298  1.1.1.2  jmcneill           EFI_RNG_GET_RNG            GetRNG;
   1299  1.1.1.2  jmcneill } EFI_RNG_PROTOCOL;
   1300  1.1.1.2  jmcneill 
   1301  1.1.1.2  jmcneill 
   1302  1.1.1.2  jmcneill //
   1303  1.1.1.2  jmcneill // EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
   1304  1.1.1.2  jmcneill //
   1305  1.1.1.2  jmcneill 
   1306  1.1.1.2  jmcneill #define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID          \
   1307  1.1.1.2  jmcneill           { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
   1308  1.1.1.2  jmcneill 
   1309  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL);
   1310  1.1.1.2  jmcneill 
   1311  1.1.1.2  jmcneill typedef
   1312  1.1.1.2  jmcneill EFI_STATUS
   1313  1.1.1.2  jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER) (
   1314  1.1.1.2  jmcneill IN      struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL  *This,
   1315  1.1.1.2  jmcneill IN      EFI_HANDLE                                      ControllerHandle,
   1316  1.1.1.2  jmcneill IN OUT  EFI_HANDLE                                     *DriverImageHandle);
   1317  1.1.1.2  jmcneill 
   1318  1.1.1.2  jmcneill typedef
   1319  1.1.1.2  jmcneill EFI_STATUS
   1320  1.1.1.2  jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH) (
   1321  1.1.1.2  jmcneill IN      struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL  *This,
   1322  1.1.1.2  jmcneill IN      EFI_HANDLE                                      ControllerHandle,
   1323  1.1.1.2  jmcneill IN OUT  EFI_DEVICE_PATH                               **DriverImagePath);
   1324  1.1.1.2  jmcneill 
   1325  1.1.1.2  jmcneill typedef
   1326  1.1.1.2  jmcneill EFI_STATUS
   1327  1.1.1.2  jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED) (
   1328  1.1.1.2  jmcneill IN      struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL  *This,
   1329  1.1.1.2  jmcneill IN      EFI_HANDLE                                      ControllerHandle,
   1330  1.1.1.2  jmcneill IN      EFI_DEVICE_PATH                                *DriverImagePath,
   1331  1.1.1.2  jmcneill IN      EFI_HANDLE                                      DriverImageHandle);
   1332  1.1.1.2  jmcneill 
   1333  1.1.1.2  jmcneill typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {
   1334  1.1.1.2  jmcneill   EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER       GetDriver;
   1335  1.1.1.2  jmcneill   EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH  GetDriverPath;
   1336  1.1.1.2  jmcneill   EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED    DriverLoaded;
   1337  1.1.1.2  jmcneill } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
   1338  1.1.1.2  jmcneill 
   1339  1.1.1.2  jmcneill //
   1340  1.1.1.2  jmcneill // EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
   1341  1.1.1.2  jmcneill //
   1342  1.1.1.2  jmcneill 
   1343  1.1.1.2  jmcneill #define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID          \
   1344  1.1.1.2  jmcneill           { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} }
   1345  1.1.1.2  jmcneill 
   1346  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL);
   1347  1.1.1.2  jmcneill 
   1348  1.1.1.2  jmcneill typedef
   1349  1.1.1.2  jmcneill EFI_STATUS
   1350  1.1.1.2  jmcneill (EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER) (
   1351  1.1.1.2  jmcneill IN      struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL  *This,
   1352  1.1.1.2  jmcneill IN OUT  EFI_HANDLE                                         *DriverImageHandle);
   1353  1.1.1.2  jmcneill 
   1354  1.1.1.2  jmcneill typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
   1355  1.1.1.2  jmcneill   EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER       GetDriver;
   1356  1.1.1.2  jmcneill } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
   1357  1.1.1.2  jmcneill 
   1358  1.1.1.2  jmcneill //
   1359  1.1.1.2  jmcneill // EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
   1360  1.1.1.2  jmcneill //
   1361  1.1.1.2  jmcneill 
   1362  1.1.1.2  jmcneill #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID          \
   1363  1.1.1.2  jmcneill           { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} }
   1364  1.1.1.2  jmcneill 
   1365  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL);
   1366  1.1.1.2  jmcneill 
   1367  1.1.1.2  jmcneill typedef
   1368  1.1.1.2  jmcneill UINT32
   1369  1.1.1.2  jmcneill (EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION) (
   1370  1.1.1.2  jmcneill IN      struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL  *This);
   1371  1.1.1.2  jmcneill 
   1372  1.1.1.2  jmcneill typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL {
   1373  1.1.1.2  jmcneill   EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION       GetVersion;
   1374  1.1.1.2  jmcneill } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL;
   1375  1.1.1.2  jmcneill 
   1376  1.1.1.2  jmcneill //
   1377  1.1.1.2  jmcneill // EFI_EBC_PROTOCOL
   1378  1.1.1.2  jmcneill //
   1379  1.1.1.2  jmcneill 
   1380  1.1.1.2  jmcneill #define EFI_EBC_INTERPRETER_PROTOCOL_GUID              \
   1381  1.1.1.2  jmcneill      {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} }
   1382  1.1.1.2  jmcneill 
   1383  1.1.1.2  jmcneill #define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
   1384  1.1.1.2  jmcneill 
   1385  1.1.1.2  jmcneill INTERFACE_DECL(_EFI_EBC_PROTOCOL);
   1386  1.1.1.2  jmcneill 
   1387  1.1.1.2  jmcneill typedef
   1388  1.1.1.2  jmcneill EFI_STATUS
   1389  1.1.1.2  jmcneill (EFIAPI *EFI_EBC_CREATE_THUNK)(
   1390  1.1.1.2  jmcneill   IN struct _EFI_EBC_PROTOCOL   *This,
   1391  1.1.1.2  jmcneill   IN EFI_HANDLE                 ImageHandle,
   1392  1.1.1.2  jmcneill   IN VOID                       *EbcEntryPoint,
   1393  1.1.1.2  jmcneill   OUT VOID                      **Thunk);
   1394  1.1.1.2  jmcneill 
   1395  1.1.1.2  jmcneill typedef
   1396  1.1.1.2  jmcneill EFI_STATUS
   1397  1.1.1.2  jmcneill (EFIAPI *EFI_EBC_UNLOAD_IMAGE)(
   1398  1.1.1.2  jmcneill   IN struct _EFI_EBC_PROTOCOL   *This,
   1399  1.1.1.2  jmcneill   IN EFI_HANDLE                 ImageHandle);
   1400  1.1.1.2  jmcneill 
   1401  1.1.1.2  jmcneill typedef
   1402  1.1.1.2  jmcneill EFI_STATUS
   1403  1.1.1.2  jmcneill (EFIAPI *EBC_ICACHE_FLUSH)(
   1404  1.1.1.2  jmcneill   IN EFI_PHYSICAL_ADDRESS       Start,
   1405  1.1.1.2  jmcneill   IN UINT64                     Length);
   1406  1.1.1.2  jmcneill 
   1407  1.1.1.2  jmcneill typedef
   1408  1.1.1.2  jmcneill EFI_STATUS
   1409  1.1.1.2  jmcneill (EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)(
   1410  1.1.1.2  jmcneill   IN struct _EFI_EBC_PROTOCOL   *This,
   1411  1.1.1.2  jmcneill   IN EBC_ICACHE_FLUSH           Flush);
   1412  1.1.1.2  jmcneill 
   1413  1.1.1.2  jmcneill typedef
   1414  1.1.1.2  jmcneill EFI_STATUS
   1415  1.1.1.2  jmcneill (EFIAPI *EFI_EBC_GET_VERSION)(
   1416  1.1.1.2  jmcneill   IN struct _EFI_EBC_PROTOCOL   *This,
   1417  1.1.1.2  jmcneill   IN OUT UINT64                 *Version);
   1418  1.1.1.2  jmcneill 
   1419  1.1.1.2  jmcneill typedef struct _EFI_EBC_PROTOCOL {
   1420  1.1.1.2  jmcneill   EFI_EBC_CREATE_THUNK          CreateThunk;
   1421  1.1.1.2  jmcneill   EFI_EBC_UNLOAD_IMAGE          UnloadImage;
   1422  1.1.1.2  jmcneill   EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush;
   1423  1.1.1.2  jmcneill   EFI_EBC_GET_VERSION           GetVersion;
   1424  1.1.1.2  jmcneill } EFI_EBC_PROTOCOL;
   1425  1.1.1.2  jmcneill 
   1426  1.1.1.2  jmcneill #endif
   1427