Home | History | Annotate | Line # | Download | only in inc
efiprot.h revision 1.1
      1  1.1  jakllsch /*	$NetBSD: efiprot.h,v 1.1 2014/04/01 16:16:07 jakllsch 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  jakllsch #define FPSWA_PROTOCOL          \
     28  1.1  jakllsch     { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
     29  1.1  jakllsch 
     30  1.1  jakllsch //
     31  1.1  jakllsch // Device Path protocol
     32  1.1  jakllsch //
     33  1.1  jakllsch 
     34  1.1  jakllsch #define DEVICE_PATH_PROTOCOL    \
     35  1.1  jakllsch     { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     36  1.1  jakllsch 
     37  1.1  jakllsch 
     38  1.1  jakllsch //
     39  1.1  jakllsch // Block IO protocol
     40  1.1  jakllsch //
     41  1.1  jakllsch 
     42  1.1  jakllsch #define BLOCK_IO_PROTOCOL \
     43  1.1  jakllsch     { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
     44  1.1  jakllsch #define EFI_BLOCK_IO_INTERFACE_REVISION   0x00010000
     45  1.1  jakllsch #define EFI_BLOCK_IO_INTERFACE_REVISION2  0x00020001
     46  1.1  jakllsch #define EFI_BLOCK_IO_INTERFACE_REVISION3  ((2<<16) | 31)
     47  1.1  jakllsch 
     48  1.1  jakllsch INTERFACE_DECL(_EFI_BLOCK_IO);
     49  1.1  jakllsch 
     50  1.1  jakllsch typedef
     51  1.1  jakllsch EFI_STATUS
     52  1.1  jakllsch (EFIAPI *EFI_BLOCK_RESET) (
     53  1.1  jakllsch     IN struct _EFI_BLOCK_IO     *This,
     54  1.1  jakllsch     IN BOOLEAN                  ExtendedVerification
     55  1.1  jakllsch     );
     56  1.1  jakllsch 
     57  1.1  jakllsch typedef
     58  1.1  jakllsch EFI_STATUS
     59  1.1  jakllsch (EFIAPI *EFI_BLOCK_READ) (
     60  1.1  jakllsch     IN struct _EFI_BLOCK_IO     *This,
     61  1.1  jakllsch     IN UINT32                   MediaId,
     62  1.1  jakllsch     IN EFI_LBA                  LBA,
     63  1.1  jakllsch     IN UINTN                    BufferSize,
     64  1.1  jakllsch     OUT VOID                    *Buffer
     65  1.1  jakllsch     );
     66  1.1  jakllsch 
     67  1.1  jakllsch 
     68  1.1  jakllsch typedef
     69  1.1  jakllsch EFI_STATUS
     70  1.1  jakllsch (EFIAPI *EFI_BLOCK_WRITE) (
     71  1.1  jakllsch     IN struct _EFI_BLOCK_IO     *This,
     72  1.1  jakllsch     IN UINT32                   MediaId,
     73  1.1  jakllsch     IN EFI_LBA                  LBA,
     74  1.1  jakllsch     IN UINTN                    BufferSize,
     75  1.1  jakllsch     IN VOID                     *Buffer
     76  1.1  jakllsch     );
     77  1.1  jakllsch 
     78  1.1  jakllsch 
     79  1.1  jakllsch typedef
     80  1.1  jakllsch EFI_STATUS
     81  1.1  jakllsch (EFIAPI *EFI_BLOCK_FLUSH) (
     82  1.1  jakllsch     IN struct _EFI_BLOCK_IO     *This
     83  1.1  jakllsch     );
     84  1.1  jakllsch 
     85  1.1  jakllsch 
     86  1.1  jakllsch 
     87  1.1  jakllsch typedef struct {
     88  1.1  jakllsch     UINT32              MediaId;
     89  1.1  jakllsch     BOOLEAN             RemovableMedia;
     90  1.1  jakllsch     BOOLEAN             MediaPresent;
     91  1.1  jakllsch 
     92  1.1  jakllsch     BOOLEAN             LogicalPartition;
     93  1.1  jakllsch     BOOLEAN             ReadOnly;
     94  1.1  jakllsch     BOOLEAN             WriteCaching;
     95  1.1  jakllsch 
     96  1.1  jakllsch     UINT32              BlockSize;
     97  1.1  jakllsch     UINT32              IoAlign;
     98  1.1  jakllsch 
     99  1.1  jakllsch     EFI_LBA             LastBlock;
    100  1.1  jakllsch 
    101  1.1  jakllsch     /* revision 2 */
    102  1.1  jakllsch     EFI_LBA             LowestAlignedLba;
    103  1.1  jakllsch     UINT32              LogicalBlocksPerPhysicalBlock;
    104  1.1  jakllsch     /* revision 3 */
    105  1.1  jakllsch     UINT32              OptimalTransferLengthGranularity;
    106  1.1  jakllsch } EFI_BLOCK_IO_MEDIA;
    107  1.1  jakllsch 
    108  1.1  jakllsch typedef struct _EFI_BLOCK_IO {
    109  1.1  jakllsch     UINT64                  Revision;
    110  1.1  jakllsch 
    111  1.1  jakllsch     EFI_BLOCK_IO_MEDIA      *Media;
    112  1.1  jakllsch 
    113  1.1  jakllsch     EFI_BLOCK_RESET         Reset;
    114  1.1  jakllsch     EFI_BLOCK_READ          ReadBlocks;
    115  1.1  jakllsch     EFI_BLOCK_WRITE         WriteBlocks;
    116  1.1  jakllsch     EFI_BLOCK_FLUSH         FlushBlocks;
    117  1.1  jakllsch 
    118  1.1  jakllsch } EFI_BLOCK_IO;
    119  1.1  jakllsch 
    120  1.1  jakllsch 
    121  1.1  jakllsch 
    122  1.1  jakllsch //
    123  1.1  jakllsch // Disk Block IO protocol
    124  1.1  jakllsch //
    125  1.1  jakllsch 
    126  1.1  jakllsch #define DISK_IO_PROTOCOL \
    127  1.1  jakllsch     { 0xce345171, 0xba0b, 0x11d2,  {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    128  1.1  jakllsch #define EFI_DISK_IO_INTERFACE_REVISION   0x00010000
    129  1.1  jakllsch 
    130  1.1  jakllsch INTERFACE_DECL(_EFI_DISK_IO);
    131  1.1  jakllsch 
    132  1.1  jakllsch typedef
    133  1.1  jakllsch EFI_STATUS
    134  1.1  jakllsch (EFIAPI *EFI_DISK_READ) (
    135  1.1  jakllsch     IN struct _EFI_DISK_IO      *This,
    136  1.1  jakllsch     IN UINT32                   MediaId,
    137  1.1  jakllsch     IN UINT64                   Offset,
    138  1.1  jakllsch     IN UINTN                    BufferSize,
    139  1.1  jakllsch     OUT VOID                    *Buffer
    140  1.1  jakllsch     );
    141  1.1  jakllsch 
    142  1.1  jakllsch 
    143  1.1  jakllsch typedef
    144  1.1  jakllsch EFI_STATUS
    145  1.1  jakllsch (EFIAPI *EFI_DISK_WRITE) (
    146  1.1  jakllsch     IN struct _EFI_DISK_IO      *This,
    147  1.1  jakllsch     IN UINT32                   MediaId,
    148  1.1  jakllsch     IN UINT64                   Offset,
    149  1.1  jakllsch     IN UINTN                    BufferSize,
    150  1.1  jakllsch     IN VOID                     *Buffer
    151  1.1  jakllsch     );
    152  1.1  jakllsch 
    153  1.1  jakllsch 
    154  1.1  jakllsch typedef struct _EFI_DISK_IO {
    155  1.1  jakllsch     UINT64              Revision;
    156  1.1  jakllsch     EFI_DISK_READ       ReadDisk;
    157  1.1  jakllsch     EFI_DISK_WRITE      WriteDisk;
    158  1.1  jakllsch } EFI_DISK_IO;
    159  1.1  jakllsch 
    160  1.1  jakllsch 
    161  1.1  jakllsch //
    162  1.1  jakllsch // Simple file system protocol
    163  1.1  jakllsch //
    164  1.1  jakllsch 
    165  1.1  jakllsch #define SIMPLE_FILE_SYSTEM_PROTOCOL \
    166  1.1  jakllsch     { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    167  1.1  jakllsch 
    168  1.1  jakllsch INTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
    169  1.1  jakllsch INTERFACE_DECL(_EFI_FILE_HANDLE);
    170  1.1  jakllsch 
    171  1.1  jakllsch typedef
    172  1.1  jakllsch EFI_STATUS
    173  1.1  jakllsch (EFIAPI *EFI_VOLUME_OPEN) (
    174  1.1  jakllsch     IN struct _EFI_FILE_IO_INTERFACE    *This,
    175  1.1  jakllsch     OUT struct _EFI_FILE_HANDLE         **Root
    176  1.1  jakllsch     );
    177  1.1  jakllsch 
    178  1.1  jakllsch #define EFI_FILE_IO_INTERFACE_REVISION   0x00010000
    179  1.1  jakllsch 
    180  1.1  jakllsch typedef struct _EFI_FILE_IO_INTERFACE {
    181  1.1  jakllsch     UINT64                  Revision;
    182  1.1  jakllsch     EFI_VOLUME_OPEN         OpenVolume;
    183  1.1  jakllsch } EFI_FILE_IO_INTERFACE;
    184  1.1  jakllsch 
    185  1.1  jakllsch //
    186  1.1  jakllsch //
    187  1.1  jakllsch //
    188  1.1  jakllsch 
    189  1.1  jakllsch typedef
    190  1.1  jakllsch EFI_STATUS
    191  1.1  jakllsch (EFIAPI *EFI_FILE_OPEN) (
    192  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    193  1.1  jakllsch     OUT struct _EFI_FILE_HANDLE **NewHandle,
    194  1.1  jakllsch     IN CHAR16                   *FileName,
    195  1.1  jakllsch     IN UINT64                   OpenMode,
    196  1.1  jakllsch     IN UINT64                   Attributes
    197  1.1  jakllsch     );
    198  1.1  jakllsch 
    199  1.1  jakllsch // Open modes
    200  1.1  jakllsch #define EFI_FILE_MODE_READ      0x0000000000000001
    201  1.1  jakllsch #define EFI_FILE_MODE_WRITE     0x0000000000000002
    202  1.1  jakllsch #define EFI_FILE_MODE_CREATE    0x8000000000000000
    203  1.1  jakllsch 
    204  1.1  jakllsch // File attributes
    205  1.1  jakllsch #define EFI_FILE_READ_ONLY      0x0000000000000001
    206  1.1  jakllsch #define EFI_FILE_HIDDEN         0x0000000000000002
    207  1.1  jakllsch #define EFI_FILE_SYSTEM         0x0000000000000004
    208  1.1  jakllsch #define EFI_FILE_RESERVIED      0x0000000000000008
    209  1.1  jakllsch #define EFI_FILE_DIRECTORY      0x0000000000000010
    210  1.1  jakllsch #define EFI_FILE_ARCHIVE        0x0000000000000020
    211  1.1  jakllsch #define EFI_FILE_VALID_ATTR     0x0000000000000037
    212  1.1  jakllsch 
    213  1.1  jakllsch typedef
    214  1.1  jakllsch EFI_STATUS
    215  1.1  jakllsch (EFIAPI *EFI_FILE_CLOSE) (
    216  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    217  1.1  jakllsch     );
    218  1.1  jakllsch 
    219  1.1  jakllsch typedef
    220  1.1  jakllsch EFI_STATUS
    221  1.1  jakllsch (EFIAPI *EFI_FILE_DELETE) (
    222  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    223  1.1  jakllsch     );
    224  1.1  jakllsch 
    225  1.1  jakllsch typedef
    226  1.1  jakllsch EFI_STATUS
    227  1.1  jakllsch (EFIAPI *EFI_FILE_READ) (
    228  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    229  1.1  jakllsch     IN OUT UINTN                *BufferSize,
    230  1.1  jakllsch     OUT VOID                    *Buffer
    231  1.1  jakllsch     );
    232  1.1  jakllsch 
    233  1.1  jakllsch typedef
    234  1.1  jakllsch EFI_STATUS
    235  1.1  jakllsch (EFIAPI *EFI_FILE_WRITE) (
    236  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    237  1.1  jakllsch     IN OUT UINTN                *BufferSize,
    238  1.1  jakllsch     IN VOID                     *Buffer
    239  1.1  jakllsch     );
    240  1.1  jakllsch 
    241  1.1  jakllsch typedef
    242  1.1  jakllsch EFI_STATUS
    243  1.1  jakllsch (EFIAPI *EFI_FILE_SET_POSITION) (
    244  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    245  1.1  jakllsch     IN UINT64                   Position
    246  1.1  jakllsch     );
    247  1.1  jakllsch 
    248  1.1  jakllsch typedef
    249  1.1  jakllsch EFI_STATUS
    250  1.1  jakllsch (EFIAPI *EFI_FILE_GET_POSITION) (
    251  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    252  1.1  jakllsch     OUT UINT64                  *Position
    253  1.1  jakllsch     );
    254  1.1  jakllsch 
    255  1.1  jakllsch typedef
    256  1.1  jakllsch EFI_STATUS
    257  1.1  jakllsch (EFIAPI *EFI_FILE_GET_INFO) (
    258  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    259  1.1  jakllsch     IN EFI_GUID                 *InformationType,
    260  1.1  jakllsch     IN OUT UINTN                *BufferSize,
    261  1.1  jakllsch     OUT VOID                    *Buffer
    262  1.1  jakllsch     );
    263  1.1  jakllsch 
    264  1.1  jakllsch typedef
    265  1.1  jakllsch EFI_STATUS
    266  1.1  jakllsch (EFIAPI *EFI_FILE_SET_INFO) (
    267  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File,
    268  1.1  jakllsch     IN EFI_GUID                 *InformationType,
    269  1.1  jakllsch     IN UINTN                    BufferSize,
    270  1.1  jakllsch     IN VOID                     *Buffer
    271  1.1  jakllsch     );
    272  1.1  jakllsch 
    273  1.1  jakllsch typedef
    274  1.1  jakllsch EFI_STATUS
    275  1.1  jakllsch (EFIAPI *EFI_FILE_FLUSH) (
    276  1.1  jakllsch     IN struct _EFI_FILE_HANDLE  *File
    277  1.1  jakllsch     );
    278  1.1  jakllsch 
    279  1.1  jakllsch 
    280  1.1  jakllsch 
    281  1.1  jakllsch #define EFI_FILE_HANDLE_REVISION         0x00010000
    282  1.1  jakllsch typedef struct _EFI_FILE_HANDLE {
    283  1.1  jakllsch     UINT64                  Revision;
    284  1.1  jakllsch     EFI_FILE_OPEN           Open;
    285  1.1  jakllsch     EFI_FILE_CLOSE          Close;
    286  1.1  jakllsch     EFI_FILE_DELETE         Delete;
    287  1.1  jakllsch     EFI_FILE_READ           Read;
    288  1.1  jakllsch     EFI_FILE_WRITE          Write;
    289  1.1  jakllsch     EFI_FILE_GET_POSITION   GetPosition;
    290  1.1  jakllsch     EFI_FILE_SET_POSITION   SetPosition;
    291  1.1  jakllsch     EFI_FILE_GET_INFO       GetInfo;
    292  1.1  jakllsch     EFI_FILE_SET_INFO       SetInfo;
    293  1.1  jakllsch     EFI_FILE_FLUSH          Flush;
    294  1.1  jakllsch } EFI_FILE, *EFI_FILE_HANDLE;
    295  1.1  jakllsch 
    296  1.1  jakllsch 
    297  1.1  jakllsch //
    298  1.1  jakllsch // File information types
    299  1.1  jakllsch //
    300  1.1  jakllsch 
    301  1.1  jakllsch #define EFI_FILE_INFO_ID   \
    302  1.1  jakllsch     { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    303  1.1  jakllsch 
    304  1.1  jakllsch typedef struct {
    305  1.1  jakllsch     UINT64                  Size;
    306  1.1  jakllsch     UINT64                  FileSize;
    307  1.1  jakllsch     UINT64                  PhysicalSize;
    308  1.1  jakllsch     EFI_TIME                CreateTime;
    309  1.1  jakllsch     EFI_TIME                LastAccessTime;
    310  1.1  jakllsch     EFI_TIME                ModificationTime;
    311  1.1  jakllsch     UINT64                  Attribute;
    312  1.1  jakllsch     CHAR16                  FileName[1];
    313  1.1  jakllsch } EFI_FILE_INFO;
    314  1.1  jakllsch 
    315  1.1  jakllsch //
    316  1.1  jakllsch // The FileName field of the EFI_FILE_INFO data structure is variable length.
    317  1.1  jakllsch // Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
    318  1.1  jakllsch // be the size of the data structure without the FileName field.  The following macro
    319  1.1  jakllsch // computes this size correctly no matter how big the FileName array is declared.
    320  1.1  jakllsch // This is required to make the EFI_FILE_INFO data structure ANSI compilant.
    321  1.1  jakllsch //
    322  1.1  jakllsch 
    323  1.1  jakllsch #define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
    324  1.1  jakllsch 
    325  1.1  jakllsch #define EFI_FILE_SYSTEM_INFO_ID    \
    326  1.1  jakllsch     { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    327  1.1  jakllsch 
    328  1.1  jakllsch typedef struct {
    329  1.1  jakllsch     UINT64                  Size;
    330  1.1  jakllsch     BOOLEAN                 ReadOnly;
    331  1.1  jakllsch     UINT64                  VolumeSize;
    332  1.1  jakllsch     UINT64                  FreeSpace;
    333  1.1  jakllsch     UINT32                  BlockSize;
    334  1.1  jakllsch     CHAR16                  VolumeLabel[1];
    335  1.1  jakllsch } EFI_FILE_SYSTEM_INFO;
    336  1.1  jakllsch 
    337  1.1  jakllsch //
    338  1.1  jakllsch // The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
    339  1.1  jakllsch // Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
    340  1.1  jakllsch // to be the size of the data structure without the VolumeLable field.  The following macro
    341  1.1  jakllsch // computes this size correctly no matter how big the VolumeLable array is declared.
    342  1.1  jakllsch // This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
    343  1.1  jakllsch //
    344  1.1  jakllsch 
    345  1.1  jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
    346  1.1  jakllsch 
    347  1.1  jakllsch #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID    \
    348  1.1  jakllsch     { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
    349  1.1  jakllsch 
    350  1.1  jakllsch typedef struct {
    351  1.1  jakllsch     CHAR16                  VolumeLabel[1];
    352  1.1  jakllsch } EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
    353  1.1  jakllsch 
    354  1.1  jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
    355  1.1  jakllsch 
    356  1.1  jakllsch //
    357  1.1  jakllsch // Load file protocol
    358  1.1  jakllsch //
    359  1.1  jakllsch 
    360  1.1  jakllsch 
    361  1.1  jakllsch #define LOAD_FILE_PROTOCOL \
    362  1.1  jakllsch     { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
    363  1.1  jakllsch 
    364  1.1  jakllsch INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
    365  1.1  jakllsch 
    366  1.1  jakllsch typedef
    367  1.1  jakllsch EFI_STATUS
    368  1.1  jakllsch (EFIAPI *EFI_LOAD_FILE) (
    369  1.1  jakllsch     IN struct _EFI_LOAD_FILE_INTERFACE  *This,
    370  1.1  jakllsch     IN EFI_DEVICE_PATH                  *FilePath,
    371  1.1  jakllsch     IN BOOLEAN                          BootPolicy,
    372  1.1  jakllsch     IN OUT UINTN                        *BufferSize,
    373  1.1  jakllsch     IN VOID                             *Buffer OPTIONAL
    374  1.1  jakllsch     );
    375  1.1  jakllsch 
    376  1.1  jakllsch typedef struct _EFI_LOAD_FILE_INTERFACE {
    377  1.1  jakllsch     EFI_LOAD_FILE                       LoadFile;
    378  1.1  jakllsch } EFI_LOAD_FILE_INTERFACE;
    379  1.1  jakllsch 
    380  1.1  jakllsch 
    381  1.1  jakllsch //
    382  1.1  jakllsch // Device IO protocol
    383  1.1  jakllsch //
    384  1.1  jakllsch 
    385  1.1  jakllsch #define DEVICE_IO_PROTOCOL \
    386  1.1  jakllsch     { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    387  1.1  jakllsch 
    388  1.1  jakllsch INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
    389  1.1  jakllsch 
    390  1.1  jakllsch typedef enum {
    391  1.1  jakllsch     IO_UINT8,
    392  1.1  jakllsch     IO_UINT16,
    393  1.1  jakllsch     IO_UINT32,
    394  1.1  jakllsch     IO_UINT64,
    395  1.1  jakllsch //
    396  1.1  jakllsch // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
    397  1.1  jakllsch //
    398  1.1  jakllsch     MMIO_COPY_UINT8,
    399  1.1  jakllsch     MMIO_COPY_UINT16,
    400  1.1  jakllsch     MMIO_COPY_UINT32,
    401  1.1  jakllsch     MMIO_COPY_UINT64
    402  1.1  jakllsch } EFI_IO_WIDTH;
    403  1.1  jakllsch 
    404  1.1  jakllsch #define EFI_PCI_ADDRESS(_bus,_dev,_func) \
    405  1.1  jakllsch     ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
    406  1.1  jakllsch 
    407  1.1  jakllsch 
    408  1.1  jakllsch typedef
    409  1.1  jakllsch EFI_STATUS
    410  1.1  jakllsch (EFIAPI *EFI_DEVICE_IO) (
    411  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE *This,
    412  1.1  jakllsch     IN EFI_IO_WIDTH                 Width,
    413  1.1  jakllsch     IN UINT64                       Address,
    414  1.1  jakllsch     IN UINTN                        Count,
    415  1.1  jakllsch     IN OUT VOID                     *Buffer
    416  1.1  jakllsch     );
    417  1.1  jakllsch 
    418  1.1  jakllsch typedef struct {
    419  1.1  jakllsch     EFI_DEVICE_IO                   Read;
    420  1.1  jakllsch     EFI_DEVICE_IO                   Write;
    421  1.1  jakllsch } EFI_IO_ACCESS;
    422  1.1  jakllsch 
    423  1.1  jakllsch typedef
    424  1.1  jakllsch EFI_STATUS
    425  1.1  jakllsch (EFIAPI *EFI_PCI_DEVICE_PATH) (
    426  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This,
    427  1.1  jakllsch     IN UINT64                           Address,
    428  1.1  jakllsch     IN OUT EFI_DEVICE_PATH              **PciDevicePath
    429  1.1  jakllsch     );
    430  1.1  jakllsch 
    431  1.1  jakllsch typedef enum {
    432  1.1  jakllsch     EfiBusMasterRead,
    433  1.1  jakllsch     EfiBusMasterWrite,
    434  1.1  jakllsch     EfiBusMasterCommonBuffer
    435  1.1  jakllsch } EFI_IO_OPERATION_TYPE;
    436  1.1  jakllsch 
    437  1.1  jakllsch typedef
    438  1.1  jakllsch EFI_STATUS
    439  1.1  jakllsch (EFIAPI *EFI_IO_MAP) (
    440  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This,
    441  1.1  jakllsch     IN EFI_IO_OPERATION_TYPE            Operation,
    442  1.1  jakllsch     IN EFI_PHYSICAL_ADDRESS             *HostAddress,
    443  1.1  jakllsch     IN OUT UINTN                        *NumberOfBytes,
    444  1.1  jakllsch     OUT EFI_PHYSICAL_ADDRESS            *DeviceAddress,
    445  1.1  jakllsch     OUT VOID                            **Mapping
    446  1.1  jakllsch     );
    447  1.1  jakllsch 
    448  1.1  jakllsch typedef
    449  1.1  jakllsch EFI_STATUS
    450  1.1  jakllsch (EFIAPI *EFI_IO_UNMAP) (
    451  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This,
    452  1.1  jakllsch     IN VOID                             *Mapping
    453  1.1  jakllsch     );
    454  1.1  jakllsch 
    455  1.1  jakllsch typedef
    456  1.1  jakllsch EFI_STATUS
    457  1.1  jakllsch (EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
    458  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This,
    459  1.1  jakllsch     IN EFI_ALLOCATE_TYPE                Type,
    460  1.1  jakllsch     IN EFI_MEMORY_TYPE                  MemoryType,
    461  1.1  jakllsch     IN UINTN                            Pages,
    462  1.1  jakllsch     IN OUT EFI_PHYSICAL_ADDRESS         *HostAddress
    463  1.1  jakllsch     );
    464  1.1  jakllsch 
    465  1.1  jakllsch typedef
    466  1.1  jakllsch EFI_STATUS
    467  1.1  jakllsch (EFIAPI *EFI_IO_FLUSH) (
    468  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This
    469  1.1  jakllsch     );
    470  1.1  jakllsch 
    471  1.1  jakllsch typedef
    472  1.1  jakllsch EFI_STATUS
    473  1.1  jakllsch (EFIAPI *EFI_IO_FREE_BUFFER) (
    474  1.1  jakllsch     IN struct _EFI_DEVICE_IO_INTERFACE  *This,
    475  1.1  jakllsch     IN UINTN                            Pages,
    476  1.1  jakllsch     IN EFI_PHYSICAL_ADDRESS             HostAddress
    477  1.1  jakllsch     );
    478  1.1  jakllsch 
    479  1.1  jakllsch typedef struct _EFI_DEVICE_IO_INTERFACE {
    480  1.1  jakllsch     EFI_IO_ACCESS                       Mem;
    481  1.1  jakllsch     EFI_IO_ACCESS                       Io;
    482  1.1  jakllsch     EFI_IO_ACCESS                       Pci;
    483  1.1  jakllsch     EFI_IO_MAP                          Map;
    484  1.1  jakllsch     EFI_PCI_DEVICE_PATH                 PciDevicePath;
    485  1.1  jakllsch     EFI_IO_UNMAP                        Unmap;
    486  1.1  jakllsch     EFI_IO_ALLOCATE_BUFFER              AllocateBuffer;
    487  1.1  jakllsch     EFI_IO_FLUSH                        Flush;
    488  1.1  jakllsch     EFI_IO_FREE_BUFFER                  FreeBuffer;
    489  1.1  jakllsch } EFI_DEVICE_IO_INTERFACE;
    490  1.1  jakllsch 
    491  1.1  jakllsch 
    492  1.1  jakllsch //
    493  1.1  jakllsch // Unicode Collation protocol
    494  1.1  jakllsch //
    495  1.1  jakllsch 
    496  1.1  jakllsch #define UNICODE_COLLATION_PROTOCOL \
    497  1.1  jakllsch     { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc,  0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    498  1.1  jakllsch 
    499  1.1  jakllsch #define UNICODE_BYTE_ORDER_MARK       (CHAR16)(0xfeff)
    500  1.1  jakllsch 
    501  1.1  jakllsch INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
    502  1.1  jakllsch 
    503  1.1  jakllsch typedef
    504  1.1  jakllsch INTN
    505  1.1  jakllsch (EFIAPI *EFI_UNICODE_STRICOLL) (
    506  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    507  1.1  jakllsch     IN CHAR16                         *s1,
    508  1.1  jakllsch     IN CHAR16                         *s2
    509  1.1  jakllsch     );
    510  1.1  jakllsch 
    511  1.1  jakllsch typedef
    512  1.1  jakllsch BOOLEAN
    513  1.1  jakllsch (EFIAPI *EFI_UNICODE_METAIMATCH) (
    514  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    515  1.1  jakllsch     IN CHAR16                         *String,
    516  1.1  jakllsch     IN CHAR16                         *Pattern
    517  1.1  jakllsch     );
    518  1.1  jakllsch 
    519  1.1  jakllsch typedef
    520  1.1  jakllsch VOID
    521  1.1  jakllsch (EFIAPI *EFI_UNICODE_STRLWR) (
    522  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    523  1.1  jakllsch     IN OUT CHAR16                       *Str
    524  1.1  jakllsch     );
    525  1.1  jakllsch 
    526  1.1  jakllsch typedef
    527  1.1  jakllsch VOID
    528  1.1  jakllsch (EFIAPI *EFI_UNICODE_STRUPR) (
    529  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    530  1.1  jakllsch     IN OUT CHAR16                       *Str
    531  1.1  jakllsch     );
    532  1.1  jakllsch 
    533  1.1  jakllsch typedef
    534  1.1  jakllsch VOID
    535  1.1  jakllsch (EFIAPI *EFI_UNICODE_FATTOSTR) (
    536  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    537  1.1  jakllsch     IN UINTN                            FatSize,
    538  1.1  jakllsch     IN CHAR8                            *Fat,
    539  1.1  jakllsch     OUT CHAR16                          *String
    540  1.1  jakllsch     );
    541  1.1  jakllsch 
    542  1.1  jakllsch typedef
    543  1.1  jakllsch BOOLEAN
    544  1.1  jakllsch (EFIAPI *EFI_UNICODE_STRTOFAT) (
    545  1.1  jakllsch     IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
    546  1.1  jakllsch     IN CHAR16                           *String,
    547  1.1  jakllsch     IN UINTN                            FatSize,
    548  1.1  jakllsch     OUT CHAR8                           *Fat
    549  1.1  jakllsch     );
    550  1.1  jakllsch 
    551  1.1  jakllsch 
    552  1.1  jakllsch typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
    553  1.1  jakllsch 
    554  1.1  jakllsch     // general
    555  1.1  jakllsch     EFI_UNICODE_STRICOLL                StriColl;
    556  1.1  jakllsch     EFI_UNICODE_METAIMATCH              MetaiMatch;
    557  1.1  jakllsch     EFI_UNICODE_STRLWR                  StrLwr;
    558  1.1  jakllsch     EFI_UNICODE_STRUPR                  StrUpr;
    559  1.1  jakllsch 
    560  1.1  jakllsch     // for supporting fat volumes
    561  1.1  jakllsch     EFI_UNICODE_FATTOSTR                FatToStr;
    562  1.1  jakllsch     EFI_UNICODE_STRTOFAT                StrToFat;
    563  1.1  jakllsch 
    564  1.1  jakllsch     CHAR8                               *SupportedLanguages;
    565  1.1  jakllsch } EFI_UNICODE_COLLATION_INTERFACE;
    566  1.1  jakllsch 
    567  1.1  jakllsch /* Graphics output protocol */
    568  1.1  jakllsch #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
    569  1.1  jakllsch   { \
    570  1.1  jakllsch     0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
    571  1.1  jakllsch   }
    572  1.1  jakllsch 
    573  1.1  jakllsch typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
    574  1.1  jakllsch 
    575  1.1  jakllsch typedef struct {
    576  1.1  jakllsch   UINT32            RedMask;
    577  1.1  jakllsch   UINT32            GreenMask;
    578  1.1  jakllsch   UINT32            BlueMask;
    579  1.1  jakllsch   UINT32            ReservedMask;
    580  1.1  jakllsch } EFI_PIXEL_BITMASK;
    581  1.1  jakllsch 
    582  1.1  jakllsch typedef enum {
    583  1.1  jakllsch   PixelRedGreenBlueReserved8BitPerColor,
    584  1.1  jakllsch   PixelBlueGreenRedReserved8BitPerColor,
    585  1.1  jakllsch   PixelBitMask,
    586  1.1  jakllsch   PixelBltOnly,
    587  1.1  jakllsch   PixelFormatMax
    588  1.1  jakllsch } EFI_GRAPHICS_PIXEL_FORMAT;
    589  1.1  jakllsch 
    590  1.1  jakllsch typedef struct {
    591  1.1  jakllsch   UINT32                     Version;
    592  1.1  jakllsch   UINT32                     HorizontalResolution;
    593  1.1  jakllsch   UINT32                     VerticalResolution;
    594  1.1  jakllsch   EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;
    595  1.1  jakllsch   EFI_PIXEL_BITMASK          PixelInformation;
    596  1.1  jakllsch   UINT32                     PixelsPerScanLine;
    597  1.1  jakllsch } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
    598  1.1  jakllsch 
    599  1.1  jakllsch /**
    600  1.1  jakllsch   Return the current video mode information.
    601  1.1  jakllsch 
    602  1.1  jakllsch   @param  This       Protocol instance pointer.
    603  1.1  jakllsch   @param  ModeNumber The mode number to return information on.
    604  1.1  jakllsch   @param  SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
    605  1.1  jakllsch   @param  Info       A pointer to callee allocated buffer that returns information about ModeNumber.
    606  1.1  jakllsch 
    607  1.1  jakllsch   @retval EFI_SUCCESS           Mode information returned.
    608  1.1  jakllsch   @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.
    609  1.1  jakllsch   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.
    610  1.1  jakllsch   @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()
    611  1.1  jakllsch   @retval EFI_INVALID_PARAMETER One of the input args was NULL.
    612  1.1  jakllsch 
    613  1.1  jakllsch **/
    614  1.1  jakllsch typedef
    615  1.1  jakllsch EFI_STATUS
    616  1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
    617  1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
    618  1.1  jakllsch   IN  UINT32                                ModeNumber,
    619  1.1  jakllsch   OUT UINTN                                 *SizeOfInfo,
    620  1.1  jakllsch   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info
    621  1.1  jakllsch   )
    622  1.1  jakllsch ;
    623  1.1  jakllsch 
    624  1.1  jakllsch /**
    625  1.1  jakllsch   Return the current video mode information.
    626  1.1  jakllsch 
    627  1.1  jakllsch   @param  This              Protocol instance pointer.
    628  1.1  jakllsch   @param  ModeNumber        The mode number to be set.
    629  1.1  jakllsch 
    630  1.1  jakllsch   @retval EFI_SUCCESS       Graphics mode was changed.
    631  1.1  jakllsch   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
    632  1.1  jakllsch   @retval EFI_UNSUPPORTED   ModeNumber is not supported by this device.
    633  1.1  jakllsch 
    634  1.1  jakllsch **/
    635  1.1  jakllsch typedef
    636  1.1  jakllsch EFI_STATUS
    637  1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
    638  1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
    639  1.1  jakllsch   IN  UINT32                       ModeNumber
    640  1.1  jakllsch   );
    641  1.1  jakllsch 
    642  1.1  jakllsch typedef struct {
    643  1.1  jakllsch   UINT8 Blue;
    644  1.1  jakllsch   UINT8 Green;
    645  1.1  jakllsch   UINT8 Red;
    646  1.1  jakllsch   UINT8 Reserved;
    647  1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
    648  1.1  jakllsch 
    649  1.1  jakllsch typedef union {
    650  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
    651  1.1  jakllsch   UINT32                        Raw;
    652  1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
    653  1.1  jakllsch 
    654  1.1  jakllsch typedef enum {
    655  1.1  jakllsch   EfiBltVideoFill,
    656  1.1  jakllsch   EfiBltVideoToBltBuffer,
    657  1.1  jakllsch   EfiBltBufferToVideo,
    658  1.1  jakllsch   EfiBltVideoToVideo,
    659  1.1  jakllsch   EfiGraphicsOutputBltOperationMax
    660  1.1  jakllsch } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
    661  1.1  jakllsch 
    662  1.1  jakllsch /**
    663  1.1  jakllsch   The following table defines actions for BltOperations:
    664  1.1  jakllsch 
    665  1.1  jakllsch   <B>EfiBltVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY)
    666  1.1  jakllsch   directly to every pixel of the video display rectangle
    667  1.1  jakllsch   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
    668  1.1  jakllsch   Only one pixel will be used from the BltBuffer. Delta is NOT used.
    669  1.1  jakllsch 
    670  1.1  jakllsch   <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
    671  1.1  jakllsch   (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
    672  1.1  jakllsch   the BltBuffer rectangle (DestinationX, DestinationY )
    673  1.1  jakllsch   (DestinationX + Width, DestinationY + Height). If DestinationX or
    674  1.1  jakllsch   DestinationY is not zero then Delta must be set to the length in bytes
    675  1.1  jakllsch   of a row in the BltBuffer.
    676  1.1  jakllsch 
    677  1.1  jakllsch   <B>EfiBltBufferToVideo</B> - Write data from the  BltBuffer rectangle
    678  1.1  jakllsch   (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
    679  1.1  jakllsch   video display rectangle (DestinationX, DestinationY)
    680  1.1  jakllsch   (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
    681  1.1  jakllsch   not zero then Delta must be set to the length in bytes of a row in the
    682  1.1  jakllsch   BltBuffer.
    683  1.1  jakllsch 
    684  1.1  jakllsch   <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
    685  1.1  jakllsch   (SourceX + Width, SourceY + Height) .to the video display rectangle
    686  1.1  jakllsch   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
    687  1.1  jakllsch   The BltBuffer and Delta  are not used in this mode.
    688  1.1  jakllsch 
    689  1.1  jakllsch   @param  This         Protocol instance pointer.
    690  1.1  jakllsch   @param  BltBuffer    Buffer containing data to blit into video buffer. This
    691  1.1  jakllsch                        buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
    692  1.1  jakllsch   @param  BltOperation Operation to perform on BlitBuffer and video memory
    693  1.1  jakllsch   @param  SourceX      X coordinate of source for the BltBuffer.
    694  1.1  jakllsch   @param  SourceY      Y coordinate of source for the BltBuffer.
    695  1.1  jakllsch   @param  DestinationX X coordinate of destination for the BltBuffer.
    696  1.1  jakllsch   @param  DestinationY Y coordinate of destination for the BltBuffer.
    697  1.1  jakllsch   @param  Width        Width of rectangle in BltBuffer in pixels.
    698  1.1  jakllsch   @param  Height       Hight of rectangle in BltBuffer in pixels.
    699  1.1  jakllsch   @param  Delta        OPTIONAL
    700  1.1  jakllsch 
    701  1.1  jakllsch   @retval EFI_SUCCESS           The Blt operation completed.
    702  1.1  jakllsch   @retval EFI_INVALID_PARAMETER BltOperation is not valid.
    703  1.1  jakllsch   @retval EFI_DEVICE_ERROR      A hardware error occured writting to the video buffer.
    704  1.1  jakllsch 
    705  1.1  jakllsch **/
    706  1.1  jakllsch typedef
    707  1.1  jakllsch EFI_STATUS
    708  1.1  jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
    709  1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL            *This,
    710  1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer,   OPTIONAL
    711  1.1  jakllsch   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION       BltOperation,
    712  1.1  jakllsch   IN  UINTN                                   SourceX,
    713  1.1  jakllsch   IN  UINTN                                   SourceY,
    714  1.1  jakllsch   IN  UINTN                                   DestinationX,
    715  1.1  jakllsch   IN  UINTN                                   DestinationY,
    716  1.1  jakllsch   IN  UINTN                                   Width,
    717  1.1  jakllsch   IN  UINTN                                   Height,
    718  1.1  jakllsch   IN  UINTN                                   Delta         OPTIONAL
    719  1.1  jakllsch   );
    720  1.1  jakllsch 
    721  1.1  jakllsch typedef struct {
    722  1.1  jakllsch   UINT32                                 MaxMode;
    723  1.1  jakllsch   UINT32                                 Mode;
    724  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;
    725  1.1  jakllsch   UINTN                                  SizeOfInfo;
    726  1.1  jakllsch   EFI_PHYSICAL_ADDRESS                   FrameBufferBase;
    727  1.1  jakllsch   UINTN                                  FrameBufferSize;
    728  1.1  jakllsch } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
    729  1.1  jakllsch 
    730  1.1  jakllsch struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
    731  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE  QueryMode;
    732  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE    SetMode;
    733  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT         Blt;
    734  1.1  jakllsch   EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE        *Mode;
    735  1.1  jakllsch };
    736  1.1  jakllsch 
    737  1.1  jakllsch INTERFACE_DECL(_EFI_SERVICE_BINDING);
    738  1.1  jakllsch 
    739  1.1  jakllsch typedef
    740  1.1  jakllsch EFI_STATUS
    741  1.1  jakllsch (EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) (
    742  1.1  jakllsch     IN struct _EFI_SERVICE_BINDING *This,
    743  1.1  jakllsch     IN EFI_HANDLE                  *ChildHandle
    744  1.1  jakllsch     );
    745  1.1  jakllsch 
    746  1.1  jakllsch typedef
    747  1.1  jakllsch EFI_STATUS
    748  1.1  jakllsch (EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) (
    749  1.1  jakllsch     IN struct _EFI_SERVICE_BINDING *This,
    750  1.1  jakllsch     IN EFI_HANDLE                  ChildHandle
    751  1.1  jakllsch     );
    752  1.1  jakllsch 
    753  1.1  jakllsch typedef struct _EFI_SERVICE_BINDING {
    754  1.1  jakllsch     EFI_SERVICE_BINDING_CREATE_CHILD  CreateChild;
    755  1.1  jakllsch     EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild;
    756  1.1  jakllsch } EFI_SERVICE_BINDING;
    757  1.1  jakllsch 
    758  1.1  jakllsch #endif
    759  1.1  jakllsch 
    760