Unified Extensible Firmware Interface Specification
Version 2.1 Integrates approved Errata and amplifications
through December 11, 2007
Note: Added a number of amplifications. These additions are not
errata. They clarify particular topicswhich previously might have
been abstract or obscure.
Unified Extensible Firmware Interface Specification
AcknowledgementsThe 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
Errata and amplifications through December 11, 2007
Version 2.1
Revision HistoryRevision 2.0 2.1 2.1a 2,1b Revision History
First release of specification. Second release 2.1 incorporating
Errata through 4-27-07 2.1 incorporating Errata throughOctober -07:
Mantis # Date January 31, 2006 January 23, 2007 April 27, 2007
December 11, 2007
51 Long physical blocks updates 156 SendForm API Errata 158
Errata to the UEFI 2.1 configuration sections 159 Adjust some of
the #define names in the Simple Text Input Ex protocol 160 Clean up
references to PCIR 162 UEFI PIWG Device Path Errata 164 Update to
USB2_HC_PROTOCOL Table 165 Fix EFI_GRAPHICS_OUTPUT_PIXEL 168 Remove
LOAD_OPTION_GRAPHICS 170 (Addition of) Driver Family Override
Protocol 172 Typo for ResetSystem() 173 Minor changes to the
description of two of the fields in the Common Platform Error
Record, in Appendix N 174 Error record addition for dma remapping
units 175 Update to SendForm API 177 remove ending paragraph
(editing text) in section 9.6 181 Correct MNP GUID collision 182
Clarify EFI_MTFTP4_TOKEN
Unified Extensible Firmware Interface Specification
additonal errata
184 SNIA/DDF Wording Update 185 Change EFI term to UEFI for
consistency 186 change PCIR struct to match PCI FW Spec 3.0 187
Clarify input protocols. 190 Extensive errata form UCST including
OP codes changes ro resolve conflicts. 197 EFI Loaded Image Device
Path Protocol 205 Change LoadImage() parameter name from FilePath
to DevicePath; ends confusion with EFI_LOADED_IMAGE_PROTOCOL
November 5, 2007
iv
Errata and amplifications through December 11, 2007
Version 2.1
Unified Extensible Firmware Interface Specification
vi
Errata and amplifications through December 11, 2007
Version 2.1
ContentsAcknowledgements.............................................................................................
ii Revision History
.................................................................................................
iii Contents
.............................................................................................................
vii
Figures.............................................................................................................
xxxi Tables
.............................................................................................................
xxxv 1
Introduction.....................................................................................................
11.1 UEFI Driver Model Extensions
..........................................................................................
1 1.2 Overview
...........................................................................................................................
2 1.3
Goals.................................................................................................................................
5 1.4 Target
Audience................................................................................................................
7 1.5 UEFI Design
Overview......................................................................................................
7 1.6 UEFI Driver Model
............................................................................................................
9 1.6.1 UEFI Driver Model Goals
......................................................................................
9 1.6.2 Legacy Option ROM Issues
................................................................................
10 1.7 Migration Requirements
..................................................................................................
10 1.7.1 Legacy Operating System Support
.....................................................................
10 1.7.2 Supporting the UEFI Specification on a Legacy Platform
................................... 11 1.8 Conventions Used in this
Document...............................................................................
11 1.8.1 Data Structure Descriptions
................................................................................
11 1.8.2 Protocol Descriptions
..........................................................................................
11 1.8.3 Procedure
Descriptions.......................................................................................
12 1.8.4 Instruction
Descriptions.......................................................................................
12 1.8.5 Pseudo-Code Conventions
.................................................................................
12 1.8.6 Typographic Conventions
...................................................................................
13
2
Overview........................................................................................................
152.1 Boot Manager
.................................................................................................................
15 2.1.1 UEFI Images
.......................................................................................................
16 2.1.2
Applications.........................................................................................................
17 2.1.3 UEFI OS
Loaders................................................................................................
17 2.1.4 UEFI
Drivers........................................................................................................
18 2.2 Firmware Core
................................................................................................................
18 2.2.1 UEFI Services
.....................................................................................................
18 2.2.2 Runtime Services
................................................................................................
19 2.3 Calling Conventions
........................................................................................................
20 2.3.1 Data
Types..........................................................................................................
20 2.3.2 IA-32 Platforms
...................................................................................................
22 2.3.3 Intel Itanium-Based
Platforms.........................................................................
24 2.3.4 x64 Platforms
......................................................................................................
26
Version 2.1
Errata and amplifications through December 11, 2007
vii
Unified Extensible Firmware Interface Specification
2.4 Protocols
.........................................................................................................................
28 2.5 UEFI Driver Model
..........................................................................................................
33 2.5.1 Legacy Option ROM Issues
................................................................................
35 2.5.2 Driver
Initialization...............................................................................................
37 2.5.3 Host Bus Controllers
...........................................................................................
38 2.5.4 Device
Drivers.....................................................................................................
40 2.5.5 Bus
Drivers..........................................................................................................
41 2.5.6 Platform Components
.........................................................................................
43 2.5.7 Hot-Plug Events
..................................................................................................
44 2.5.8 EFI Services
Binding...........................................................................................
44 2.6
Requirements..................................................................................................................
46 2.6.1 Required
Elements..............................................................................................
46 2.6.2 Platform-Specific Elements
................................................................................
47 2.6.3 Driver-Specific
Elements.....................................................................................
48
3
Boot
Manager................................................................................................
513.1 Firmware Boot Manager
.................................................................................................
51 3.1.1 Boot Manager Programming
...............................................................................
52 3.1.2 Load Option
Processing......................................................................................
52 3.1.3 Load
Options.......................................................................................................
53 3.1.4 Boot Manager Capabilities
..................................................................................
55 3.1.5 Launching Boot####
Applications.......................................................................
55 3.1.6 Launching Boot#### Load Options Using Hot Keys
........................................... 56 3.2 Globally Defined
Variables..............................................................................................
58 3.3 Boot Option Variables Default Boot Behavior
.................................................................
60 3.4 Boot Mechanisms
...........................................................................................................
61 3.4.1 Boot via the Simple File Protocol
........................................................................
61 3.4.2 Boot via LOAD_FILE
PROTOCOL......................................................................
62
4
EFI System
Table..........................................................................................
654.1 UEFI Image Entry Point
..................................................................................................
65 EFI_IMAGE_ENTRY_POINT
..............................................................................
65 4.2 EFI Table Header
...........................................................................................................
66 EFI_TABLE_HEADER
........................................................................................
67 4.3 EFI System Table
..........................................................................................................
68
EFI_SYSTEM_TABLE.........................................................................................
68 4.4 EFI Boot Services Table
................................................................................................
69 EFI_BOOT_SERVICES
......................................................................................
70 4.5 EFI Runtime Services Table
..........................................................................................
74 EFI_RUNTIME_SERVICES
................................................................................
74 4.6 EFI Configuration Table
.................................................................................................
76 EFI_CONFIGURATION_TABLE
.........................................................................
76 4.7 Image Entry Point
Examples...........................................................................................
77 4.7.1 Image Entry Point
Examples...............................................................................
78 4.7.2 UEFI Driver Model Example
...............................................................................
79 4.7.3 UEFI Driver Model Example (Unloadable)
.......................................................... 80
viii
Errata and amplifications through December 11, 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
......................................................................................................
85 5.2 LBA 0
Format..................................................................................................................
85 5.2.1 Legacy Master Boot Record (MBR)
....................................................................
85 5.2.2 Protective Master Boot Record
..........................................................................
87 5.3 GUID Partition Table (GPT)
Format................................................................................
87 5.3.1 GUID Format
overview........................................................................................
87 5.3.2 GPT Partition Table
Header................................................................................
90 5.3.3 GUID Partition Entry Array
..................................................................................
92
6
Services Boot Services
...........................................................................
956.1 Event, Timer, and Task Priority Services
........................................................................
96 CreateEvent()
....................................................................................................
100
CreateEventEx()................................................................................................
104
CloseEvent()......................................................................................................
107
SignalEvent().....................................................................................................
108 WaitForEvent()
..................................................................................................
109
CheckEvent().....................................................................................................
111 SetTimer()
.........................................................................................................
112 RaiseTPL()
........................................................................................................
114
RestoreTPL().....................................................................................................
116 6.2 Memory Allocation
Services..........................................................................................
116 AllocatePages()
.................................................................................................
119 FreePages()
......................................................................................................
122 GetMemoryMap()
..............................................................................................
123 AllocatePool()
....................................................................................................
127 FreePool()
.........................................................................................................
128 6.3 Protocol Handler Services
............................................................................................
128 6.3.1 Driver Model Boot
Services...............................................................................
130 InstallProtocolInterface()
...................................................................................
133 UninstallProtocolInterface()
...............................................................................
135 ReinstallProtocolInterface()
...............................................................................
137 RegisterProtocolNotify()
....................................................................................
139
LocateHandle()..................................................................................................
141 HandleProtocol()
...............................................................................................
143
LocateDevicePath()...........................................................................................
145 OpenProtocol()
..................................................................................................
147
CloseProtocol()..................................................................................................
154 OpenProtocolInformation()
................................................................................
156 ConnectController()
...........................................................................................
158
DisconnectController().......................................................................................
162 ProtocolsPerHandle()
........................................................................................
165 LocateHandleBuffer()
........................................................................................
167 LocateProtocol()
................................................................................................
170
Version 2.1
Errata and amplifications through December 11, 2007
ix
Unified Extensible Firmware Interface Specification
InstallMultipleProtocolInterfaces()
.....................................................................
171
UninstallMultipleProtocolInterfaces().................................................................
172 6.4 Image Services
.............................................................................................................
172 LoadImage()
......................................................................................................
175 StartImage()
......................................................................................................
177
UnloadImage()...................................................................................................
179 EFI_IMAGE_ENTRY_POINT
............................................................................
180 Exit()
..................................................................................................................
182
ExitBootServices().............................................................................................
184 6.5 Miscellaneous Boot Services
........................................................................................
185 SetWatchdogTimer()
.........................................................................................
186 Stall()
.................................................................................................................
188
CopyMem()........................................................................................................
189
SetMem()...........................................................................................................
190
GetNextMonotonicCount().................................................................................
191 InstallConfigurationTable()
................................................................................
192 CalculateCrc32()
...............................................................................................
194
7
Services Runtime Services
...................................................................
1957.1 Runtime Services Rules and Restrictions
.....................................................................
196 7.1.1 Exception for Machine Check, INIT, and NMI.
.................................................. 196 7.2 Variable
Services
..........................................................................................................
197 GetVariable()
.....................................................................................................
199 GetNextVariableName()
....................................................................................
201 SetVariable()
.....................................................................................................
203 QueryVariableInfo()
...........................................................................................
209 7.2.1 Hardware Error Record Persistence
.................................................................
210 7.3 Time Services
...............................................................................................................
211 GetTime()
..........................................................................................................
212
SetTime()...........................................................................................................
215 GetWakeupTime()
.............................................................................................
216 SetWakeupTime()
.............................................................................................
217 7.4 Virtual Memory Services
...............................................................................................
218 SetVirtualAddressMap()
....................................................................................
219 ConvertPointer()
................................................................................................
221 7.5 Miscellaneous Runtime Services
..................................................................................
222 7.5.1 Reset
System....................................................................................................
222
ResetSystem()...................................................................................................
223 7.5.2 Get Next High Monotonic Count
.......................................................................
224 GetNextHighMonotonicCount()
.........................................................................
225 7.5.3 Update Capsule
................................................................................................
226 UpdateCapsule()
...............................................................................................
227 QueryCapsuleCapabilities()
..............................................................................
232
8
Protocols EFI Loaded
Image.................................................................
2358.1 EFI Loaded Image Protocol
..........................................................................................
235
x
Errata and amplifications through December 11, 2007
Version 2.1
EFI_LOADED_IMAGE_PROTOCOL
................................................................
235 EFI_LOADED_IMAGE_PROTOCOL.Unload()
................................................. 237 8.2 EFI
Loaded Image Device Path
Protocol......................................................................
237 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL
..................................... 237
9
Protocols Device Path Protocol
........................................................... 2399.1
Device Path
Overview...................................................................................................
239 9.2 EFI Device Path Protocol
..............................................................................................
239
EFI_DEVICE_PATH_PROTOCOL....................................................................
239 9.3 Device Path Nodes
.......................................................................................................
240 9.3.1 Generic Device Path
Structures........................................................................
241 9.3.2 Hardware Device Path
......................................................................................
242 9.3.3 ACPI Device Path
.............................................................................................
244 9.3.4 ACPI _ADR Device
Path...................................................................................
246 9.3.5 Messaging Device Path
....................................................................................
247 9.3.6 Media Device Path
............................................................................................
259 9.3.7 BIOS Boot Specification Device Path
............................................................... 262
9.4 Device Path Generation
Rules......................................................................................
263 9.4.1 Housekeeping Rules
.........................................................................................
263 9.4.2 Rules with ACPI _HID and
_UID.......................................................................
263 9.4.3 Rules with ACPI
_ADR......................................................................................
264 9.4.4 Hardware vs. Messaging Device Path Rules
.................................................... 265 9.4.5
Media Device Path
Rules..................................................................................
265 9.4.6 Other Rules
.......................................................................................................
265 9.5 Device Path Utilities Protocol
........................................................................................
266
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.................................................
266 EFI_DEVICE_PATH_UTILITIES_PROTOCOL.GetDevicePathSize()
.............. 268
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.DuplicateDevicePath()
............ 269
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDevicePath()...............
270 EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDeviceNode()
............. 271
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.AppendDevicePathInstance() . 272
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.GetNextDevicePathInstance() 273
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.CreateDeviceNode()
............... 274
EFI_DEVICE_PATH_UTILITIES_PROTOCOL.IsDevicePathMultiInstance() ...
275 9.6 EFI Device Path Display Format Overview
...................................................................
275 9.6.1 Design
Discussion.............................................................................................
275 9.6.2 Device Path to Text
Protocol.............................................................................
290 EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
................................................. 290
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDeviceNodeToText()... 291
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDevicePathToText().... 292
9.6.3 Device Path from Text Protocol
........................................................................
293
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL............................................
293 EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL.ConvertTextToDeviceNode()
... 294
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL.ConvertTextToDevicePath() ....
295
Version 2.1
Errata and amplifications through December 11, 2007
xi
Unified Extensible Firmware Interface Specification
10
Protocols UEFI Driver Model
................................................................
29710.1 EFI Driver Binding
Protocol.........................................................................................
297 EFI_DRIVER_BINDING_PROTOCOL
.............................................................. 297
EFI_DRIVER_BINDING_PROTOCOL.Supported()
.......................................... 300
EFI_DRIVER_BINDING_PROTOCOL.Start()
................................................... 306
EFI_DRIVER_BINDING_PROTOCOL.Stop()
................................................... 314 10.2 EFI
Platform Driver Override Protocol
........................................................................
317
EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.....................................
318
EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.GetDriver()..................
320 EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.GetDriverPath()
.......... 322
EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL.DriverLoaded()............
324 10.3 EFI Bus Specific Driver Override Protocol
..................................................................
325 EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
.............................. 325
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL.GetDriver() ...........
327 10.4 EFI Driver Diagnostics Protocol
..................................................................................
328 EFI_DRIVER_DIAGNOSTICS_PROTOCOL
.................................................... 328
EFI_DRIVER_DIAGNOSTICS_PROTOCOL.RunDiagnostics()........................
330 10.5 EFI Component Name Protocol
..................................................................................
332
EFI_COMPONENT_NAME2_PROTOCOL.......................................................
332 EFI_COMPONENT_NAME2_PROTOCOL.GetDriverName()
.......................... 334
EFI_COMPONENT_NAME2_PROTOCOL.GetControllerName()
.................... 335 10.6 EFI Service Binding Protocol
......................................................................................
336
EFI_SERVICE_BINDING_PROTOCOL............................................................
336 EFI_SERVICE_BINDING_PROTOCOL.CreateChild()
..................................... 338
EFI_SERVICE_BINDING_PROTOCOL.DestroyChild()....................................
342 10.7 EFI Platform to Driver Configuration Protocol
............................................................. 346
EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL ..................
346 EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL.Query() ..... 348
EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL.Response()..... 350
10.8 EFI Driver Supported EFI Version Protocol
................................................................
354
EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL.............................
354 10.9 EFI Driver Family Override Protocol
...........................................................................
354 EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
........................................... 354
EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL.GetVersion
()..................... 356
11
Protocols Console Support
..................................................................
35711.1 Console I/O
Protocol...................................................................................................
357 11.1.1 Overview
.........................................................................................................
357 11.1.2 ConsoleIn Definition
.......................................................................................
357 11.2 Simple Text Input Ex
Protocol.....................................................................................
359
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.................................................
359
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.Reset()....................................
360
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx()................
361 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState()
............................... 364
xii
Errata and amplifications through December 11, 2007
Version 2.1
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.RegisterKeyNotify()
................ 365
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.UnregisterKeyNotify()
............. 367 11.3 Simple Text Input
Protocol..........................................................................................
367 EFI_SIMPLE_TEXT_INPUT_PROTOCOL
....................................................... 367
EFI_SIMPLE_TEXT_INPUT_PROTOCOL.Reset()...........................................
369
EFI_SIMPLE_TEXT_INPUT_PROTOCOL.ReadKeyStroke()...........................
370 11.3.1 ConsoleOut or StandardError
.........................................................................
370 11.4 Simple Text Output Protocol
.......................................................................................
371 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
................................................... 371
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset().......................................
374
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString()............................
375
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.TestString()................................
378 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.QueryMode()
............................. 379
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetMode()..................................
380 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute()
............................. 381
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.ClearScreen()
............................ 383
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition()
................... 384
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.EnableCursor()
.......................... 385 11.5 Simple Pointer Protocol
..............................................................................................
385 EFI_SIMPLE_POINTER_PROTOCOL
............................................................. 385
EFI_SIMPLE_POINTER_PROTOCOL.Reset().................................................
388
EFI_SIMPLE_POINTER_PROTOCOL.GetState()............................................
389 11.6 EFI Simple Pointer Device Paths
...............................................................................
390 11.7 Absolute Pointer Protocol
...........................................................................................
393 EFI_ABSOLUTE_POINTER_PROTOCOL
....................................................... 394
EFI_ABSOLUTE_POINTER_PROTOCOL.Reset()...........................................
396
EFI_ABSOLUTE_POINTER_PROTOCOL.GetState()......................................
397 11.8 Serial I/O
Protocol.......................................................................................................
398 EFI_SERIAL_IO_PROTOCOL
..........................................................................
398 EFI_SERIAL_IO_PROTOCOL.Reset()
............................................................. 402
EFI_SERIAL_IO_PROTOCOL.SetAttributes()
.................................................. 403
EFI_SERIAL_IO_PROTOCOL.SetControl()......................................................
405 EFI_SERIAL_IO_PROTOCOL.GetControl()
..................................................... 407
EFI_SERIAL_IO_PROTOCOL.Write()
.............................................................. 408
EFI_SERIAL_IO_PROTOCOL.Read()
.............................................................. 409
11.9 Graphics Output
Protocol............................................................................................
409 11.9.1 Blt Buffer
.........................................................................................................
410 EFI_GRAPHICS_OUTPUT_PROTOCOL
......................................................... 411
EFI_GRAPHICS_OUTPUT_PROTOCOL.QueryMode()...................................
415 EFI_GRAPHICS_OUTPUT_PROTOCOL.SetMode()
....................................... 417
EFI_GRAPHICS_OUTPUT_PROTOCOL.Blt()
................................................. 418
EFI_EDID_DISCOVERED_PROTOCOL
.......................................................... 420
EFI_EDID_ACTIVE_PROTOCOL
.....................................................................
421 EFI_EDID_OVERRIDE_PROTOCOL
............................................................... 422
EFI_EDID_OVERRIDE_PROTOCOL.GetEdid()...............................................
423 11.10 Rules for PCI/AGP Devices
......................................................................................
424
Version 2.1
Errata and amplifications through December 11, 2007
xiii
Unified Extensible Firmware Interface Specification
12
Protocols - Media Access
..........................................................................
42712.1 Load File Protocol
.......................................................................................................
427 EFI_LOAD_FILE_PROTOCOL
.........................................................................
427 EFI_LOAD_FILE_PROTOCOL.LoadFile()
........................................................ 428 12.2
File System
Format.....................................................................................................
429 12.2.1 System Partition
..............................................................................................
430 12.2.2 Partition Discovery
..........................................................................................
432 12.2.3 Media Formats
................................................................................................
433 12.3 Simple File System Protocol
.......................................................................................
435 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
..................................................... 435
EFI_SIMPLE_FILE
SYSTEM_PROTOCOL.OpenVolume().............................. 437 12.4
EFI File Protocol
.........................................................................................................
438 EFI_FILE_PROTOCOL
.....................................................................................
438
EFI_FILE_PROTOCOL.Open().........................................................................
440 EFI_FILE_PROTOCOL.Close()
........................................................................
442 EFI_FILE_PROTOCOL.Delete()
.......................................................................
443 EFI_FILE_PROTOCOL.Read()
.........................................................................
444 EFI_FILE_PROTOCOL.Write()
.........................................................................
446 EFI_FILE_PROTOCOL.SetPosition()
............................................................... 447
EFI_FILE_PROTOCOL.GetPosition()
............................................................... 448
EFI_FILE_PROTOCOL.GetInfo()......................................................................
449 EFI_FILE_PROTOCOL.SetInfo()
......................................................................
451
EFI_FILE_PROTOCOL.Flush().........................................................................
453
EFI_FILE_INFO.................................................................................................
453
EFI_FILE_SYSTEM_INFO................................................................................
455 EFI_FILE_SYSTEM_VOLUME_LABEL
............................................................ 455
12.5 Tape Boot
Support......................................................................................................
456 12.5.1 Tape I/O
Support.............................................................................................
456 12.5.2 Tape I/O Protocol
............................................................................................
457 EFI_TAPE_IO_PROTOCOL
.............................................................................
457 EFI_TAPE_IO_PROTOCOL.TapeRead()
......................................................... 459
EFI_TAPE_IO_PROTOCOL.TapeWrite()
......................................................... 461
EFI_TAPE_IO_PROTOCOL.TapeRewind()......................................................
463
EFI_TAPE_IO_PROTOCOL.TapeSpace()........................................................
464 EFI_TAPE_IO_PROTOCOL.TapeWriteFM()
.................................................... 466
EFI_TAPE_IO_PROTOCOL.TapeReset()
........................................................ 467 12.5.3
Tape Header
Format.......................................................................................
467 12.6 Disk I/O Protocol
.........................................................................................................
469 EFI_DISK_IO_PROTOCOL
..............................................................................
469 EFI_DISK_IO_PROTOCOL.ReadDisk()
........................................................... 471
EFI_DISK_IO_PROTOCOL.WriteDisk()............................................................
472 12.7 Updated EFI Block I/O
Protocol................................................................................
473
EFI_BLOCK_IO_PROTOCOL...........................................................................
473
EFI_BLOCK_IO_PROTOCOL.Reset()..............................................................
477 EFI_BLOCK_IO_PROTOCOL.ReadBlocks()
.................................................... 478
EFI_BLOCK_IO_PROTOCOL.WriteBlocks()
.................................................... 480
xiv
Errata and amplifications through December 11, 2007
Version 2.1
EFI_BLOCK_IO_PROTOCOL.FlushBlocks()....................................................
482 12.8 Unicode Collation
Protocol..........................................................................................
482 EFI_UNICODE_COLLATION_
PROTOCOL..................................................... 482
EFI_UNICODE_COLLATION_PROTOCOL.StriColl().......................................
485
EFI_UNICODE_COLLATION_PROTOCOL.MetaiMatch()................................
486
EFI_UNICODE_COLLATION_PROTOCOL.StrLwr()........................................
488
EFI_UNICODE_COLLATION_PROTOCOL.StrUpr()........................................
489 EFI_UNICODE_COLLATION_PROTOCOL.FatToStr()
.................................... 490
EFI_UNICODE_COLLATION_PROTOCOL.StrToFat()
.................................... 491
13
Protocols - PCI Bus Support
.....................................................................
49313.1 PCI Root Bridge I/O
Support.......................................................................................
493 13.1.1 PCI Root Bridge I/O Overview
........................................................................
493 13.2 PCI Root Bridge I/O Protocol
......................................................................................
498
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.....................................................
498 EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem()
................................... 506
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo()
........................................ 508
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write()
.......................... 510
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write()
............................... 512
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read()
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write()
............................. 514
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem()
................................ 516
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map()
.......................................... 518
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap()......................................
520
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer()...........................
521 EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.FreeBuffer()
................................ 523
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Flush()
........................................ 524
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes()
............................ 525
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes().............................
527
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Configuration()............................
529 13.2.1 PCI Root Bridge Device Paths
........................................................................
530 13.3 PCI Driver
Model.........................................................................................................
533 13.3.1 PCI Driver
Initialization....................................................................................
533 13.3.2 PCI Bus
Drivers...............................................................................................
536 13.3.3 PCI Device
Drivers..........................................................................................
541 13.4 EFI PCI I/O Protocol
...................................................................................................
542
EFI_PCI_IO_PROTOCOL.................................................................................
543 EFI_PCI_IO_PROTOCOL.PollMem()
............................................................... 552
EFI_PCI_IO_PROTOCOL.PollIo()
....................................................................
554 EFI_PCI_IO_PROTOCOL.Mem.Read() EFI_PCI_IO_PROTOCOL.Mem.Write()
...................................................... 556
EFI_PCI_IO_PROTOCOL.Io.Read() EFI_PCI_IO_PROTOCOL.Io.Write()
........................................................... 558
Version 2.1
Errata and amplifications through December 11, 2007
xv
Unified Extensible Firmware Interface Specification
EFI_PCI_IO_PROTOCOL.Pci.Read() EFI_PCI_IO_PROTOCOL.Pci.Write()
......................................................... 560
EFI_PCI_IO_PROTOCOL.CopyMem()
............................................................ 562
EFI_PCI_IO_PROTOCOL.Map()
.....................................................................
565
EFI_PCI_IO_PROTOCOL.Unmap()..................................................................
567 EFI_PCI_IO_PROTOCOL.AllocateBuffer()
....................................................... 568
EFI_PCI_IO_PROTOCOL.FreeBuffer()
............................................................ 570
EFI_PCI_IO_PROTOCOL.Flush().....................................................................
571 EFI_PCI_IO_PROTOCOL.GetLocation()
.......................................................... 572
EFI_PCI_IO_PROTOCOL.Attributes()
.............................................................. 573
EFI_PCI_IO_PROTOCOL.GetBarAttributes()...................................................
576 EFI_PCI_IO_PROTOCOL.SetBarAttributes()
................................................... 579 13.4.1 PCI
Device Paths
...........................................................................................
580 13.4.2 PCI Option ROMs
...........................................................................................
582 13.4.3 Nonvolatile
Storage.........................................................................................
586 13.4.4 PCI Hot-Plug Events
.......................................................................................
587
14
Protocols SCSI Driver Models and Bus Support
................................ 58914.1 SCSI Driver Model Overview
......................................................................................
589 14.2 SCSI Bus Drivers
........................................................................................................
590 14.2.1 Driver Binding Protocol for SCSI Bus Drivers
................................................. 590 14.2.2 SCSI
Enumeration
..........................................................................................
591 14.3 SCSI Device Drivers
...................................................................................................
591 14.3.1 Driver Binding Protocol for SCSI Device Drivers
............................................ 591 14.4 EFI SCSI I/O
Protocol
.................................................................................................
592 EFI_SCSI_IO_PROTOCOL
..............................................................................
592 EFI_SCSI_IO_PROTOCOL.GetDeviceType()
.................................................. 594
EFI_SCSI_IO_PROTOCOL.GetDeviceLocation().............................................
596 EFI_SCSI_IO_PROTOCOL.ResetBus()
........................................................... 597
EFI_SCSI_IO_PROTOCOL.ResetDevice().......................................................
598
EFI_SCSI_IO_PROTOCOL.ExecuteScsiCommand().......................................
599 14.5 SCSI Device Paths
.....................................................................................................
603 14.5.1 SCSI Device Path Example
............................................................................
603 14.5.2 ATAPI Device Path Example
..........................................................................
604 14.5.3 Fibre Channel Device Path Example
.............................................................. 605
14.5.4 InfiniBand Device Path
Example.....................................................................
606 14.6 SCSI Pass Thru Device Paths
...................................................................................
607 14.7 Extended SCSI Pass Thru Protocol
............................................................................
609
EFI_EXT_SCSI_PASS_THRU_PROTOCOL....................................................
610
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.PassThru().................................
613
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetNextTargetLun()...................
619
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.BuildDevicePath()......................
621 EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetTargetLun()
.......................... 623
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.ResetChannel()
......................... 625
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.ResetTargetLun()
...................... 626
EFI_EXT_SCSI_PASS_THRU_PROTOCOL.GetNextTarget().........................
628
xvi
Errata and amplifications through December 11, 2007
Version 2.1
15
Protocols - iSCSI Boot
...............................................................................
63115.1 Overview
.....................................................................................................................
631 15.1.1 iSCSI UEFI Driver Layering
............................................................................
631 15.2 EFI iSCSI Initiator Name
Protocol...............................................................................
631 EFI_ISCSI_INITIATOR_NAME_PROTOCOL
................................................... 631
EFI_ISCSI_INITIATOR_NAME_PROTOCOL.
Get()......................................... 633
EFI_ISCSI_INITIATOR_NAME_PROTOCOL.Set()
.......................................... 634
16
Protocols USB Support
.........................................................................
63516.1 USB2 Host Controller Protocol
...................................................................................
635 16.1.1 USB Host Controller Protocol
Overview..........................................................
635 EFI_USB2_HC_PROTOCOL
............................................................................
635 EFI_USB2_HC_PROTOCOL.GetCapability()
................................................... 638
EFI_USB2_HC_PROTOCOL.Reset()
............................................................... 640
EFI_USB2_HC_PROTOCOL.GetState()
.......................................................... 642
EFI_USB2_HC_PROTOCOL.SetState()...........................................................
644
EFI_USB2_HC_PROTOCOL.ControlTransfer()................................................
646 EFI_USB2_HC_PROTOCOL.BulkTransfer()
.................................................... 649
EFI_USB2_HC_PROTOCOL.AsyncInterruptTransfer()
.................................... 652
EFI_USB2_HC_PROTOCOL.SyncInterruptTransfer()......................................
655
EFI_USB2_HC_PROTOCOL.IsochronousTransfer()........................................
657
EFI_USB2_HC_PROTOCOL.AsyncIsochronousTransfer()..............................
660
EFI_USB2_HC_PROTOCOL.GetRootHubPortStatus()....................................
663 EFI_USB2_HC_PROTOCOL.SetRootHubPortFeature()
.................................. 667
EFI_USB2_HC_PROTOCOL.ClearRootHubPortFeature()...............................
669 16.2 USB Driver Model
.......................................................................................................
670 16.2.1 Scope
..............................................................................................................
670 16.2.2 USB Bus Driver
...............................................................................................
671 16.2.3 USB Device Driver
..........................................................................................
672 16.2.4 USB I/O
Protocol.............................................................................................
673 EFI_USB_IO_PROTOCOL
...............................................................................
673
EFI_USB_IO_PROTOCOL.UsbControlTransfer().............................................
676 EFI_USB_IO_PROTOCOL.UsbBulkTransfer()
................................................. 679
EFI_USB_IO_PROTOCOL.UsbAsyncInterruptTransfer()
................................. 681
EFI_USB_IO_PROTOCOL.UsbSyncInterruptTransfer()...................................
685
EFI_USB_IO_PROTOCOL.UsbIsochronousTransfer().....................................
687
EFI_USB_IO_PROTOCOL.UsbAsyncIsochronousTransfer()...........................
689 EFI_USB_IO_PROTOCOL.UsbGetDeviceDescriptor()
.................................... 691
EFI_USB_IO_PROTOCOL.UsbGetConfigDescriptor()
..................................... 693
EFI_USB_IO_PROTOCOL.UsbGetInterfaceDescriptor()
................................. 695
EFI_USB_IO_PROTOCOL.UsbGetEndpointDescriptor()
................................. 697
EFI_USB_IO_PROTOCOL.UsbGetStringDescriptor()
...................................... 699
EFI_USB_IO_PROTOCOL.UsbGetSupportedLanguages()
............................. 700
EFI_USB_IO_PROTOCOL.UsbPortReset()......................................................
701
Version 2.1
Errata and amplifications through December 11, 2007
xvii
Unified Extensible Firmware Interface Specification
17
Protocols - Debugger Support
..................................................................
70317.1 Overview
.....................................................................................................................
703 17.2 EFI Debug Support Protocol
.......................................................................................
704 17.2.1 EFI Debug Support Protocol Overview
........................................................... 704
EFI_DEBUG_SUPPORT_PROTOCOL
............................................................ 704
EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex()...........
707
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback().................
708 EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback()
.............. 713
EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache()...............
717 17.3 EFI Debugport Protocol
..............................................................................................
718 17.3.1 EFI Debugport
Overview.................................................................................
718
EFI_DEBUGPORT_PROTOCOL......................................................................
718 EFI_DEBUGPORT_PROTOCOL.Reset()
......................................................... 720
EFI_DEBUGPORT_PROTOCOL.Write()
.......................................................... 721
EFI_DEBUGPORT_PROTOCOL.Read()..........................................................
722 EFI_DEBUGPORT_PROTOCOL.Poll()
............................................................ 723
17.3.2 Debugport Device Path
...................................................................................
723 17.3.3 EFI Debugport
Variable...................................................................................
724 17.4 EFI Debug Support Table
...........................................................................................
725 17.4.1 Overview
.........................................................................................................
725 17.4.2 EFI System Table Location
.............................................................................
726 17.4.3 EFI Image
Info.................................................................................................
726
18
Protocols - Compression Algorithm Specification
................................. 72918.1 Algorithm
Overview.....................................................................................................
729 18.2 Data Format
................................................................................................................
730 18.2.1 Bit
Order..........................................................................................................
730 18.2.2 Overall Structure
.............................................................................................
731 18.2.3 Block
Structure................................................................................................
732 18.3 Compressor Design
....................................................................................................
735 18.3.1 Overall
Process...............................................................................................
735 18.3.2 String Info
Log.................................................................................................
736 18.3.3 Huffman Code Generation
..............................................................................
739 18.4 Decompressor Design
................................................................................................
741 18.5 Decompress
Protocol..................................................................................................
741 EFI_DECOMPRESS_PROTOCOL
...................................................................
742
EFI_DECOMPRESS_PROTOCOL.GetInfo()....................................................
743 EFI_DECOMPRESS_PROTOCOL.Decompress()
........................................... 745
19
Protocols - ACPI
Protocols........................................................................
747EFI_ACPI_TABLE_PROTOCOL.......................................................................
747 EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable()
.......................................... 748
EFI_ACPI_TABLE_PROTOCOL.UninstallAcpiTable()......................................
749
xviii
Errata and amplifications through December 11, 2007
Version 2.1
20
EFI Byte Code Virtual
Machine..................................................................
75120.1 Overview
.....................................................................................................................
751 20.1.1 Processor Architecture Independence
............................................................ 751
20.1.2 OS Independent
.............................................................................................
752 20.1.3 EFI Compliant
.................................................................................................
752 20.1.4 Coexistence of Legacy Option ROMs
............................................................. 752
20.1.5 Relocatable Image
..........................................................................................
752 20.1.6 Size Restrictions Based on Memory Available
............................................... 752 20.2 Memory
Ordering
........................................................................................................
753 20.3 Virtual Machine Registers
...........................................................................................
753 20.4 Natural
Indexing..........................................................................................................
754 20.4.1 Sign
Bit............................................................................................................
755 20.4.2 Bits Assigned to Natural
Units.........................................................................
755 20.4.3
Constant..........................................................................................................
755 20.4.4 Natural Units
...................................................................................................
756 20.5 EBC Instruction Operands
..........................................................................................
756 20.5.1 Direct Operands
..............................................................................................
756 20.5.2 Indirect
Operands............................................................................................
757 20.5.3 Indirect with Index Operands
..........................................................................
757 20.5.4 Immediate
Operands.......................................................................................
757 20.6 EBC Instruction Syntax
..............................................................................................
758 20.7 Instruction Encoding
...................................................................................................
758 20.7.1 Instruction Opcode Byte Encoding
.................................................................
758 20.7.2 Instruction Operands Byte
Encoding...............................................................
759 20.7.3 Index/Immediate Data Encoding
.....................................................................
759 20.8 EBC Instruction
Set.....................................................................................................
760
ADD...................................................................................................................
761
AND...................................................................................................................
762 ASHR
................................................................................................................
763 BREAK
..............................................................................................................
764 CALL
.................................................................................................................
766 CMP
..................................................................................................................
768 CMPI
.................................................................................................................
770 DIV
....................................................................................................................
772
DIVU..................................................................................................................
773
EXTNDB............................................................................................................
774
EXTNDD............................................................................................................
775
EXTNDW...........................................................................................................
776 JMP
...................................................................................................................
777 JMP8
.................................................................................................................
779
LOADSP............................................................................................................
780 MOD
..................................................................................................................
781 MODU
...............................................................................................................
782 MOV
..................................................................................................................
783 MOVI
.................................................................................................................
785 MOVIn
...............................................................................................................
787
Version 2.1
Errata and amplifications through December 11, 2007
xix
Unified Extensible Firmware Interface Specification
MOVn
................................................................................................................
788 MOVREL
...........................................................................................................
789 MOVsn
..............................................................................................................
790
MUL...................................................................................................................
792 MULU
................................................................................................................
793
NEG...................................................................................................................
794
NOT...................................................................................................................
795 OR
.....................................................................................................................
796
POP...................................................................................................................
797
POPn.................................................................................................................
798 PUSH
................................................................................................................
799 PUSHn
..............................................................................................................
800 RET
...................................................................................................................
801 SHL
...................................................................................................................
802
SHR...................................................................................................................
803 STORESP
.........................................................................................................
804 SUB
...................................................................................................................
805
XOR...................................................................................................................
806 20.9 Runtime and Software Conventions
...........................................................................
807 20.9.1 Calling Outside VM
.........................................................................................
807 20.9.2 Calling Inside VM
............................................................................................
807 20.9.3 Parameter
Passing..........................................................................................
807 20.9.4 Return Values
.................................................................................................
807 20.9.5 Binary
Format..................................................................................................
807 20.10 Architectural
Requirements.......................................................................................
807 20.10.1 EBC Image Requirements
............................................................................
807 20.10.2 EBC Execution Interfacing
Requirements.....................................................
808 20.10.3 Interfacing Function Parameters
Requirements............................................ 808
20.10.4 Function Return Requirements
.....................................................................
808 20.10.5 Function Return Values Requirements
......................................................... 808 20.11
EBC Interpreter
Protocol...........................................................................................
808 EFI_EBC_PROTOCOL
.....................................................................................
809 EFI_EBC_PROTOCOL.CreateThunk()
............................................................. 810
EFI_EBC_PROTOCOL.UnloadImage()
............................................................ 811
EFI_EBC_PROTOCOL.RegisterICacheFlush()
................................................ 812
EFI_EBC_PROTOCOL.GetVersion()................................................................
814 20.12 EBC
Tools.................................................................................................................
814 20.12.1 EBC C
Compiler............................................................................................
814 20.12.2 C Coding Convention
....................................................................................
814 20.12.3 EBC Interface Assembly
Instructions............................................................
815 20.12.4 Stack Maintenance and Argument Passing
.................................................. 815 20.12.5
Native to EBC Arguments Calling Convention
.............................................. 815 20.12.6 EBC to
Native Arguments Calling Convention
.............................................. 815 20.12.7 EBC to
EBC Arguments Calling
Convention................................................. 816
20.12.8 Function
Returns...........................................................................................
816 20.12.9 Function Return
Values.................................................................................
816 20.12.10 Thunking
.....................................................................................................
816
xx
Errata and amplifications through December 11, 2007
Version 2.1
20.12.11 EBC Linker
..................................................................................................
818 20.12.12 Image Loader
..............................................................................................
819 20.12.13 Debug Support
............................................................................................
819 20.13 VM Exception
Handling.............................................................................................
819 20.13.1 Divide By 0 Exception
...................................................................................
819 20.13.2 Debug Break Exception
................................................................................
819 20.13.3 Invalid Opcode Exception
.............................................................................
819 20.13.4 Stack Fault Exception
...................................................................................
820 20.13.5 Alignment Exception
.....................................................................................
820 20.13.6 Instruction Encoding
Exception.....................................................................
820 20.13.7 Bad Break
Exception.....................................................................................
820 20.13.8 Undefined Exception
.....................................................................................
820 20.14 Option ROM Formats
................................................................................................
820 20.14.1 EFI Drivers for PCI Add-in Cards
..................................................................
821 20.14.2 Non-PCI Bus
Support....................................................................................
821
21
Network Protocols - SNP, PXE and
BIS.................................................... 82321.1
Simple Network Protocol
............................................................................................
823 EFI_SIMPLE_NETWORK_PROTOCOL
........................................................... 823
EFI_SIMPLE_NETWORK.Start()
......................................................................
828 EFI_SIMPLE_NETWORK.Stop()
......................................................................
829
EFI_SIMPLE_NETWORK.Initialize().................................................................
830 EFI_SIMPLE_NETWORK.Reset()
....................................................................
831
EFI_SIMPLE_NETWORK.Shutdown()..............................................................
832 EFI_SIMPLE_NETWORK.ReceiveFilters()
....................................................... 833
EFI_SIMPLE_NETWORK.StationAddress()
..................................................... 836
EFI_SIMPLE_NETWORK.Statistics()
............................................................... 837
EFI_SIMPLE_NETWORK.MCastIPtoMAC()
..................................................... 840
EFI_SIMPLE_NETWORK.NvData()..................................................................
841
EFI_SIMPLE_NETWORK.GetStatus()..............................................................
843
EFI_SIMPLE_NETWORK.Transmit()................................................................
845
EFI_SIMPLE_NETWORK.Receive().................................................................
847 21.2 Network Interface Identifier Protocol
...........................................................................
848
EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL..............................
848 21.3 PXE Base Code
Protocol............................................................................................
851 EFI_PXE_BASE_CODE_PROTOCOL
............................................................. 851
EFI_PXE_BASE_CODE_PROTOCOL.Start()
.................................................. 862
EFI_PXE_BASE_CODE_PROTOCOL.Stop()...................................................
864
EFI_PXE_BASE_CODE_PROTOCOL.Dhcp()..................................................
865 EFI_PXE_BASE_CODE_PROTOCOL.Discover()
............................................ 867
EFI_PXE_BASE_CODE_PROTOCOL.Mtftp()
.................................................. 871
EFI_PXE_BASE_CODE_PROTOCOL.UdpWrite()
........................................... 875
EFI_PXE_BASE_CODE_PROTOCOL.UdpRead()...........................................
877
EFI_PXE_BASE_CODE_PROTOCOL.SetIpFilter()..........................................
880 EFI_PXE_BASE_CODE_PROTOCOL.Arp()
.................................................... 882
EFI_PXE_BASE_CODE_PROTOCOL.SetParameters()
.................................. 884
Version 2.1
Errata and amplifications through December 11, 2007
xxi
Unified Extensible Firmware Interface Specification
EFI_PXE_BASE_CODE_PROTOCOL.SetStationIp()
...................................... 886
EFI_PXE_BASE_CODE_PROTOCOL.SetPackets()........................................
888 21.4 PXE Base Code Callback Protocol
.............................................................................
889 EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL
........................................ 889
EFI_PXE_BASE_CODE_CALLBACK.Callback()..............................................
891 21.5 Boot Integrity Services
Protocol..................................................................................
892
EFI_BIS_PROTOCOL.......................................................................................
892 EFI_BIS_PROTOCOL.Initialize()
......................................................................
895 EFI_BIS_PROTOCOL.Shutdown()
...................................................................
899 EFI_BIS_PROTOCOL.Free()
............................................................................
900
EFI_BIS_PROTOCOL.GetBootObjectAuthorizationCertificate().......................
901
EFI_BIS_PROTOCOL.GetBootObjectAuthorizationCheckFlag()......................
902 EFI_BIS_PROTOCOL.GetBootObjectAuthorizationUpdateToken()
................. 903 EFI_BIS_PROTOCOL.GetSignatureInfo()
........................................................ 904
EFI_BIS_PROTOCOL.UpdateBootObjectAuthorization()
................................. 909
EFI_BIS_PROTOCOL.VerifyBootObject()
........................................................ 917
EFI_BIS_PROTOCOL.VerifyObjectWithCredential()
........................................ 925
22
Network Protocols Managed Network
................................................. 93322.1 EFI
Managed Network Protocol
..................................................................................
933 EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL
................... 933 EFI_MANAGED_NETWORK_PROTOCOL
...................................................... 934
EFI_MANAGED_NETWORK_PROTOCOL.GetModeData()
............................ 936
EFI_MANAGED_NETWORK_PROTOCOL.Configure()
................................... 939
EFI_MANAGED_NETWORK_PROTOCOL.McastIpToMac()
........................... 941
EFI_MANAGED_NETWORK_PROTOCOL.Groups().......................................
942
EFI_MANAGED_NETWORK_PROTOCOL.Transmit().....................................
943
EFI_MANAGED_NETWORK_PROTOCOL.Receive()......................................
949 EFI_MANAGED_NETWORK_PROTOCOL.Cancel()
....................................... 950
EFI_MANAGED_NETWORK_PROTOCOL.Poll().............................................
951
23
Network Protocols - ARP and DHCPv4
................................................... 95323.1 ARP
Protocol
..............................................................................................................
953 EFI_ARP_SERVICE_BINDING_PROTOCOL
.................................................. 953
EFI_ARP_PROTOCOL
.....................................................................................
954 EFI_ARP_PROTOCOL.Configure()
..................................................................
956 EFI_ARP_PROTOCOL.Add()
...........................................................................
958
EFI_ARP_PROTOCOL.Find()...........................................................................
960 Related Definitions
............................................................................................
961 EFI_ARP_PROTOCOL.Delete()
.......................................................................
962 EFI_ARP_PROTOCOL.Flush()
.........................................................................
963 EFI_ARP_PROTOCOL.Request()
....................................................................
964
EFI_ARP_PROTOCOL.Cancel().......................................................................
966 23.2 EFI DHCPv4 Protocol
.................................................................................................
967
EFI_DHCP4_SERVICE_BINDING_PROTOCOL..............................................
967 EFI_DHCP4_PROTOCOL
................................................................................
967
xxii
Errata and amplifications through December 11, 2007
Version 2.1
EFI_DHCP4_PROTOCOL.GetModeData().......................................................
970 EFI_DHCP4_PROTOCOL.Configure()
............................................................ 974
EFI_DHCP4_PROTOCOL.Start()
.....................................................................
981 EFI_DHCP4_PROTOCOL.RenewRebind()
...................................................... 983
EFI_DHCP4_PROTOCOL.Release()................................................................
985
EFI_DHCP4_PROTOCOL.Stop()......................................................................
986 EFI_DHCP4_PROTOCOL.Build()
.....................................................................
987 EFI_DHCP4_PROTOCOL.TransmitReceive()
.................................................. 989
EFI_DHCP4_PROTOCOL.Parse()....................................................................
992
24
Network Protocols TCPv4, IPv4 and Configuration
............................ 99524.1 EFI TCPv4 Protocol
....................................................................................................
995
EFI_TCP4_SERVICE_BINDING_PROTOCOL.................................................
995 EFI TCP4 Variable
............................................................................................
995 EFI_TCP4_PROTOCOL
...................................................................................
997
EFI_TCP4_PROTOCOL.GetModeData()..........................................................
999 EFI_TCP4_PROTOCOL.Configure()
.............................................................. 1004
EFI_TCP4_PROTOCOL.Routes()...................................................................
1006
EFI_TCP4_PROTOCOL.Connect().................................................................
1008 EFI_TCP4_PROTOCOL.Accept()
...................................................................
1011 EFI_TCP4_PROTOCOL.Transmit()
................................................................
1013 EFI_TCP4_PROTOCOL.Receive()
.................................................................
1018
EFI_TCP4_PROTOCOL.Close().....................................................................
1020
EFI_TCP4_PROTOCOL.Cancel()...................................................................
1022 EFI_TCP4_PROTOCOL.Poll()
........................................................................
1023 24.2 EFI IPv4 Protocol
......................................................................................................
1023 EFI_IP4_SERVICE_BINDING_PROTOCOL
.................................................. 1024 EFI IPv4
Variable
............................................................................................
1024 EFI_IP4_PROTOCOL
.....................................................................................
1025 EFI_IP4_PROTOCOL.GetModeData()
........................................................... 1027
EFI_IP4_PROTOCOL.Configure()
..................................................................
1032 EFI_IP4_PROTOCOL.Groups()
......................................................................
1034 EFI_IP4_PROTOCOL.Routes()
......................................................................
1036
EFI_IP4_PROTOCOL.Transmit()....................................................................
1038
EFI_IP4_PROTOCOL.Receive().....................................................................
1044
EFI_IP4_PROTOCOL.Cancel().......................................................................
1046
EFI_IP4_PROTOCOL.Poll()............................................................................
1047 24.3 EFI IPv4 Configuration
Protocol................................................................................
1047 EFI_IP4_CONFIG_PROTOCOL
.....................................................................
1047 EFI_IP4_CONFIG_PROTOCOL.Start()
.......................................................... 1049
EFI_IP4_CONFIG_PROTOCOL.Stop()
.......................................................... 1051
EFI_IP4_CONFIG_PROTOCOL.GetData()
.................................................... 1052 Related
Definitions
..........................................................................................
1052
25
Network Protocols UDPv4 and MTFTPv4
.......................................... 105525.1 EFI UDPv4
Protocol..................................................................................................
1055
Version 2.1
Errata and amplifications through December 11, 2007
xxiii
Unified Extensible Firmware Interface Specification
EFI_UDP4_SERVICE_BINDING_PROTOCOL
.............................................. 1055 EFI UDP4
Variable
..........................................................................................
1055 EFI_UDP4_PROTOCOL
.................................................................................
1057 EFI_UDP4_PROTOCOL.GetModeData()
....................................................... 1059
EFI_UDP4_PROTOCOL.Configure()
.............................................................. 1062
EFI_UDP4_PROTOCOL.Groups()..................................................................
1064 EFI_UDP4_PROTOCOL.Routes()
..................................................................
1065
EFI_UDP4_PROTOCOL.Transmit()................................................................
1067
EFI_UDP4_PROTOCOL.Receive().................................................................
1073 EFI_UDP4_PROTOCOL.Cancel()
..................................................................
1075
EFI_UDP4_PROTOCOL.Poll()........................................................................
1076 25.2 EFI MTFTPv4 Protocol
.............................................................................................
1076
EFI_MTFTP4_SERVICE_BINDING_PROTOCOL..........................................
1076
EFI_MTFTP4_PROTOCOL.............................................................................
1077
EFI_MTFTP4_PROTOCOL.GetModeData()...................................................
1079
EFI_MTFTP4_PROTOCOL.Configure()..........................................................
1082 EFI_MTFTP4_PROTOCOL.GetInfo()
............................................................. 1084
EFI_MTFTP4_PROTOCOL.ParseOptions()
................................................... 1092
EFI_MTFTP4_PROTOCOL.ReadFile()...........................................................
1094 EFI_MTFTP4_PROTOCOL.WriteFile()
........................................................... 1100
EFI_MTFTP4_PROTOCOL.ReadDirectory()
.................................................. 1102
EFI_MTFTP4_PROTOCOL.Poll()
...................................................................
1104
26
Security - Secure Boot, Driver Signing and Hash
................................. 110526.1 Secure Boot
..............................................................................................................
1105 EFI_AUTHENTICATION_INFO_PROTOCOL
................................................ 1105
EFI_AUTHENTICATION_INFO_PROTOCOL.Get()
....................................... 1106
EFI_AUTHENTICATION_INFO_PROTOCOL.Set()........................................
1107 26.2 UEFI Driver Signing Overview
..................................................................................
1110 26.2.1 Digital Signatures
..........................................................................................
1110 26.2.2 Embedded
Signatures...................................................................................
1111 26.2.3 Creating Message from Executables
............................................................ 1112
26.2.4 Code
Definitions............................................................................................
1112
WIN_CERTIFICATE........................................................................................
1113 WIN_CERTIFICATE_EFI_PKCS1_15
............................................................ 1114
26.2.5 WIN_CERTIFICATE_UEFI_GUID
................................................................
1115 26.3 Hash
Overview..........................................................................................................
1115 26.3.1 Hash References
..........................................................................................
1115 26.4 EFI Hash Protocols
..................................................................................................
1116
EFI_HASH_SERVICE_BINDING_PROTOCOL..............................................
1116
EFI_HASH_PROTOCOL.................................................................................
1116 EFI_HASH_PROTOCOL.GetHashSize()
........................................................ 1118
EFI_HASH_PROTOCOL.Hash().....................................................................
1119 26.4.1 Other Code
Definitions................................................