1 1.1 jakllsch /* $NetBSD: efiprot.h,v 1.1.1.3 2021/09/30 18:50:09 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.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_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.1.3 jmcneill } EFI_FILE_SYSTEM_VOLUME_LABEL; 528 1.1 jakllsch 529 1.1.1.3 jmcneill #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL,VolumeLabel) 530 1.1.1.3 jmcneill 531 1.1.1.3 jmcneill // 532 1.1.1.3 jmcneill // For compatibility with older versions of gnu-efi 533 1.1.1.3 jmcneill // 534 1.1.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID EFI_FILE_SYSTEM_VOLUME_LABEL_ID 535 1.1.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FILE_SYSTEM_VOLUME_LABEL 536 1.1 jakllsch 537 1.1 jakllsch // 538 1.1 jakllsch // Load file protocol 539 1.1 jakllsch // 540 1.1 jakllsch 541 1.1 jakllsch 542 1.1.1.2 jmcneill #define EFI_LOAD_FILE_PROTOCOL_GUID \ 543 1.1 jakllsch { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } 544 1.1.1.2 jmcneill #define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID 545 1.1 jakllsch 546 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL); 547 1.1 jakllsch 548 1.1 jakllsch typedef 549 1.1 jakllsch EFI_STATUS 550 1.1 jakllsch (EFIAPI *EFI_LOAD_FILE) ( 551 1.1.1.2 jmcneill IN struct _EFI_LOAD_FILE_PROTOCOL *This, 552 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath, 553 1.1 jakllsch IN BOOLEAN BootPolicy, 554 1.1 jakllsch IN OUT UINTN *BufferSize, 555 1.1 jakllsch IN VOID *Buffer OPTIONAL 556 1.1 jakllsch ); 557 1.1 jakllsch 558 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL { 559 1.1 jakllsch EFI_LOAD_FILE LoadFile; 560 1.1.1.2 jmcneill } EFI_LOAD_FILE_PROTOCOL; 561 1.1 jakllsch 562 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE; 563 1.1.1.2 jmcneill typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE; 564 1.1 jakllsch 565 1.1 jakllsch // 566 1.1 jakllsch // Device IO protocol 567 1.1 jakllsch // 568 1.1 jakllsch 569 1.1.1.2 jmcneill #define EFI_DEVICE_IO_PROTOCOL_GUID \ 570 1.1 jakllsch { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 571 1.1.1.2 jmcneill #define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID 572 1.1 jakllsch 573 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL); 574 1.1 jakllsch 575 1.1 jakllsch typedef enum { 576 1.1 jakllsch IO_UINT8, 577 1.1 jakllsch IO_UINT16, 578 1.1 jakllsch IO_UINT32, 579 1.1 jakllsch IO_UINT64, 580 1.1 jakllsch // 581 1.1 jakllsch // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO 582 1.1 jakllsch // 583 1.1 jakllsch MMIO_COPY_UINT8, 584 1.1 jakllsch MMIO_COPY_UINT16, 585 1.1 jakllsch MMIO_COPY_UINT32, 586 1.1 jakllsch MMIO_COPY_UINT64 587 1.1 jakllsch } EFI_IO_WIDTH; 588 1.1 jakllsch 589 1.1 jakllsch #define EFI_PCI_ADDRESS(_bus,_dev,_func) \ 590 1.1 jakllsch ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) ) 591 1.1 jakllsch 592 1.1 jakllsch 593 1.1 jakllsch typedef 594 1.1 jakllsch EFI_STATUS 595 1.1 jakllsch (EFIAPI *EFI_DEVICE_IO) ( 596 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 597 1.1 jakllsch IN EFI_IO_WIDTH Width, 598 1.1 jakllsch IN UINT64 Address, 599 1.1 jakllsch IN UINTN Count, 600 1.1 jakllsch IN OUT VOID *Buffer 601 1.1 jakllsch ); 602 1.1 jakllsch 603 1.1 jakllsch typedef struct { 604 1.1 jakllsch EFI_DEVICE_IO Read; 605 1.1 jakllsch EFI_DEVICE_IO Write; 606 1.1 jakllsch } EFI_IO_ACCESS; 607 1.1 jakllsch 608 1.1.1.2 jmcneill typedef 609 1.1 jakllsch EFI_STATUS 610 1.1 jakllsch (EFIAPI *EFI_PCI_DEVICE_PATH) ( 611 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 612 1.1 jakllsch IN UINT64 Address, 613 1.1 jakllsch IN OUT EFI_DEVICE_PATH **PciDevicePath 614 1.1 jakllsch ); 615 1.1 jakllsch 616 1.1 jakllsch typedef enum { 617 1.1 jakllsch EfiBusMasterRead, 618 1.1 jakllsch EfiBusMasterWrite, 619 1.1 jakllsch EfiBusMasterCommonBuffer 620 1.1 jakllsch } EFI_IO_OPERATION_TYPE; 621 1.1 jakllsch 622 1.1 jakllsch typedef 623 1.1 jakllsch EFI_STATUS 624 1.1 jakllsch (EFIAPI *EFI_IO_MAP) ( 625 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 626 1.1 jakllsch IN EFI_IO_OPERATION_TYPE Operation, 627 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS *HostAddress, 628 1.1 jakllsch IN OUT UINTN *NumberOfBytes, 629 1.1 jakllsch OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, 630 1.1 jakllsch OUT VOID **Mapping 631 1.1 jakllsch ); 632 1.1 jakllsch 633 1.1 jakllsch typedef 634 1.1 jakllsch EFI_STATUS 635 1.1 jakllsch (EFIAPI *EFI_IO_UNMAP) ( 636 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 637 1.1 jakllsch IN VOID *Mapping 638 1.1 jakllsch ); 639 1.1 jakllsch 640 1.1 jakllsch typedef 641 1.1 jakllsch EFI_STATUS 642 1.1 jakllsch (EFIAPI *EFI_IO_ALLOCATE_BUFFER) ( 643 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 644 1.1 jakllsch IN EFI_ALLOCATE_TYPE Type, 645 1.1 jakllsch IN EFI_MEMORY_TYPE MemoryType, 646 1.1 jakllsch IN UINTN Pages, 647 1.1 jakllsch IN OUT EFI_PHYSICAL_ADDRESS *HostAddress 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_FLUSH) ( 653 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This 654 1.1 jakllsch ); 655 1.1 jakllsch 656 1.1 jakllsch typedef 657 1.1 jakllsch EFI_STATUS 658 1.1 jakllsch (EFIAPI *EFI_IO_FREE_BUFFER) ( 659 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This, 660 1.1 jakllsch IN UINTN Pages, 661 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS HostAddress 662 1.1 jakllsch ); 663 1.1 jakllsch 664 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL { 665 1.1 jakllsch EFI_IO_ACCESS Mem; 666 1.1 jakllsch EFI_IO_ACCESS Io; 667 1.1 jakllsch EFI_IO_ACCESS Pci; 668 1.1 jakllsch EFI_IO_MAP Map; 669 1.1 jakllsch EFI_PCI_DEVICE_PATH PciDevicePath; 670 1.1 jakllsch EFI_IO_UNMAP Unmap; 671 1.1 jakllsch EFI_IO_ALLOCATE_BUFFER AllocateBuffer; 672 1.1 jakllsch EFI_IO_FLUSH Flush; 673 1.1 jakllsch EFI_IO_FREE_BUFFER FreeBuffer; 674 1.1.1.2 jmcneill } EFI_DEVICE_IO_PROTOCOL; 675 1.1 jakllsch 676 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE; 677 1.1.1.2 jmcneill typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE; 678 1.1 jakllsch 679 1.1 jakllsch // 680 1.1 jakllsch // Unicode Collation protocol 681 1.1 jakllsch // 682 1.1 jakllsch 683 1.1.1.2 jmcneill #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \ 684 1.1 jakllsch { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 685 1.1.1.2 jmcneill #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID 686 1.1 jakllsch 687 1.1.1.2 jmcneill #define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff) 688 1.1.1.2 jmcneill #define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK 689 1.1 jakllsch 690 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL); 691 1.1 jakllsch 692 1.1 jakllsch typedef 693 1.1 jakllsch INTN 694 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRICOLL) ( 695 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 696 1.1 jakllsch IN CHAR16 *s1, 697 1.1 jakllsch IN CHAR16 *s2 698 1.1 jakllsch ); 699 1.1 jakllsch 700 1.1 jakllsch typedef 701 1.1 jakllsch BOOLEAN 702 1.1 jakllsch (EFIAPI *EFI_UNICODE_METAIMATCH) ( 703 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 704 1.1 jakllsch IN CHAR16 *String, 705 1.1 jakllsch IN CHAR16 *Pattern 706 1.1 jakllsch ); 707 1.1 jakllsch 708 1.1 jakllsch typedef 709 1.1 jakllsch VOID 710 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRLWR) ( 711 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 712 1.1 jakllsch IN OUT CHAR16 *Str 713 1.1 jakllsch ); 714 1.1 jakllsch 715 1.1 jakllsch typedef 716 1.1 jakllsch VOID 717 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRUPR) ( 718 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 719 1.1 jakllsch IN OUT CHAR16 *Str 720 1.1 jakllsch ); 721 1.1 jakllsch 722 1.1 jakllsch typedef 723 1.1 jakllsch VOID 724 1.1 jakllsch (EFIAPI *EFI_UNICODE_FATTOSTR) ( 725 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 726 1.1 jakllsch IN UINTN FatSize, 727 1.1 jakllsch IN CHAR8 *Fat, 728 1.1 jakllsch OUT CHAR16 *String 729 1.1 jakllsch ); 730 1.1 jakllsch 731 1.1 jakllsch typedef 732 1.1 jakllsch BOOLEAN 733 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRTOFAT) ( 734 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, 735 1.1 jakllsch IN CHAR16 *String, 736 1.1 jakllsch IN UINTN FatSize, 737 1.1 jakllsch OUT CHAR8 *Fat 738 1.1 jakllsch ); 739 1.1 jakllsch 740 1.1.1.2 jmcneill // 741 1.1.1.2 jmcneill // Hash Protocol 742 1.1.1.2 jmcneill // 743 1.1.1.2 jmcneill #define EFI_HASH_PROTOCOL_GUID \ 744 1.1.1.2 jmcneill { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } } 745 1.1.1.2 jmcneill #define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID 746 1.1.1.2 jmcneill 747 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_GUID \ 748 1.1.1.2 jmcneill { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated 749 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID 750 1.1.1.2 jmcneill 751 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224_GUID \ 752 1.1.1.2 jmcneill { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated 753 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID 754 1.1.1.2 jmcneill 755 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_GUID \ 756 1.1.1.2 jmcneill { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated 757 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID 758 1.1.1.2 jmcneill 759 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384_GUID \ 760 1.1.1.2 jmcneill { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated 761 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID 762 1.1.1.2 jmcneill 763 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512_GUID \ 764 1.1.1.2 jmcneill { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated 765 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID 766 1.1 jakllsch 767 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5_GUID \ 768 1.1.1.2 jmcneill { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated 769 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID 770 1.1.1.2 jmcneill 771 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \ 772 1.1.1.2 jmcneill { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } } 773 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID 774 1.1.1.2 jmcneill 775 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \ 776 1.1.1.2 jmcneill { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } } 777 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID 778 1.1.1.2 jmcneill 779 1.1.1.2 jmcneill 780 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_HASH_PROTOCOL); 781 1.1.1.2 jmcneill 782 1.1.1.2 jmcneill typedef UINT8 EFI_MD5_HASH[16]; 783 1.1.1.2 jmcneill typedef UINT8 EFI_SHA1_HASH[20]; 784 1.1.1.2 jmcneill typedef UINT8 EFI_SHA224_HASH[28]; 785 1.1.1.2 jmcneill typedef UINT8 EFI_SHA256_HASH[32]; 786 1.1.1.2 jmcneill typedef UINT8 EFI_SHA384_HASH[48]; 787 1.1.1.2 jmcneill typedef UINT8 EFI_SHA512_HASH[64]; 788 1.1.1.2 jmcneill typedef union _EFI_HASH_OUTPUT { 789 1.1.1.2 jmcneill EFI_MD5_HASH *Md5Hash; 790 1.1.1.2 jmcneill EFI_SHA1_HASH *Sha1Hash; 791 1.1.1.2 jmcneill EFI_SHA224_HASH *Sha224Hash; 792 1.1.1.2 jmcneill EFI_SHA256_HASH *Sha256Hash; 793 1.1.1.2 jmcneill EFI_SHA384_HASH *Sha384Hash; 794 1.1.1.2 jmcneill EFI_SHA512_HASH *Sha512Hash; 795 1.1.1.2 jmcneill } EFI_HASH_OUTPUT; 796 1.1.1.2 jmcneill 797 1.1.1.2 jmcneill typedef 798 1.1.1.2 jmcneill EFI_STATUS 799 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_GET_HASH_SIZE) ( 800 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This, 801 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm, 802 1.1.1.2 jmcneill OUT UINTN *HashSize); 803 1.1.1.2 jmcneill 804 1.1.1.2 jmcneill typedef 805 1.1.1.2 jmcneill EFI_STATUS 806 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_HASH) ( 807 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This, 808 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm, 809 1.1.1.2 jmcneill IN BOOLEAN Extend, 810 1.1.1.2 jmcneill IN CONST UINT8 *Message, 811 1.1.1.2 jmcneill IN UINT64 MessageSize, 812 1.1.1.2 jmcneill IN OUT EFI_HASH_OUTPUT *Hash); 813 1.1.1.2 jmcneill 814 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL { 815 1.1.1.2 jmcneill EFI_HASH_GET_HASH_SIZE GetHashSize; 816 1.1.1.2 jmcneill EFI_HASH_HASH Hash; 817 1.1.1.2 jmcneill } EFI_HASH_PROTOCOL; 818 1.1.1.2 jmcneill 819 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL _EFI_HASH; 820 1.1.1.2 jmcneill typedef EFI_HASH_PROTOCOL EFI_HASH; 821 1.1.1.2 jmcneill 822 1.1.1.2 jmcneill 823 1.1.1.2 jmcneill typedef struct _EFI_UNICODE_COLLATION_PROTOCOL { 824 1.1 jakllsch 825 1.1 jakllsch // general 826 1.1 jakllsch EFI_UNICODE_STRICOLL StriColl; 827 1.1 jakllsch EFI_UNICODE_METAIMATCH MetaiMatch; 828 1.1 jakllsch EFI_UNICODE_STRLWR StrLwr; 829 1.1 jakllsch EFI_UNICODE_STRUPR StrUpr; 830 1.1 jakllsch 831 1.1 jakllsch // for supporting fat volumes 832 1.1 jakllsch EFI_UNICODE_FATTOSTR FatToStr; 833 1.1 jakllsch EFI_UNICODE_STRTOFAT StrToFat; 834 1.1 jakllsch 835 1.1 jakllsch CHAR8 *SupportedLanguages; 836 1.1.1.2 jmcneill } EFI_UNICODE_COLLATION_PROTOCOL; 837 1.1.1.2 jmcneill 838 1.1.1.2 jmcneill typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE; 839 1.1 jakllsch 840 1.1 jakllsch /* Graphics output protocol */ 841 1.1 jakllsch #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \ 842 1.1.1.2 jmcneill { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } } 843 1.1 jakllsch typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL; 844 1.1 jakllsch 845 1.1 jakllsch typedef struct { 846 1.1 jakllsch UINT32 RedMask; 847 1.1 jakllsch UINT32 GreenMask; 848 1.1 jakllsch UINT32 BlueMask; 849 1.1 jakllsch UINT32 ReservedMask; 850 1.1 jakllsch } EFI_PIXEL_BITMASK; 851 1.1 jakllsch 852 1.1 jakllsch typedef enum { 853 1.1 jakllsch PixelRedGreenBlueReserved8BitPerColor, 854 1.1 jakllsch PixelBlueGreenRedReserved8BitPerColor, 855 1.1 jakllsch PixelBitMask, 856 1.1 jakllsch PixelBltOnly, 857 1.1 jakllsch PixelFormatMax 858 1.1 jakllsch } EFI_GRAPHICS_PIXEL_FORMAT; 859 1.1 jakllsch 860 1.1 jakllsch typedef struct { 861 1.1 jakllsch UINT32 Version; 862 1.1 jakllsch UINT32 HorizontalResolution; 863 1.1 jakllsch UINT32 VerticalResolution; 864 1.1 jakllsch EFI_GRAPHICS_PIXEL_FORMAT PixelFormat; 865 1.1 jakllsch EFI_PIXEL_BITMASK PixelInformation; 866 1.1 jakllsch UINT32 PixelsPerScanLine; 867 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION; 868 1.1 jakllsch 869 1.1 jakllsch /** 870 1.1 jakllsch Return the current video mode information. 871 1.1 jakllsch 872 1.1 jakllsch @param This Protocol instance pointer. 873 1.1 jakllsch @param ModeNumber The mode number to return information on. 874 1.1 jakllsch @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer. 875 1.1 jakllsch @param Info A pointer to callee allocated buffer that returns information about ModeNumber. 876 1.1 jakllsch 877 1.1 jakllsch @retval EFI_SUCCESS Mode information returned. 878 1.1 jakllsch @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small. 879 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode. 880 1.1 jakllsch @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode () 881 1.1 jakllsch @retval EFI_INVALID_PARAMETER One of the input args was NULL. 882 1.1 jakllsch 883 1.1 jakllsch **/ 884 1.1 jakllsch typedef 885 1.1 jakllsch EFI_STATUS 886 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) ( 887 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, 888 1.1 jakllsch IN UINT32 ModeNumber, 889 1.1 jakllsch OUT UINTN *SizeOfInfo, 890 1.1 jakllsch OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info 891 1.1 jakllsch ) 892 1.1 jakllsch ; 893 1.1 jakllsch 894 1.1 jakllsch /** 895 1.1 jakllsch Return the current video mode information. 896 1.1 jakllsch 897 1.1 jakllsch @param This Protocol instance pointer. 898 1.1 jakllsch @param ModeNumber The mode number to be set. 899 1.1 jakllsch 900 1.1 jakllsch @retval EFI_SUCCESS Graphics mode was changed. 901 1.1 jakllsch @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 902 1.1 jakllsch @retval EFI_UNSUPPORTED ModeNumber is not supported by this device. 903 1.1 jakllsch 904 1.1 jakllsch **/ 905 1.1 jakllsch typedef 906 1.1 jakllsch EFI_STATUS 907 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) ( 908 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, 909 1.1 jakllsch IN UINT32 ModeNumber 910 1.1 jakllsch ); 911 1.1 jakllsch 912 1.1 jakllsch typedef struct { 913 1.1 jakllsch UINT8 Blue; 914 1.1 jakllsch UINT8 Green; 915 1.1 jakllsch UINT8 Red; 916 1.1 jakllsch UINT8 Reserved; 917 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL; 918 1.1 jakllsch 919 1.1 jakllsch typedef union { 920 1.1 jakllsch EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel; 921 1.1 jakllsch UINT32 Raw; 922 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; 923 1.1 jakllsch 924 1.1 jakllsch typedef enum { 925 1.1 jakllsch EfiBltVideoFill, 926 1.1 jakllsch EfiBltVideoToBltBuffer, 927 1.1.1.2 jmcneill EfiBltBufferToVideo, 928 1.1 jakllsch EfiBltVideoToVideo, 929 1.1 jakllsch EfiGraphicsOutputBltOperationMax 930 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_OPERATION; 931 1.1 jakllsch 932 1.1 jakllsch /** 933 1.1 jakllsch The following table defines actions for BltOperations: 934 1.1 jakllsch 935 1.1.1.2 jmcneill <B>EfiBltVideoFill</B> - Write data from the BltBuffer pixel (SourceX, SourceY) 936 1.1.1.2 jmcneill directly to every pixel of the video display rectangle 937 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). 938 1.1 jakllsch Only one pixel will be used from the BltBuffer. Delta is NOT used. 939 1.1 jakllsch 940 1.1.1.2 jmcneill <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle 941 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in 942 1.1.1.2 jmcneill the BltBuffer rectangle (DestinationX, DestinationY ) 943 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If DestinationX or 944 1.1.1.2 jmcneill DestinationY is not zero then Delta must be set to the length in bytes 945 1.1 jakllsch of a row in the BltBuffer. 946 1.1 jakllsch 947 1.1.1.2 jmcneill <B>EfiBltBufferToVideo</B> - Write data from the BltBuffer rectangle 948 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the 949 1.1.1.2 jmcneill video display rectangle (DestinationX, DestinationY) 950 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is 951 1.1.1.2 jmcneill not zero then Delta must be set to the length in bytes of a row in the 952 1.1 jakllsch BltBuffer. 953 1.1 jakllsch 954 1.1 jakllsch <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY) 955 1.1.1.2 jmcneill (SourceX + Width, SourceY + Height) .to the video display rectangle 956 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). 957 1.1 jakllsch The BltBuffer and Delta are not used in this mode. 958 1.1 jakllsch 959 1.1 jakllsch @param This Protocol instance pointer. 960 1.1 jakllsch @param BltBuffer Buffer containing data to blit into video buffer. This 961 1.1 jakllsch buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) 962 1.1 jakllsch @param BltOperation Operation to perform on BlitBuffer and video memory 963 1.1 jakllsch @param SourceX X coordinate of source for the BltBuffer. 964 1.1 jakllsch @param SourceY Y coordinate of source for the BltBuffer. 965 1.1 jakllsch @param DestinationX X coordinate of destination for the BltBuffer. 966 1.1 jakllsch @param DestinationY Y coordinate of destination for the BltBuffer. 967 1.1 jakllsch @param Width Width of rectangle in BltBuffer in pixels. 968 1.1 jakllsch @param Height Hight of rectangle in BltBuffer in pixels. 969 1.1 jakllsch @param Delta OPTIONAL 970 1.1 jakllsch 971 1.1 jakllsch @retval EFI_SUCCESS The Blt operation completed. 972 1.1 jakllsch @retval EFI_INVALID_PARAMETER BltOperation is not valid. 973 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer. 974 1.1 jakllsch 975 1.1 jakllsch **/ 976 1.1 jakllsch typedef 977 1.1 jakllsch EFI_STATUS 978 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) ( 979 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, 980 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL 981 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, 982 1.1 jakllsch IN UINTN SourceX, 983 1.1 jakllsch IN UINTN SourceY, 984 1.1 jakllsch IN UINTN DestinationX, 985 1.1 jakllsch IN UINTN DestinationY, 986 1.1 jakllsch IN UINTN Width, 987 1.1 jakllsch IN UINTN Height, 988 1.1 jakllsch IN UINTN Delta OPTIONAL 989 1.1 jakllsch ); 990 1.1 jakllsch 991 1.1 jakllsch typedef struct { 992 1.1 jakllsch UINT32 MaxMode; 993 1.1 jakllsch UINT32 Mode; 994 1.1 jakllsch EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info; 995 1.1 jakllsch UINTN SizeOfInfo; 996 1.1 jakllsch EFI_PHYSICAL_ADDRESS FrameBufferBase; 997 1.1 jakllsch UINTN FrameBufferSize; 998 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; 999 1.1 jakllsch 1000 1.1 jakllsch struct _EFI_GRAPHICS_OUTPUT_PROTOCOL { 1001 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode; 1002 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode; 1003 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt; 1004 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode; 1005 1.1 jakllsch }; 1006 1.1 jakllsch 1007 1.1.1.2 jmcneill 1008 1.1.1.2 jmcneill 1009 1.1.1.2 jmcneill /* 1010 1.1.1.2 jmcneill * EFI EDID Discovered Protocol 1011 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9 1012 1.1.1.2 jmcneill */ 1013 1.1.1.2 jmcneill #define EFI_EDID_DISCOVERED_PROTOCOL_GUID \ 1014 1.1.1.2 jmcneill { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} } 1015 1.1.1.2 jmcneill 1016 1.1.1.2 jmcneill typedef struct _EFI_EDID_DISCOVERED_PROTOCOL { 1017 1.1.1.2 jmcneill UINT32 SizeOfEdid; 1018 1.1.1.2 jmcneill UINT8 *Edid; 1019 1.1.1.2 jmcneill } EFI_EDID_DISCOVERED_PROTOCOL; 1020 1.1.1.2 jmcneill 1021 1.1.1.2 jmcneill 1022 1.1.1.2 jmcneill 1023 1.1.1.2 jmcneill /* 1024 1.1.1.2 jmcneill * EFI EDID Active Protocol 1025 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9 1026 1.1.1.2 jmcneill */ 1027 1.1.1.2 jmcneill #define EFI_EDID_ACTIVE_PROTOCOL_GUID \ 1028 1.1.1.2 jmcneill { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} } 1029 1.1.1.2 jmcneill 1030 1.1.1.2 jmcneill typedef struct _EFI_EDID_ACTIVE_PROTOCOL { 1031 1.1.1.2 jmcneill UINT32 SizeOfEdid; 1032 1.1.1.2 jmcneill UINT8 *Edid; 1033 1.1.1.2 jmcneill } EFI_EDID_ACTIVE_PROTOCOL; 1034 1.1.1.2 jmcneill 1035 1.1.1.2 jmcneill 1036 1.1.1.2 jmcneill 1037 1.1.1.2 jmcneill /* 1038 1.1.1.2 jmcneill * EFI EDID Override Protocol 1039 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9 1040 1.1.1.2 jmcneill */ 1041 1.1.1.2 jmcneill #define EFI_EDID_OVERRIDE_PROTOCOL_GUID \ 1042 1.1.1.2 jmcneill { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} } 1043 1.1.1.2 jmcneill 1044 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL); 1045 1.1.1.2 jmcneill 1046 1.1.1.2 jmcneill typedef 1047 1.1.1.2 jmcneill EFI_STATUS 1048 1.1.1.2 jmcneill (EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID) ( 1049 1.1.1.2 jmcneill IN struct _EFI_EDID_OVERRIDE_PROTOCOL *This, 1050 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandle, 1051 1.1.1.2 jmcneill OUT UINT32 *Attributes, 1052 1.1.1.2 jmcneill IN OUT UINTN *EdidSize, 1053 1.1.1.2 jmcneill IN OUT UINT8 **Edid); 1054 1.1.1.2 jmcneill 1055 1.1.1.2 jmcneill typedef struct _EFI_EDID_OVERRIDE_PROTOCOL { 1056 1.1.1.2 jmcneill EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid; 1057 1.1.1.2 jmcneill } EFI_EDID_OVERRIDE_PROTOCOL; 1058 1.1.1.2 jmcneill 1059 1.1.1.2 jmcneill 1060 1.1.1.2 jmcneill 1061 1.1 jakllsch INTERFACE_DECL(_EFI_SERVICE_BINDING); 1062 1.1 jakllsch 1063 1.1 jakllsch typedef 1064 1.1 jakllsch EFI_STATUS 1065 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) ( 1066 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This, 1067 1.1 jakllsch IN EFI_HANDLE *ChildHandle 1068 1.1 jakllsch ); 1069 1.1 jakllsch 1070 1.1 jakllsch typedef 1071 1.1 jakllsch EFI_STATUS 1072 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) ( 1073 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This, 1074 1.1 jakllsch IN EFI_HANDLE ChildHandle 1075 1.1 jakllsch ); 1076 1.1 jakllsch 1077 1.1 jakllsch typedef struct _EFI_SERVICE_BINDING { 1078 1.1 jakllsch EFI_SERVICE_BINDING_CREATE_CHILD CreateChild; 1079 1.1 jakllsch EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild; 1080 1.1 jakllsch } EFI_SERVICE_BINDING; 1081 1.1 jakllsch 1082 1.1 jakllsch 1083 1.1.1.2 jmcneill 1084 1.1.1.2 jmcneill /* 1085 1.1.1.2 jmcneill * EFI Driver Binding Protocol 1086 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.1 1087 1.1.1.2 jmcneill */ 1088 1.1.1.2 jmcneill #define EFI_DRIVER_BINDING_PROTOCOL_GUID \ 1089 1.1.1.2 jmcneill { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} } 1090 1.1.1.2 jmcneill #define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID 1091 1.1.1.2 jmcneill 1092 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL); 1093 1.1.1.2 jmcneill 1094 1.1.1.2 jmcneill typedef 1095 1.1.1.2 jmcneill EFI_STATUS 1096 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED) ( 1097 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, 1098 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1099 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL); 1100 1.1.1.2 jmcneill 1101 1.1.1.2 jmcneill typedef 1102 1.1.1.2 jmcneill EFI_STATUS 1103 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START) ( 1104 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, 1105 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1106 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL); 1107 1.1.1.2 jmcneill 1108 1.1.1.2 jmcneill typedef 1109 1.1.1.2 jmcneill EFI_STATUS 1110 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP) ( 1111 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, 1112 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1113 1.1.1.2 jmcneill IN UINTN NumberOfChildren, 1114 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandleBuffer OPTIONAL); 1115 1.1.1.2 jmcneill 1116 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL { 1117 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported; 1118 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_START Start; 1119 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_STOP Stop; 1120 1.1.1.2 jmcneill UINT32 Version; 1121 1.1.1.2 jmcneill EFI_HANDLE ImageHandle; 1122 1.1.1.2 jmcneill EFI_HANDLE DriverBindingHandle; 1123 1.1.1.2 jmcneill } EFI_DRIVER_BINDING_PROTOCOL; 1124 1.1.1.2 jmcneill 1125 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING; 1126 1.1.1.2 jmcneill typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING; 1127 1.1.1.2 jmcneill 1128 1.1.1.2 jmcneill 1129 1.1.1.2 jmcneill /* 1130 1.1.1.2 jmcneill * Backwards compatibility with older GNU-EFI versions. Deprecated. 1131 1.1.1.2 jmcneill */ 1132 1.1.1.2 jmcneill #define EFI_DRIVER_SUPPORTED EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED 1133 1.1.1.2 jmcneill #define EFI_DRIVER_START EFI_DRIVER_BINDING_PROTOCOL_START 1134 1.1.1.2 jmcneill #define EFI_DRIVER_STOP EFI_DRIVER_BINDING_PROTOCOL_STOP 1135 1.1.1.2 jmcneill 1136 1.1.1.2 jmcneill 1137 1.1.1.2 jmcneill 1138 1.1.1.2 jmcneill /* 1139 1.1.1.2 jmcneill * EFI Component Name Protocol 1140 1.1.1.2 jmcneill * Deprecated - use EFI Component Name 2 Protocol instead 1141 1.1.1.2 jmcneill */ 1142 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME_PROTOCOL_GUID \ 1143 1.1.1.2 jmcneill {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } 1144 1.1.1.2 jmcneill #define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID 1145 1.1.1.2 jmcneill 1146 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL); 1147 1.1.1.2 jmcneill 1148 1.1.1.2 jmcneill typedef 1149 1.1.1.2 jmcneill EFI_STATUS 1150 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) ( 1151 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This, 1152 1.1.1.2 jmcneill IN CHAR8 *Language, 1153 1.1.1.2 jmcneill OUT CHAR16 **DriverName); 1154 1.1.1.2 jmcneill 1155 1.1.1.2 jmcneill typedef 1156 1.1.1.2 jmcneill EFI_STATUS 1157 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) ( 1158 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This, 1159 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1160 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL, 1161 1.1.1.2 jmcneill IN CHAR8 *Language, 1162 1.1.1.2 jmcneill OUT CHAR16 **ControllerName); 1163 1.1.1.2 jmcneill 1164 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL { 1165 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName; 1166 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName; 1167 1.1.1.2 jmcneill CHAR8 *SupportedLanguages; 1168 1.1.1.2 jmcneill } EFI_COMPONENT_NAME_PROTOCOL; 1169 1.1.1.2 jmcneill 1170 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME; 1171 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME; 1172 1.1.1.2 jmcneill 1173 1.1.1.2 jmcneill 1174 1.1.1.2 jmcneill /* 1175 1.1.1.2 jmcneill * EFI Component Name 2 Protocol 1176 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.5 1177 1.1.1.2 jmcneill */ 1178 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \ 1179 1.1.1.2 jmcneill {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} } 1180 1.1.1.2 jmcneill #define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID 1181 1.1.1.2 jmcneill 1182 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL); 1183 1.1.1.2 jmcneill 1184 1.1.1.2 jmcneill typedef 1185 1.1.1.2 jmcneill EFI_STATUS 1186 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ( 1187 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This, 1188 1.1.1.2 jmcneill IN CHAR8 *Language, 1189 1.1.1.2 jmcneill OUT CHAR16 **DriverName); 1190 1.1.1.2 jmcneill 1191 1.1.1.2 jmcneill typedef 1192 1.1.1.2 jmcneill EFI_STATUS 1193 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ( 1194 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This, 1195 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1196 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL, 1197 1.1.1.2 jmcneill IN CHAR8 *Language, 1198 1.1.1.2 jmcneill OUT CHAR16 **ControllerName); 1199 1.1.1.2 jmcneill 1200 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL { 1201 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName; 1202 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName; 1203 1.1.1.2 jmcneill CHAR8 *SupportedLanguages; 1204 1.1.1.2 jmcneill } EFI_COMPONENT_NAME2_PROTOCOL; 1205 1.1.1.2 jmcneill 1206 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2; 1207 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2; 1208 1.1.1.2 jmcneill 1209 1.1.1.2 jmcneill 1210 1.1.1.2 jmcneill 1211 1.1.1.2 jmcneill /* 1212 1.1.1.2 jmcneill * EFI Loaded Image Protocol 1213 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 8.1 1214 1.1.1.2 jmcneill */ 1215 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_GUID \ 1216 1.1.1.2 jmcneill { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } 1217 1.1.1.2 jmcneill #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID 1218 1.1.1.2 jmcneill 1219 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000 1220 1.1.1.2 jmcneill #define EFI_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION 1221 1.1.1.2 jmcneill 1222 1.1.1.2 jmcneill typedef 1223 1.1.1.2 jmcneill EFI_STATUS 1224 1.1.1.2 jmcneill (EFIAPI *EFI_IMAGE_UNLOAD) ( 1225 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle 1226 1.1.1.2 jmcneill ); 1227 1.1.1.2 jmcneill 1228 1.1.1.2 jmcneill typedef struct { 1229 1.1.1.2 jmcneill UINT32 Revision; 1230 1.1.1.2 jmcneill EFI_HANDLE ParentHandle; 1231 1.1.1.2 jmcneill struct _EFI_SYSTEM_TABLE *SystemTable; 1232 1.1.1.2 jmcneill 1233 1.1.1.2 jmcneill // Source location of image 1234 1.1.1.2 jmcneill EFI_HANDLE DeviceHandle; 1235 1.1.1.2 jmcneill EFI_DEVICE_PATH *FilePath; 1236 1.1.1.2 jmcneill VOID *Reserved; 1237 1.1.1.2 jmcneill 1238 1.1.1.2 jmcneill // Images load options 1239 1.1.1.2 jmcneill UINT32 LoadOptionsSize; 1240 1.1.1.2 jmcneill VOID *LoadOptions; 1241 1.1.1.2 jmcneill 1242 1.1.1.2 jmcneill // Location of where image was loaded 1243 1.1.1.2 jmcneill VOID *ImageBase; 1244 1.1.1.2 jmcneill UINT64 ImageSize; 1245 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageCodeType; 1246 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageDataType; 1247 1.1.1.2 jmcneill 1248 1.1.1.2 jmcneill // If the driver image supports a dynamic unload request 1249 1.1.1.2 jmcneill EFI_IMAGE_UNLOAD Unload; 1250 1.1.1.2 jmcneill } EFI_LOADED_IMAGE_PROTOCOL; 1251 1.1.1.2 jmcneill 1252 1.1.1.2 jmcneill typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE; 1253 1.1.1.2 jmcneill 1254 1.1.1.3 jmcneill #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \ 1255 1.1.1.3 jmcneill {0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf} } 1256 1.1.1.2 jmcneill 1257 1.1.1.2 jmcneill /* 1258 1.1.1.2 jmcneill * Random Number Generator Protocol 1259 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 35.5 1260 1.1.1.2 jmcneill */ 1261 1.1.1.2 jmcneill #define EFI_RNG_PROTOCOL_GUID \ 1262 1.1.1.2 jmcneill { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} } 1263 1.1.1.2 jmcneill 1264 1.1.1.2 jmcneill typedef EFI_GUID EFI_RNG_ALGORITHM; 1265 1.1.1.2 jmcneill 1266 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \ 1267 1.1.1.2 jmcneill {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} } 1268 1.1.1.2 jmcneill 1269 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \ 1270 1.1.1.2 jmcneill {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} } 1271 1.1.1.2 jmcneill 1272 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \ 1273 1.1.1.2 jmcneill {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} } 1274 1.1.1.2 jmcneill 1275 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \ 1276 1.1.1.2 jmcneill {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} } 1277 1.1.1.2 jmcneill 1278 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_AES_GUID \ 1279 1.1.1.2 jmcneill {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} } 1280 1.1.1.2 jmcneill 1281 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_RAW \ 1282 1.1.1.2 jmcneill {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} } 1283 1.1.1.2 jmcneill 1284 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_RNG_PROTOCOL); 1285 1.1.1.2 jmcneill 1286 1.1.1.2 jmcneill typedef 1287 1.1.1.2 jmcneill EFI_STATUS 1288 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_INFO) ( 1289 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This, 1290 1.1.1.2 jmcneill IN OUT UINTN *RNGAlgorithmListSize, 1291 1.1.1.2 jmcneill OUT EFI_RNG_ALGORITHM *RNGAlgorithmList 1292 1.1.1.2 jmcneill ); 1293 1.1.1.2 jmcneill 1294 1.1.1.2 jmcneill typedef 1295 1.1.1.2 jmcneill EFI_STATUS 1296 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_RNG) ( 1297 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This, 1298 1.1.1.2 jmcneill IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL 1299 1.1.1.2 jmcneill IN UINTN RNGValueLength, 1300 1.1.1.2 jmcneill OUT UINT8 *RNGValue 1301 1.1.1.2 jmcneill ); 1302 1.1.1.2 jmcneill 1303 1.1.1.2 jmcneill typedef struct _EFI_RNG_PROTOCOL { 1304 1.1.1.2 jmcneill EFI_RNG_GET_INFO GetInfo; 1305 1.1.1.2 jmcneill EFI_RNG_GET_RNG GetRNG; 1306 1.1.1.2 jmcneill } EFI_RNG_PROTOCOL; 1307 1.1.1.2 jmcneill 1308 1.1.1.2 jmcneill 1309 1.1.1.2 jmcneill // 1310 1.1.1.2 jmcneill // EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL 1311 1.1.1.2 jmcneill // 1312 1.1.1.2 jmcneill 1313 1.1.1.2 jmcneill #define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \ 1314 1.1.1.2 jmcneill { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 1315 1.1.1.2 jmcneill 1316 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL); 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) ( 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_HANDLE *DriverImageHandle); 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_GET_DRIVER_PATH) ( 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 OUT EFI_DEVICE_PATH **DriverImagePath); 1331 1.1.1.2 jmcneill 1332 1.1.1.2 jmcneill typedef 1333 1.1.1.2 jmcneill EFI_STATUS 1334 1.1.1.2 jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED) ( 1335 1.1.1.2 jmcneill IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, 1336 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle, 1337 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *DriverImagePath, 1338 1.1.1.2 jmcneill IN EFI_HANDLE DriverImageHandle); 1339 1.1.1.2 jmcneill 1340 1.1.1.2 jmcneill typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL { 1341 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver; 1342 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath; 1343 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded; 1344 1.1.1.2 jmcneill } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; 1345 1.1.1.2 jmcneill 1346 1.1.1.2 jmcneill // 1347 1.1.1.2 jmcneill // EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL 1348 1.1.1.2 jmcneill // 1349 1.1.1.2 jmcneill 1350 1.1.1.2 jmcneill #define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \ 1351 1.1.1.2 jmcneill { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} } 1352 1.1.1.2 jmcneill 1353 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL); 1354 1.1.1.2 jmcneill 1355 1.1.1.2 jmcneill typedef 1356 1.1.1.2 jmcneill EFI_STATUS 1357 1.1.1.2 jmcneill (EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER) ( 1358 1.1.1.2 jmcneill IN struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This, 1359 1.1.1.2 jmcneill IN OUT EFI_HANDLE *DriverImageHandle); 1360 1.1.1.2 jmcneill 1361 1.1.1.2 jmcneill typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL { 1362 1.1.1.2 jmcneill EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver; 1363 1.1.1.2 jmcneill } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; 1364 1.1.1.2 jmcneill 1365 1.1.1.2 jmcneill // 1366 1.1.1.2 jmcneill // EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL 1367 1.1.1.2 jmcneill // 1368 1.1.1.2 jmcneill 1369 1.1.1.2 jmcneill #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \ 1370 1.1.1.2 jmcneill { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} } 1371 1.1.1.2 jmcneill 1372 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL); 1373 1.1.1.2 jmcneill 1374 1.1.1.2 jmcneill typedef 1375 1.1.1.2 jmcneill UINT32 1376 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION) ( 1377 1.1.1.2 jmcneill IN struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This); 1378 1.1.1.2 jmcneill 1379 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { 1380 1.1.1.2 jmcneill EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; 1381 1.1.1.2 jmcneill } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; 1382 1.1.1.2 jmcneill 1383 1.1.1.2 jmcneill // 1384 1.1.1.2 jmcneill // EFI_EBC_PROTOCOL 1385 1.1.1.2 jmcneill // 1386 1.1.1.2 jmcneill 1387 1.1.1.2 jmcneill #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \ 1388 1.1.1.2 jmcneill {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} } 1389 1.1.1.2 jmcneill 1390 1.1.1.2 jmcneill #define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID 1391 1.1.1.2 jmcneill 1392 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EBC_PROTOCOL); 1393 1.1.1.2 jmcneill 1394 1.1.1.2 jmcneill typedef 1395 1.1.1.2 jmcneill EFI_STATUS 1396 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_CREATE_THUNK)( 1397 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This, 1398 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle, 1399 1.1.1.2 jmcneill IN VOID *EbcEntryPoint, 1400 1.1.1.2 jmcneill OUT VOID **Thunk); 1401 1.1.1.2 jmcneill 1402 1.1.1.2 jmcneill typedef 1403 1.1.1.2 jmcneill EFI_STATUS 1404 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_UNLOAD_IMAGE)( 1405 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This, 1406 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle); 1407 1.1.1.2 jmcneill 1408 1.1.1.2 jmcneill typedef 1409 1.1.1.2 jmcneill EFI_STATUS 1410 1.1.1.2 jmcneill (EFIAPI *EBC_ICACHE_FLUSH)( 1411 1.1.1.2 jmcneill IN EFI_PHYSICAL_ADDRESS Start, 1412 1.1.1.2 jmcneill IN UINT64 Length); 1413 1.1.1.2 jmcneill 1414 1.1.1.2 jmcneill typedef 1415 1.1.1.2 jmcneill EFI_STATUS 1416 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)( 1417 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This, 1418 1.1.1.2 jmcneill IN EBC_ICACHE_FLUSH Flush); 1419 1.1.1.2 jmcneill 1420 1.1.1.2 jmcneill typedef 1421 1.1.1.2 jmcneill EFI_STATUS 1422 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_GET_VERSION)( 1423 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This, 1424 1.1.1.2 jmcneill IN OUT UINT64 *Version); 1425 1.1.1.2 jmcneill 1426 1.1.1.2 jmcneill typedef struct _EFI_EBC_PROTOCOL { 1427 1.1.1.2 jmcneill EFI_EBC_CREATE_THUNK CreateThunk; 1428 1.1.1.2 jmcneill EFI_EBC_UNLOAD_IMAGE UnloadImage; 1429 1.1.1.2 jmcneill EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush; 1430 1.1.1.2 jmcneill EFI_EBC_GET_VERSION GetVersion; 1431 1.1.1.2 jmcneill } EFI_EBC_PROTOCOL; 1432 1.1.1.2 jmcneill 1433 1.1.1.2 jmcneill #endif 1434