Unified Extensible Firmware Interface · 2014. 8. 1. · Unified Extensible Firmware Interface...
Transcript of Unified Extensible Firmware Interface · 2014. 8. 1. · Unified Extensible Firmware Interface...
-
Unified Extensible Firmware InterfaceSpecification
Version 2.1January 23, 2007
-
Unified Extensible Firmware Interface Specification
Acknowledgements
The material contained herein is not a license, either expressly or impliedly, to any intellectual property owned or controlled by any of the authors or developers of this material or to any contribution thereto. The material contained herein is provided on an "AS IS" basis and, to the maximum extent permitted by applicable law, this information is provided AS IS AND WITH ALL FAULTS, and the authors and developers of this material hereby disclaim all other warranties and conditions, either express, implied or statutory, including, but not limited to, any (if any) implied warranties, duties or conditions of merchantability, of fitness for a particular purpose, of accuracy or completeness of responses, of results, of workmanlike effort, of lack of viruses and of lack of negligence, all with regard to this material and any contribution thereto. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." The Unified EFI Forum, Inc. reserves any features or instructions so marked for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THE SPECIFICATION AND ANY CONTRIBUTION THERETO. IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THIS MATERIAL OR ANY CONTRIBUTION THERETO BE LIABLE TO ANY OTHER PARTY FOR THE COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
Copyright 2006, 2007 Unified EFI, Inc. All Rights Reserved.
ii January 23, 2007 Version 2.1
-
Revision History
Revision Revision History Date2.0 First release of specification. January 31, 2006
2.1 Draft January 23, 2007
-
Unified Extensible Firmware Interface Specification
iv January 23, 2007 Version 2.1
-
Contents
Acknowledgements............................................................................................. iiRevision History ................................................................................................. iiiContents ............................................................................................................... vFigures............................................................................................................. xxixTables ............................................................................................................ xxxiii1
Introduction..................................................................................................... 11.1 UEFI Driver Model Extensions.......................................................................................... 11.2 Overview ........................................................................................................................... 21.3 Goals................................................................................................................................. 51.4 Target Audience................................................................................................................ 71.5 UEFI Design Overview...................................................................................................... 71.6 UEFI Driver Model ............................................................................................................ 9
1.6.1 UEFI Driver Model Goals ...................................................................................... 91.6.2 Legacy Option ROM Issues ................................................................................ 10
1.7 Migration Requirements.................................................................................................. 101.7.1 Legacy Operating System Support ..................................................................... 101.7.2 Supporting the UEFI Specification on a Legacy Platform ................................... 11
1.8 Conventions Used in this Document............................................................................... 111.8.1 Data Structure Descriptions ................................................................................ 111.8.2 Protocol Descriptions .......................................................................................... 111.8.3 Procedure Descriptions....................................................................................... 121.8.4 Instruction Descriptions....................................................................................... 121.8.5 Pseudo-Code Conventions ................................................................................. 121.8.6 Typographic Conventions ................................................................................... 13
2 Overview........................................................................................................ 152.1 Boot Manager ................................................................................................................. 15
2.1.1 UEFI Images ....................................................................................................... 162.1.2 Applications......................................................................................................... 172.1.3 UEFI OS Loaders................................................................................................ 172.1.4 UEFI Drivers........................................................................................................ 18
2.2 Firmware Core ................................................................................................................ 182.2.1 UEFI Services ..................................................................................................... 182.2.2 Runtime Services ................................................................................................ 19
2.3 Calling Conventions ........................................................................................................ 202.3.1 Data Types.......................................................................................................... 202.3.2 IA-32 Platforms ................................................................................................... 222.3.3 Intel® Itanium®-Based Platforms......................................................................... 242.3.4 x64 Platforms ...................................................................................................... 26
Version 2.1 January 23, 2007 v
-
Unified Extensible Firmware Interface Specification
2.4 Protocols ......................................................................................................................... 282.5 UEFI Driver Model .......................................................................................................... 33
2.5.1 Legacy Option ROM Issues ................................................................................ 342.5.2 Driver Initialization............................................................................................... 362.5.3 Host Bus Controllers ........................................................................................... 382.5.4 Device Drivers..................................................................................................... 402.5.5 Bus Drivers.......................................................................................................... 412.5.6 Platform Components ......................................................................................... 432.5.7 Hot-Plug Events .................................................................................................. 442.5.8 EFI Services Binding........................................................................................... 44
2.6 Requirements.................................................................................................................. 462.6.1 Required Elements.............................................................................................. 462.6.2 Platform-Specific Elements ................................................................................ 472.6.3 Driver-Specific Elements..................................................................................... 48
3 Boot Manager................................................................................................ 513.1 Firmware Boot Manager ................................................................................................. 51
3.1.1 Boot Manager Programming ............................................................................... 523.1.2 Load Option Processing...................................................................................... 523.1.3 Load Options....................................................................................................... 533.1.4 Boot Manager Capabilities .................................................................................. 553.1.5 Launching Boot#### Applications....................................................................... 553.1.6 Launching Boot#### Load Options Using Hot Keys ........................................... 56
3.2 Globally Defined Variables.............................................................................................. 583.3 Boot Option Variables Default Boot Behavior ................................................................. 603.4 Boot Mechanisms ........................................................................................................... 61
3.4.1 Boot via the Simple File Protocol ........................................................................ 613.4.2 Boot via LOAD_FILE PROTOCOL...................................................................... 62
4 EFI System Table.......................................................................................... 654.1 UEFI Image Entry Point .................................................................................................. 65
EFI_IMAGE_ENTRY_POINT.............................................................................. 654.2 EFI Table Header ........................................................................................................... 66
EFI_TABLE_HEADER ........................................................................................ 674.3 EFI System Table .......................................................................................................... 68
EFI_SYSTEM_TABLE......................................................................................... 684.4 EFI Boot Services Table ................................................................................................ 69
EFI_BOOT_SERVICES ...................................................................................... 704.5 EFI Runtime Services Table .......................................................................................... 74
EFI_RUNTIME_SERVICES ................................................................................ 744.6 EFI Configuration Table ................................................................................................. 76
EFI_CONFIGURATION_TABLE ......................................................................... 764.7 Image Entry Point Examples........................................................................................... 77
4.7.1 Image Entry Point Examples............................................................................... 784.7.2 UEFI Driver Model Example ............................................................................... 794.7.3 UEFI Driver Model Example (Unloadable) .......................................................... 80
vi January 23, 2007 Version 2.1
-
4.7.4 EFI Driver Model Example (Multiple Instances) .................................................. 81
5 GUID Partition Table (GPT) Format............................................................. 855.1 EFI Partition Formats ...................................................................................................... 855.2 LBA 0 Format.................................................................................................................. 85
5.2.1 Legacy Master Boot Record (MBR) .................................................................... 855.2.2 Protective Master Boot Record .......................................................................... 87
5.3 GUID Partition Table (GPT) Format................................................................................ 875.3.1 GUID Format overview........................................................................................ 875.3.2 GPT Partition Table Header................................................................................ 895.3.3 GUID Partition Entry Array .................................................................................. 91
6 Services — Boot Services ........................................................................... 956.1 Event, Timer, and Task Priority Services........................................................................ 96
CreateEvent() .................................................................................................... 100CreateEventEx()................................................................................................ 104CloseEvent()...................................................................................................... 107SignalEvent()..................................................................................................... 108WaitForEvent() .................................................................................................. 109CheckEvent()..................................................................................................... 111SetTimer() ......................................................................................................... 112RaiseTPL() ........................................................................................................ 114RestoreTPL()..................................................................................................... 116
6.2 Memory Allocation Services.......................................................................................... 116AllocatePages() ................................................................................................. 119FreePages() ...................................................................................................... 122GetMemoryMap() .............................................................................................. 123AllocatePool() .................................................................................................... 127FreePool() ......................................................................................................... 128
6.3 Protocol Handler Services ............................................................................................ 1286.3.1 Driver Model Boot Services............................................................................... 130
InstallProtocolInterface() ................................................................................... 133UninstallProtocolInterface() ............................................................................... 135ReinstallProtocolInterface() ............................................................................... 137RegisterProtocolNotify() .................................................................................... 139LocateHandle().................................................................................................. 141HandleProtocol() ............................................................................................... 143LocateDevicePath()........................................................................................... 145OpenProtocol() .................................................................................................. 147CloseProtocol().................................................................................................. 154OpenProtocolInformation() ................................................................................ 156ConnectController() ........................................................................................... 158DisconnectController()....................................................................................... 162ProtocolsPerHandle() ........................................................................................ 165LocateHandleBuffer() ........................................................................................ 167LocateProtocol() ................................................................................................ 170
Version 2.1 January 23, 2007 vii
-
Unified Extensible Firmware Interface Specification
InstallMultipleProtocolInterfaces() ..................................................................... 171UninstallMultipleProtocolInterfaces()................................................................. 172
6.4 Image Services ............................................................................................................. 172LoadImage() ...................................................................................................... 175StartImage() ...................................................................................................... 177UnloadImage()................................................................................................... 179EFI_IMAGE_ENTRY_POINT............................................................................ 180Exit() .................................................................................................................. 182ExitBootServices()............................................................................................. 184
6.5 Miscellaneous Boot Services ........................................................................................ 185SetWatchdogTimer() ......................................................................................... 186Stall() ................................................................................................................. 188CopyMem()........................................................................................................ 189SetMem()........................................................................................................... 190GetNextMonotonicCount()................................................................................. 191InstallConfigurationTable() ................................................................................ 192CalculateCrc32() ............................................................................................... 194
7 Services — Runtime Services ................................................................... 1957.1 Runtime Services Rules and Restrictions..................................................................... 196
7.1.1 Exception for Machine Check, INIT, and NMI. .................................................. 1967.2 Variable Services .......................................................................................................... 197
GetVariable() ..................................................................................................... 199GetNextVariableName() .................................................................................... 201SetVariable() ..................................................................................................... 203QueryVariableInfo() ........................................................................................... 209
7.2.1 Hardware Error Record Persistence ................................................................. 2107.3 Time Services ............................................................................................................... 211
GetTime() .......................................................................................................... 212SetTime()........................................................................................................... 215GetWakeupTime() ............................................................................................. 216SetWakeupTime() ............................................................................................. 217
7.4 Virtual Memory Services ............................................................................................... 218SetVirtualAddressMap() .................................................................................... 219ConvertPointer() ................................................................................................ 221
7.5 Miscellaneous Runtime Services .................................................................................. 2227.5.1 Reset System.................................................................................................... 222
ResetSystem()................................................................................................... 2237.5.2 Get Next High Monotonic Count ....................................................................... 224
GetNextHighMonotonicCount() ......................................................................... 2257.5.3 Update Capsule ................................................................................................ 226
UpdateCapsule() ............................................................................................... 227QueryCapsuleCapabilities() .............................................................................. 232
8 Protocols — EFI Loaded Image................................................................. 235
EFI_LOADED_IMAGE_PROTOCOL ................................................................ 235
viii January 23, 2007 Version 2.1
-
EFI_LOADED_IMAGE_PROTOCOL.Unload() ................................................. 237
9 Protocols — Device Path Protocol ........................................................... 2399.1 Device Path Overview................................................................................................... 2399.2 EFI Device Path Protocol .............................................................................................. 239
EFI_DEVICE_PATH_PROTOCOL.................................................................... 2399.3 Device Path Nodes ....................................................................................................... 240
9.3.1 Generic Device Path Structures........................................................................ 2419.3.2 Hardware Device Path ...................................................................................... 2429.3.3 ACPI Device Path ............................................................................................. 2449.3.4 ACPI _ADR Device Path................................................................................... 2469.3.5 Messaging Device Path .................................................................................... 2479.3.6 Media Device Path ............................................................................................ 2599.3.7 BIOS Boot Specification Device Path ............................................................... 262
9.4 Device Path Generation Rules...................................................................................... 2639.4.1 Housekeeping Rules ......................................................................................... 2639.4.2 Rules with ACPI _HID and _UID....................................................................... 2639.4.3 Rules with ACPI _ADR...................................................................................... 2649.4.4 Hardware vs. Messaging Device Path Rules .................................................... 2659.4.5 Media Device Path Rules.................................................................................. 2659.4.6 Other Rules ....................................................................................................... 265
9.5 Device Path Utilities Protocol ........................................................................................ 266EFI_DEVICE_PATH_UTILITIES_PROTOCOL................................................. 266EFI_DEVICE_PATH_UTILITIES_PROTOCOL.GetDevicePathSize() .............. 268EFI_DEVICE_PATH_UTILITIES_PROTOCOL.DuplicateDevicePath() ............ 269EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDevicePath()............... 270EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDeviceNode() ............. 271EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDevicePathInstance() . 272EFI_DEVICE_PATH_UTILITIES_PROTOCOL.GetNextDevicePathInstance() 273EFI_DEVICE_PATH_UTILITIES_PROTOCOL.CreateDeviceNode() ............... 274EFI_DEVICE_PATH_UTILITIES_PROTOCOL.IsDevicePathMultiInstance() ... 275
9.6 EFI Device Path Display Format Overview................................................................... 2759.6.1 Design Discussion............................................................................................. 2769.6.2 Device Path to Text Protocol............................................................................. 290
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL ................................................. 290EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDeviceNodeToText()... 291EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDevicePathToText().... 292
9.6.3 Device Path from Text Protocol ........................................................................ 293EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL............................................ 293EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL.ConvertTextToDeviceNode() ...
294EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL.ConvertTextToDevicePath() ....
295
10 Protocols — UEFI Driver Model ................................................................ 29710.1 EFI Driver Binding Protocol......................................................................................... 297
Version 2.1 January 23, 2007 ix
-
Unified Extensible Firmware Interface Specification
EFI_DRIVER_BINDING_PROTOCOL.............................................................. 297EFI_DRIVER_BINDING_PROTOCOL.Supported() .......................................... 300EFI_DRIVER_BINDING_PROTOCOL.Start() ................................................... 306EFI_DRIVER_BINDING_PROTOCOL.Stop() ................................................... 314
10.2 EFI Platform Driver Override Protocol ........................................................................ 317EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL..................................... 318EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.GetDriver().................. 320EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.GetDriverPath() .......... 322EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.DriverLoaded()............ 324
10.3 EFI Bus Specific Driver Override Protocol .................................................................. 325EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL .............................. 325EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL.GetDriver() ........... 327
10.4 EFI Driver Diagnostics Protocol .................................................................................. 328EFI_DRIVER_DIAGNOSTICS_PROTOCOL .................................................... 328EFI_DRIVER_DIAGNOSTICS_PROTOCOL.RunDiagnostics()........................ 330
10.5 EFI Component Name Protocol .................................................................................. 332EFI_COMPONENT_NAME2_PROTOCOL....................................................... 332EFI_COMPONENT_NAME2_PROTOCOL.GetDriverName() .......................... 334EFI_COMPONENT_NAME2_PROTOCOL.GetControllerName() .................... 335
10.6 EFI Service Binding Protocol ...................................................................................... 336EFI_SERVICE_BINDING_PROTOCOL............................................................ 336EFI_SERVICE_BINDING_PROTOCOL.CreateChild() ..................................... 338EFI_SERVICE_BINDING_PROTOCOL.DestroyChild().................................... 342
10.7 EFI Platform to Driver Configuration Protocol ............................................................. 346EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL .................. 346EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL.Query() ..... 348EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL.Response().....
35010.8 EFI Driver Supported EFI Version Protocol ................................................................ 354
EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL............................. 354
11 Protocols — Console Support .................................................................. 35511.1 Console I/O Protocol................................................................................................... 355
11.1.1 Overview ......................................................................................................... 35511.1.2 ConsoleIn Definition ....................................................................................... 355
11.2 Simple Text Input Ex Protocol..................................................................................... 357EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL................................................. 357EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.Reset().................................... 358EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx()................ 359EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState() ............................... 362EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.RegisterKeyNotify() ................ 363EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.UnregisterKeyNotify() ............. 365
11.3 Simple Text Input Protocol.......................................................................................... 365EFI_SIMPLE_TEXT_INPUT_PROTOCOL ....................................................... 365EFI_SIMPLE_TEXT_INPUT_PROTOCOL.Reset()........................................... 367EFI_SIMPLE_TEXT_INPUT_PROTOCOL.ReadKeyStroke()........................... 368
x January 23, 2007 Version 2.1
-
11.3.1 ConsoleOut or StandardError ......................................................................... 36811.4 Simple Text Output Protocol ....................................................................................... 369
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL ................................................... 369EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset()....................................... 372EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString()............................ 373EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.TestString()................................ 376EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.QueryMode() ............................. 377EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetMode().................................. 378EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute() ............................. 379EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.ClearScreen() ............................ 381EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition() ................... 382EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.EnableCursor() .......................... 383
11.5 Simple Pointer Protocol .............................................................................................. 383EFI_SIMPLE_POINTER_PROTOCOL ............................................................. 383EFI_SIMPLE_POINTER_PROTOCOL.Reset()................................................. 386EFI_SIMPLE_POINTER_PROTOCOL.GetState()............................................ 387
11.6 EFI Simple Pointer Device Paths ............................................................................... 38811.7 Absolute Pointer Protocol ........................................................................................... 391
EFI_ABSOLUTE_POINTER_PROTOCOL ....................................................... 392EFI_ABSOLUTE_POINTER_PROTOCOL.Reset()........................................... 394EFI_ABSOLUTE_POINTER_PROTOCOL.GetState()...................................... 395
11.8 Serial I/O Protocol....................................................................................................... 396EFI_SERIAL_IO_PROTOCOL.......................................................................... 396EFI_SERIAL_IO_PROTOCOL.Reset() ............................................................. 400EFI_SERIAL_IO_PROTOCOL.SetAttributes() .................................................. 401EFI_SERIAL_IO_PROTOCOL.SetControl()...................................................... 403EFI_SERIAL_IO_PROTOCOL.GetControl() ..................................................... 405EFI_SERIAL_IO_PROTOCOL.Write() .............................................................. 406EFI_SERIAL_IO_PROTOCOL.Read() .............................................................. 407
11.9 Graphics Output Protocol............................................................................................ 40711.9.1 Blt Buffer ......................................................................................................... 408
EFI_GRAPHICS_OUTPUT_PROTOCOL......................................................... 409EFI_GRAPHICS_OUTPUT_PROTOCOL.QueryMode()................................... 413EFI_GRAPHICS_OUTPUT_PROTOCOL.SetMode() ....................................... 415EFI_GRAPHICS_OUTPUT_PROTOCOL.Blt() ................................................. 416EFI_EDID_DISCOVERED_PROTOCOL .......................................................... 418EFI_EDID_ACTIVE_PROTOCOL..................................................................... 419EFI_EDID_OVERRIDE_PROTOCOL ............................................................... 420EFI_EDID_OVERRIDE_PROTOCOL.GetEdid()............................................... 421
11.10 Rules for PCI/AGP Devices .................................................................................... 422
12 Protocols - Media Access .......................................................................... 42512.1 Load File Protocol ....................................................................................................... 425
EFI_LOAD_FILE_PROTOCOL ......................................................................... 425EFI_LOAD_FILE_PROTOCOL.LoadFile() ........................................................ 426
12.2 File System Format..................................................................................................... 427
Version 2.1 January 23, 2007 xi
-
Unified Extensible Firmware Interface Specification
12.2.1 System Partition .............................................................................................. 42812.2.2 Partition Discovery .......................................................................................... 43012.2.3 Media Formats ................................................................................................ 431
12.3 Simple File System Protocol ....................................................................................... 432EFI_SIMPLE_FILE_SYSTEM_PROTOCOL..................................................... 433EFI_SIMPLE_FILE SYSTEM_PROTOCOL.OpenVolume().............................. 434
12.4 EFI File Protocol ......................................................................................................... 435EFI_FILE_PROTOCOL..................................................................................... 435EFI_FILE_PROTOCOL.Open()......................................................................... 437EFI_FILE_PROTOCOL.Close() ........................................................................ 439EFI_FILE_PROTOCOL.Delete() ....................................................................... 440EFI_FILE_PROTOCOL.Read() ......................................................................... 441EFI_FILE_PROTOCOL.Write() ......................................................................... 443EFI_FILE_PROTOCOL.SetPosition() ............................................................... 444EFI_FILE_PROTOCOL.GetPosition() ............................................................... 445EFI_FILE_PROTOCOL.GetInfo()...................................................................... 446EFI_FILE_PROTOCOL.SetInfo() ...................................................................... 448EFI_FILE_PROTOCOL.Flush()......................................................................... 450EFI_FILE_INFO................................................................................................. 450EFI_FILE_SYSTEM_INFO................................................................................ 452EFI_FILE_SYSTEM_VOLUME_LABEL............................................................ 452
12.5 Tape Boot Support...................................................................................................... 45312.5.1 Tape I/O Support............................................................................................. 45312.5.2 Tape I/O Protocol ............................................................................................ 454
EFI_TAPE_IO_PROTOCOL ............................................................................. 454EFI_TAPE_IO_PROTOCOL.TapeRead() ......................................................... 456EFI_TAPE_IO_PROTOCOL.TapeWrite() ......................................................... 458EFI_TAPE_IO_PROTOCOL.TapeRewind()...................................................... 460EFI_TAPE_IO_PROTOCOL.TapeSpace()........................................................ 461EFI_TAPE_IO_PROTOCOL.TapeWriteFM() .................................................... 463EFI_TAPE_IO_PROTOCOL.TapeReset() ........................................................ 464
12.5.3 Tape Header Format....................................................................................... 46412.6 Disk I/O Protocol ......................................................................................................... 466
EFI_DISK_IO_PROTOCOL .............................................................................. 466EFI_DISK_IO_PROTOCOL.ReadDisk() ........................................................... 468EFI_DISK_IO_PROTOCOL.WriteDisk()............................................................ 469
12.7 Block I/O Protocol ....................................................................................................... 470EFI_BLOCK_IO_PROTOCOL........................................................................... 470EFI_BLOCK_IO_PROTOCOL.Reset().............................................................. 473EFI_BLOCK_IO_PROTOCOL.ReadBlocks() .................................................... 474EFI_BLOCK_IO_PROTOCOL.WriteBlocks() .................................................... 476EFI_BLOCK_IO_PROTOCOL.FlushBlocks().................................................... 478
12.8 Unicode Collation Protocol.......................................................................................... 478EFI_UNICODE_COLLATION_ PROTOCOL..................................................... 478EFI_UNICODE_COLLATION_PROTOCOL.StriColl()....................................... 481EFI_UNICODE_COLLATION_PROTOCOL.MetaiMatch()................................ 482EFI_UNICODE_COLLATION_PROTOCOL.StrLwr()........................................ 484
xii January 23, 2007 Version 2.1
-
EFI_UNICODE_COLLATION_PROTOCOL.StrUpr()........................................ 485EFI_UNICODE_COLLATION_PROTOCOL.FatToStr() .................................... 486EFI_UNICODE_COLLATION_PROTOCOL.StrToFat() .................................... 487
13 Protocols - PCI Bus Support ..................................................................... 48913.1 PCI Root Bridge I/O Support....................................................................................... 489
13.1.1 PCI Root Bridge I/O Overview ........................................................................ 48913.2 PCI Root Bridge I/O Protocol ...................................................................................... 494
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL..................................................... 494EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem() ................................... 502EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo() ........................................ 504EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write() .......................... 506EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write() ............................... 508EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write() ............................. 510EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem() ................................ 512EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map() .......................................... 514EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap()...................................... 516EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer()........................... 517EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.FreeBuffer() ................................ 519EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Flush() ........................................ 520EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes() ............................ 521EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes()............................. 523EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Configuration()............................ 525
13.2.1 PCI Root Bridge Device Paths ........................................................................ 52613.3 PCI Driver Model......................................................................................................... 529
13.3.1 PCI Driver Initialization.................................................................................... 52913.3.2 PCI Bus Drivers............................................................................................... 53113.3.3 PCI Device Drivers.......................................................................................... 536
13.4 EFI PCI I/O Protocol ................................................................................................... 537EFI_PCI_IO_PROTOCOL................................................................................. 538EFI_PCI_IO_PROTOCOL.PollMem() ............................................................... 547EFI_PCI_IO_PROTOCOL.PollIo() .................................................................... 549EFI_PCI_IO_PROTOCOL.Mem.Read()
EFI_PCI_IO_PROTOCOL.Mem.Write() ...................................................... 551EFI_PCI_IO_PROTOCOL.Io.Read()
EFI_PCI_IO_PROTOCOL.Io.Write() ........................................................... 553EFI_PCI_IO_PROTOCOL.Pci.Read()
EFI_PCI_IO_PROTOCOL.Pci.Write() ......................................................... 555EFI_PCI_IO_PROTOCOL.CopyMem() ............................................................ 557EFI_PCI_IO_PROTOCOL.Map() ..................................................................... 560EFI_PCI_IO_PROTOCOL.Unmap().................................................................. 562EFI_PCI_IO_PROTOCOL.AllocateBuffer() ....................................................... 563EFI_PCI_IO_PROTOCOL.FreeBuffer() ............................................................ 565
Version 2.1 January 23, 2007 xiii
-
Unified Extensible Firmware Interface Specification
EFI_PCI_IO_PROTOCOL.Flush()..................................................................... 566EFI_PCI_IO_PROTOCOL.GetLocation() .......................................................... 567EFI_PCI_IO_PROTOCOL.Attributes() .............................................................. 568EFI_PCI_IO_PROTOCOL.GetBarAttributes()................................................... 571EFI_PCI_IO_PROTOCOL.SetBarAttributes() ................................................... 574
13.4.1 PCI Device Paths ........................................................................................... 57513.4.2 PCI Option ROMs ........................................................................................... 57713.4.3 Nonvolatile Storage......................................................................................... 58213.4.4 PCI Hot-Plug Events ....................................................................................... 582
14 Protocols — SCSI Driver Models and Bus Support ................................ 58314.1 SCSI Driver Model Overview ...................................................................................... 58314.2 SCSI Bus Drivers ........................................................................................................ 584
14.2.1 Driver Binding Protocol for SCSI Bus Drivers ................................................. 58414.2.2 SCSI Enumeration .......................................................................................... 585
14.3 SCSI Device Drivers ................................................................................................... 58514.3.1 Driver Binding Protocol for SCSI Device Drivers ............................................ 585
14.4 EFI SCSI I/O Protocol ................................................................................................. 586EFI_SCSI_IO_PROTOCOL .............................................................................. 586EFI_SCSI_IO_PROTOCOL.GetDeviceType() .................................................. 588EFI_SCSI_IO_PROTOCOL.GetDeviceLocation()............................................. 590EFI_SCSI_IO_PROTOCOL.ResetBus() ........................................................... 591EFI_SCSI_IO_PROTOCOL.ResetDevice()....................................................... 592EFI_SCSI_IO_PROTOCOL.ExecuteScsiCommand()....................................... 593
14.5 SCSI Device Paths ..................................................................................................... 59714.5.1 SCSI Device Path Example ............................................................................ 59714.5.2 ATAPI Device Path Example .......................................................................... 59814.5.3 Fibre Channel Device Path Example .............................................................. 59914.5.4 InfiniBand Device Path Example..................................................................... 600
14.6 SCSI Pass Thru Device Paths ................................................................................... 60114.7 Extended SCSI Pass Thru Protocol ............................................................................ 603
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.................................................... 604EFI_EXT_SCSI_PASS_THRU_PROTOCOL.PassThru()................................. 607EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetNextTargetLun()................... 613EFI_EXT_SCSI_PASS_THRU_PROTOCOL.BuildDevicePath()...................... 615EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetTargetLun() .......................... 617EFI_EXT_SCSI_PASS_THRU_PROTOCOL.ResetChannel() ......................... 619EFI_EXT_SCSI_PASS_THRU_PROTOCOL.ResetTargetLun() ...................... 620EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetNextTarget()......................... 622
15 Protocols - iSCSI Boot ............................................................................... 62515.1 Overview ..................................................................................................................... 625
15.1.1 iSCSI UEFI Driver Layering ............................................................................ 62515.2 EFI iSCSI Initiator Name Protocol............................................................................... 625
EFI_ISCSI_INITIATOR_NAME_PROTOCOL................................................... 625EFI_ISCSI_INITIATOR_NAME_PROTOCOL. Get()......................................... 627
xiv January 23, 2007 Version 2.1
-
EFI_ISCSI_INITIATOR_NAME_PROTOCOL.Set() .......................................... 628
16 Protocols — USB Support ......................................................................... 62916.1 USB2 Host Controller Protocol ................................................................................... 629
16.1.1 USB Host Controller Protocol Overview.......................................................... 629EFI_USB2_HC_PROTOCOL............................................................................ 629EFI_USB2_HC_PROTOCOL.GetCapability() ................................................... 632EFI_USB2_HC_PROTOCOL.Reset() ............................................................... 634EFI_USB2_HC_PROTOCOL.GetState() .......................................................... 636EFI_USB2_HC_PROTOCOL.SetState()........................................................... 638EFI_USB2_HC_PROTOCOL.ControlTransfer()................................................ 640EFI_USB2_HC_PROTOCOL.BulkTransfer() ................................................... 643EFI_USB2_HC_PROTOCOL.AsyncInterruptTransfer() .................................... 646EFI_USB2_HC_PROTOCOL.SyncInterruptTransfer()...................................... 649EFI_USB2_HC_PROTOCOL.IsochronousTransfer()........................................ 651EFI_USB2_HC_PROTOCOL.AsyncIsochronousTransfer().............................. 654EFI_USB2_HC_PROTOCOL.GetRootHubPortStatus().................................... 657EFI_USB2_HC_PROTOCOL.SetRootHubPortFeature() .................................. 661EFI_USB2_HC_PROTOCOL.ClearRootHubPortFeature()............................... 663
16.2 USB Driver Model ....................................................................................................... 66416.2.1 Scope .............................................................................................................. 66416.2.2 USB Bus Driver ............................................................................................... 66516.2.3 USB Device Driver .......................................................................................... 66616.2.4 USB I/O Protocol............................................................................................. 667
EFI_USB_IO_PROTOCOL ............................................................................... 667EFI_USB_IO_PROTOCOL.UsbControlTransfer()............................................. 670EFI_USB_IO_PROTOCOL.UsbBulkTransfer() ................................................. 673EFI_USB_IO_PROTOCOL.UsbAsyncInterruptTransfer() ................................. 675EFI_USB_IO_PROTOCOL.UsbSyncInterruptTransfer()................................... 679EFI_USB_IO_PROTOCOL.UsbIsochronousTransfer()..................................... 681EFI_USB_IO_PROTOCOL.UsbAsyncIsochronousTransfer()........................... 683EFI_USB_IO_PROTOCOL.UsbGetDeviceDescriptor() .................................... 685EFI_USB_IO_PROTOCOL.UsbGetConfigDescriptor() ..................................... 687EFI_USB_IO_PROTOCOL.UsbGetInterfaceDescriptor() ................................. 689EFI_USB_IO_PROTOCOL.UsbGetEndpointDescriptor() ................................. 691EFI_USB_IO_PROTOCOL.UsbGetStringDescriptor() ...................................... 693EFI_USB_IO_PROTOCOL.UsbGetSupportedLanguages() ............................. 694EFI_USB_IO_PROTOCOL.UsbPortReset()...................................................... 695
17 Protocols - Debugger Support .................................................................. 69717.1 Overview ..................................................................................................................... 69717.2 EFI Debug Support Protocol ....................................................................................... 698
17.2.1 EFI Debug Support Protocol Overview ........................................................... 698EFI_DEBUG_SUPPORT_PROTOCOL ............................................................ 698EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex()........... 701EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback()................. 702
Version 2.1 January 23, 2007 xv
-
Unified Extensible Firmware Interface Specification
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback() .............. 707EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache()............... 711
17.3 EFI Debugport Protocol .............................................................................................. 71217.3.1 EFI Debugport Overview................................................................................. 712
EFI_DEBUGPORT_PROTOCOL...................................................................... 712EFI_DEBUGPORT_PROTOCOL.Reset() ......................................................... 714EFI_DEBUGPORT_PROTOCOL.Write() .......................................................... 715EFI_DEBUGPORT_PROTOCOL.Read().......................................................... 716EFI_DEBUGPORT_PROTOCOL.Poll() ............................................................ 717
17.3.2 Debugport Device Path ................................................................................... 71717.3.3 EFI Debugport Variable................................................................................... 718
17.4 EFI Debug Support Table ........................................................................................... 71917.4.1 Overview ......................................................................................................... 71917.4.2 EFI System Table Location ............................................................................. 72017.4.3 EFI Image Info................................................................................................. 720
18 Protocols - Compression Algorithm Specification ................................. 72318.1 Algorithm Overview..................................................................................................... 72318.2 Data Format ................................................................................................................ 724
18.2.1 Bit Order.......................................................................................................... 72418.2.2 Overall Structure ............................................................................................. 72518.2.3 Block Structure................................................................................................ 726
18.3 Compressor Design .................................................................................................... 72918.3.1 Overall Process............................................................................................... 72918.3.2 String Info Log................................................................................................. 73018.3.3 Huffman Code Generation .............................................................................. 733
18.4 Decompressor Design ................................................................................................ 73518.5 Decompress Protocol.................................................................................................. 735
EFI_DECOMPRESS_PROTOCOL................................................................... 736EFI_DECOMPRESS_PROTOCOL.GetInfo().................................................... 737EFI_DECOMPRESS_PROTOCOL.Decompress() ........................................... 739
19 Protocols - ACPI Protocols........................................................................ 741
EFI_ACPI_TABLE_PROTOCOL....................................................................... 741EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable() .......................................... 742EFI_ACPI_TABLE_PROTOCOL.UninstallAcpiTable()...................................... 743
20 EFI Byte Code Virtual Machine.................................................................. 74520.1 Overview ..................................................................................................................... 745
20.1.1 Processor Architecture Independence ............................................................ 74520.1.2 OS Independent ............................................................................................. 74620.1.3 EFI Compliant ................................................................................................. 74620.1.4 Coexistence of Legacy Option ROMs ............................................................. 74620.1.5 Relocatable Image .......................................................................................... 74620.1.6 Size Restrictions Based on Memory Available ............................................... 746
xvi January 23, 2007 Version 2.1
-
20.2 Memory Ordering ........................................................................................................ 74720.3 Virtual Machine Registers ........................................................................................... 74720.4 Natural Indexing.......................................................................................................... 748
20.4.1 Sign Bit............................................................................................................ 74920.4.2 Bits Assigned to Natural Units......................................................................... 74920.4.3 Constant.......................................................................................................... 74920.4.4 Natural Units ................................................................................................... 750
20.5 EBC Instruction Operands .......................................................................................... 75020.5.1 Direct Operands .............................................................................................. 75020.5.2 Indirect Operands............................................................................................ 75120.5.3 Indirect with Index Operands .......................................................................... 75120.5.4 Immediate Operands....................................................................................... 751
20.6 EBC Instruction Syntax .............................................................................................. 75220.7 Instruction Encoding ................................................................................................... 752
20.7.1 Instruction Opcode Byte Encoding ................................................................. 75220.7.2 Instruction Operands Byte Encoding............................................................... 75320.7.3 Index/Immediate Data Encoding ..................................................................... 753
20.8 EBC Instruction Set..................................................................................................... 754ADD................................................................................................................... 755AND................................................................................................................... 756ASHR ................................................................................................................ 757BREAK .............................................................................................................. 758CALL ................................................................................................................. 760CMP .................................................................................................................. 762CMPI ................................................................................................................. 764DIV .................................................................................................................... 766DIVU.................................................................................................................. 767EXTNDB............................................................................................................ 768EXTNDD............................................................................................................ 769EXTNDW........................................................................................................... 770JMP ................................................................................................................... 771JMP8 ................................................................................................................. 773LOADSP............................................................................................................ 774MOD.................................................................................................................. 775MODU ............................................................................................................... 776MOV .................................................................................................................. 777MOVI ................................................................................................................. 779MOVIn ............................................................................................................... 781MOVn ................................................................................................................ 782MOVREL ........................................................................................................... 783MOVsn .............................................................................................................. 784MUL................................................................................................................... 786MULU ................................................................................................................ 787NEG................................................................................................................... 788NOT................................................................................................................... 789OR..................................................................................................................... 790POP................................................................................................................... 791
Version 2.1 January 23, 2007 xvii
-
Unified Extensible Firmware Interface Specification
POPn................................................................................................................. 792PUSH ................................................................................................................ 793PUSHn .............................................................................................................. 794RET ................................................................................................................... 795SHL ................................................................................................................... 796SHR................................................................................................................... 797STORESP ......................................................................................................... 798SUB................................................................................................................... 799XOR................................................................................................................... 800
20.9 Runtime and Software Conventions ........................................................................... 80120.9.1 Calling Outside VM ......................................................................................... 80120.9.2 Calling Inside VM ............................................................................................ 80120.9.3 Parameter Passing.......................................................................................... 80120.9.4 Return Values ................................................................................................. 80120.9.5 Binary Format.................................................................................................. 801
20.10 Architectural Requirements....................................................................................... 80120.10.1 EBC Image Requirements ............................................................................ 80120.10.2 EBC Execution Interfacing Requirements..................................................... 80220.10.3 Interfacing Function Parameters Requirements............................................ 80220.10.4 Function Return Requirements ..................................................................... 80220.10.5 Function Return Values Requirements ......................................................... 802
20.11 EBC Interpreter Protocol........................................................................................... 802EFI_EBC_PROTOCOL ..................................................................................... 803EFI_EBC_PROTOCOL.CreateThunk() ............................................................. 804EFI_EBC_PROTOCOL.UnloadImage() ............................................................ 805EFI_EBC_PROTOCOL.RegisterICacheFlush() ................................................ 806EFI_EBC_PROTOCOL.GetVersion()................................................................ 808
20.12 EBC Tools................................................................................................................. 80820.12.1 EBC C Compiler............................................................................................ 80820.12.2 C Coding Convention .................................................................................... 80820.12.3 EBC Interface Assembly Instructions............................................................ 80920.12.4 Stack Maintenance and Argument Passing .................................................. 80920.12.5 Native to EBC Arguments Calling Convention .............................................. 80920.12.6 EBC to Native Arguments Calling Convention .............................................. 80920.12.7 EBC to EBC Arguments Calling Convention................................................. 81020.12.8 Function Returns........................................................................................... 81020.12.9 Function Return Values................................................................................. 81020.12.10 Thunking ..................................................................................................... 81020.12.11 EBC Linker .................................................................................................. 81220.12.12 Image Loader .............................................................................................. 81320.12.13 Debug Support ............................................................................................ 813
20.13 VM Exception Handling............................................................................................. 81320.13.1 Divide By 0 Exception ................................................................................... 81320.13.2 Debug Break Exception ................................................................................ 81320.13.3 Invalid Opcode Exception ............................................................................. 81320.13.4 Stack Fault Exception ................................................................................... 81420.13.5 Alignment Exception ..................................................................................... 814
xviii January 23, 2007 Version 2.1
-
20.13.6 Instruction Encoding Exception..................................................................... 81420.13.7 Bad Break Exception..................................................................................... 81420.13.8 Undefined Exception ..................................................................................... 814
20.14 Option ROM Formats................................................................................................ 81420.14.1 EFI Drivers for PCI Add-in Cards .................................................................. 81520.14.2 Non-PCI Bus Support.................................................................................... 815
21 Network Protocols - SNP, PXE and BIS.................................................... 81721.1 Simple Network Protocol ............................................................................................ 817
EFI_SIMPLE_NETWORK_PROTOCOL........................................................... 817EFI_SIMPLE_NETWORK.Start() ...................................................................... 822EFI_SIMPLE_NETWORK.Stop() ...................................................................... 823EFI_SIMPLE_NETWORK.Initialize()................................................................. 824EFI_SIMPLE_NETWORK.Reset() .................................................................... 825EFI_SIMPLE_NETWORK.Shutdown().............................................................. 826EFI_SIMPLE_NETWORK.ReceiveFilters() ....................................................... 827EFI_SIMPLE_NETWORK.StationAddress() ..................................................... 830EFI_SIMPLE_NETWORK.Statistics() ............................................................... 831EFI_SIMPLE_NETWORK.MCastIPtoMAC() ..................................................... 834EFI_SIMPLE_NETWORK.NvData().................................................................. 835EFI_SIMPLE_NETWORK.GetStatus().............................................................. 837EFI_SIMPLE_NETWORK.Transmit()................................................................ 839EFI_SIMPLE_NETWORK.Receive()................................................................. 841
21.2 Network Interface Identifier Protocol ........................................................................... 842EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL.............................. 842
21.3 PXE Base Code Protocol............................................................................................ 845EFI_PXE_BASE_CODE_PROTOCOL ............................................................. 845EFI_PXE_BASE_CODE_PROTOCOL.Start() .................................................. 856EFI_PXE_BASE_CODE_PROTOCOL.Stop()................................................... 858EFI_PXE_BASE_CODE_PROTOCOL.Dhcp().................................................. 859EFI_PXE_BASE_CODE_PROTOCOL.Discover() ............................................ 861EFI_PXE_BASE_CODE_PROTOCOL.Mtftp() .................................................. 865EFI_PXE_BASE_CODE_PROTOCOL.UdpWrite() ........................................... 869EFI_PXE_BASE_CODE_PROTOCOL.UdpRead()........................................... 871EFI_PXE_BASE_CODE_PROTOCOL.SetIpFilter().......................................... 874EFI_PXE_BASE_CODE_PROTOCOL.Arp() .................................................... 876EFI_PXE_BASE_CODE_PROTOCOL.SetParameters() .................................. 878EFI_PXE_BASE_CODE_PROTOCOL.SetStationIp() ...................................... 880EFI_PXE_BASE_CODE_PROTOCOL.SetPackets()........................................ 882
21.4 PXE Base Code Callback Protocol ............................................................................. 883EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL ........................................ 883EFI_PXE_BASE_CODE_CALLBACK.Callback().............................................. 885
21.5 Boot Integrity Services Protocol.................................................................................. 886EFI_BIS_PROTOCOL....................................................................................... 886EFI_BIS_PROTOCOL.Initialize() ...................................................................... 889EFI_BIS_PROTOCOL.Shutdown() ................................................................... 893
Version 2.1 January 23, 2007 xix
-
Unified Extensible Firmware Interface Specification
EFI_BIS_PROTOCOL.Free() ............................................................................ 894EFI_BIS_PROTOCOL.GetBootObjectAuthorizationCertificate()....................... 895EFI_BIS_PROTOCOL.GetBootObjectAuthorizationCheckFlag()...................... 896EFI_BIS_PROTOCOL.GetBootObjectAuthorizationUpdateToken() ................. 897EFI_BIS_PROTOCOL.GetSignatureInfo() ........................................................ 898EFI_BIS_PROTOCOL.UpdateBootObjectAuthorization() ................................. 903EFI_BIS_PROTOCOL.VerifyBootObject() ........................................................ 911EFI_BIS_PROTOCOL.VerifyObjectWithCredential() ........................................ 919
22 Network Protocols — Managed Network ................................................. 92722.1 EFI Managed Network Protocol .................................................................................. 927
EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL ................... 927EFI_MANAGED_NETWORK_PROTOCOL...................................................... 928EFI_MANAGED_NETWORK_PROTOCOL.GetModeData() ............................ 930EFI_MANAGED_NETWORK_PROTOCOL.Configure() ................................... 933EFI_MANAGED_NETWORK_PROTOCOL.McastIpToMac() ........................... 935EFI_MANAGED_NETWORK_PROTOCOL.Groups()....................................... 936EFI_MANAGED_NETWORK_PROTOCOL.Transmit()..................................... 937EFI_MANAGED_NETWORK_PROTOCOL.Receive()...................................... 943EFI_MANAGED_NETWORK_PROTOCOL.Cancel() ....................................... 944EFI_MANAGED_NETWORK_PROTOCOL.Poll()............................................. 945
23 Network Protocols - ARP and DHCPv4 ................................................... 94723.1 ARP Protocol .............................................................................................................. 947
EFI_ARP_SERVICE_BINDING_PROTOCOL .................................................. 947EFI_ARP_PROTOCOL ..................................................................................... 948EFI_ARP_PROTOCOL.Configure() .................................................................. 950EFI_ARP_PROTOCOL.Add() ........................................................................... 952EFI_ARP_PROTOCOL.Find()........................................................................... 954Related Definitions ............................................................................................ 955EFI_ARP_PROTOCOL.Delete() ....................................................................... 956EFI_ARP_PROTOCOL.Flush() ......................................................................... 957EFI_ARP_PROTOCOL.Request() .................................................................... 958EFI_ARP_PROTOCOL.Cancel()....................................................................... 960
23.2 EFI DHCPv4 Protocol ................................................................................................. 961EFI_DHCP4_SERVICE_BINDING_PROTOCOL.............................................. 961EFI_DHCP4_PROTOCOL ................................................................................ 961EFI_DHCP4_PROTOCOL.GetModeData()....................................................... 964EFI_DHCP4_PROTOCOL.Configure() ............................................................ 968EFI_DHCP4_PROTOCOL.Start() ..................................................................... 975EFI_DHCP4_PROTOCOL.RenewRebind() ...................................................... 977EFI_DHCP4_PROTOCOL.Release()................................................................ 979EFI_DHCP4_PROTOCOL.Stop()...................................................................... 980EFI_DHCP4_PROTOCOL.Build() ..................................................................... 981EFI_DHCP4_PROTOCOL.TransmitReceive() .................................................. 983EFI_DHCP4_PROTOCOL.Parse().................................................................... 986
xx January 23, 2007 Version 2.1
-
24 Network Protocols —TCPv4, IPv4 and Configuration ............................ 98924.1 EFI TCPv4 Protocol .................................................................................................... 989
EFI_TCP4_SERVICE_BINDING_PROTOCOL................................................. 989EFI TCP4 Variable ............................................................................................ 989EFI_TCP4_PROTOCOL ................................................................................... 991EFI_TCP4_PROTOCOL.GetModeData().......................................................... 993EFI_TCP4_PROTOCOL.Configure() ................................................................ 998EFI_TCP4_PROTOCOL.Routes()................................................................... 1000EFI_TCP4_PROTOCOL.Connect()................................................................. 1002EFI_TCP4_PROTOCOL.Accept() ................................................................... 1005EFI_TCP4_PROTOCOL.Transmit() ................................................................ 1007EFI_TCP4_PROTOCOL.Receive() ................................................................. 1012EFI_TCP4_PROTOCOL.Close()..................................................................... 1014EFI_TCP4_PROTOCOL.Cancel()................................................................... 1016EFI_TCP4_PROTOCOL.Poll() ........................................................................ 1017
24.2 EFI IPv4 Protocol ...................................................................................................... 1017EFI_IP4_SERVICE_BINDING_PROTOCOL .................................................. 1018EFI IPv4 Variable ............................................................................................ 1018EFI_IP4_PROTOCOL ..................................................................................... 1019EFI_IP4_PROTOCOL.GetModeData() ........................................................... 1021EFI_IP4_PROTOCOL.Configure() .................................................................. 1026EFI_IP4_PROTOCOL.Groups() ...................................................................... 1028EFI_IP4_PROTOCOL.Routes() ...................................................................... 1030EFI_IP4_PROTOCOL.Transmit().................................................................... 1032EFI_IP4_PROTOCOL.Receive()..................................................................... 1038EFI_IP4_PROTOCOL.Cancel()....................................................................... 1040EFI_IP4_PROTOCOL.Poll()............................................................................ 1041
24.3 EFI IPv4 Configuration Protocol................................................................................ 1041EFI_IP4_CONFIG_PROTOCOL ..................................................................... 1041EFI_IP4_CONFIG_PROTOCOL.Start() .......................................................... 1043EFI_IP4_CONFIG_PROTOCOL.Stop() .......................................................... 1045EFI_IP4_CONFIG_PROTOCOL.GetData() .................................................... 1046Related Definitions .......................................................................................... 1046
25 Network Protocols — UDPv4 and MTFTPv4 .......................................... 104925.1 EFI UDPv4 Protocol.................................................................................................. 1049
EFI_UDP4_SERVICE_BINDING_PROTOCOL .............................................. 1049EFI UDP4 Variable .......................................................................................... 1049EFI_UDP4_PROTOCOL................................................................................. 1051EFI_UDP4_PROTOCOL.GetModeData() ....................................................... 1053EFI_UDP4_PROTOCOL.Configure() .............................................................. 1056EFI_UDP4_PROTOCOL.Groups().................................................................. 1058EFI_UDP4_PROTOCOL.Routes() .................................................................. 1059EFI_UDP4_PROTOCOL.Transmit()................................................................ 1061EFI_UDP4_PROTOCOL.Receive()................................................................. 1067
Version 2.1 January 23, 2007 xxi
-
Unified Extensible Firmware Interface Specification
EFI_UDP4_PROTOCOL.Cancel() .................................................................. 1069EFI_UDP4_PROTOCOL.Poll()........................................................................ 1070
25.2 EFI MTFTPv4 Protocol ............................................................................................. 1070EFI_MTFTP4_SERVICE_BINDING_PROTOCOL.......................................... 1070EFI_MTFTP4_PROTOCOL............................................................................. 1071EFI_MTFTP4_PROTOCOL.GetModeData()................................................... 1073EFI_MTFTP4_PROTOCOL.Configure().......................................................... 1076EFI_MTFTP4_PROTOCOL.GetInfo() ............................................................. 1078EFI_MTFTP4_PROTOCOL.ParseOptions() ................................................... 1086EFI_MTFTP4_PROTOCOL.ReadFile()........................................................... 1088EFI_MTFTP4_PROTOCOL.WriteFile() ........................................................... 1094EFI_MTFTP4_PROTOCOL.ReadDirectory() .................................................. 1096EFI_MTFTP4_PROTOCOL.Poll() ................................................................... 1098
26 Security - Secure Boot, Driver Signing and Hash ................................. 109926.1 Secure Boot .............................................................................................................. 1099
EFI_AUTHENTICATION_INFO_PROTOCOL ................................................ 1099EFI_AUTHENTICATION_INFO_PROTOCOL.Get() ....................................... 1100EFI_AUTHENTICATION_INFO_PROTOCOL.Set()........................................ 1101
26.2 UEFI Driver Signing Overview .................................................................................. 110426.2.1 Digital Signatures .......................................................................................... 110426.2.2 Embedded Signatures................................................................................... 110526.2.3 Creating Message from Executables ............................................................ 110626.2.4 Code Definitions............................................................................................ 1106
WIN_CERTIFICATE........................................................................................ 1107WIN_CERTIFICATE_EFI_PKCS1_15 ............................................................ 1108
26.2.5 WIN_CERTIFICATE_UEFI_GUID ................................................................ 110926.3 Hash Overview.......................................................................................................... 1109
26.3.1 Hash References .......................................................................................... 110926.4 EFI Hash Protocols .................................................................................................. 1110
EFI_HASH_SERVICE_BINDING_PROTOCOL.............................................. 1110EFI_HASH_PROTOCOL................................................................................. 1110EFI_HASH_PROTOCOL.GetHashSize() ........................................................ 1112EFI_HASH_PROTOCOL.Hash()..................................................................... 1113
26.4.1 Other Code Definitions.................................................................................. 1114EFI_SHA1_HASH, EFI_SHA224_HASH, EFI_SHA256_HASH,
EFI_SHA384_HASH, EFI_SHA512HASH, EFI_MD5_HASH ................... 1114
27 Human Interface Infrastructure Overview .............................................. 111727.1 Goals......................................................................................................................... 111727.2 Design Discussion .................................................................................................... 1118
27.2.1 Drivers And Applications ............................................................................... 111827.2.2 Localization ................................................................................................... 112527.2.3 User Input...................................................................................................... 112627.2.4 Keyboard Layout ........................................................................................... 112727.2.5 Forms ............................................................................................................ 1130
xxii January 23, 2007 Version 2.1
-
27.2.6 Strings ........................................................................................................... 115227.2.7 Fonts ............................................................................................................. 115627.2.8 Images .......................................................................................................... 116227.2.9 HII Database ................................................................................................. 116327.2.10 Forms Browser............................................................................................ 116327.2.11 Configuration Settings................................................................................. 116427.2.12 Form Callback Logic ................................................................................... 116727.2.13 Driver Model Interaction .............................................................................. 116727.2.14 Human Interface Component Interactions .................................................. 1168
27.3 Code Definitions........................................................................................................ 116927.3.1 Package Lists and Package Headers ........................................................... 1169
EFI_HII_PACKAGE_HEADER........................................................................ 116927.3.2 Simplified Fon