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