Intel Extensible Firmware Interface User Manual
Extensible firmware interface specification
Table of contents
Document Outline
- Extensible Firmware Interface Specification
- Disclaimer
- Revision History
- Contents
- 1 Introduction
- 2 Overview
- 3 Boot Manager
- 4 EFI System Table
- 5 Services - Boot Services
- 5.1 Event, Timer, and Task Priority Services
- 5.2 Memory Allocation Services
- 5.3 Protocol Handler Services
- 5.3.1 Driver Model Boot Services
- InstallProtocolInterface()
- UninstallProtocolInterface()
- ReinstallProtocolInterface()
- RegisterProtocolNotify()
- LocateHandle()
- HandleProtocol()
- LocateDevicePath()
- OpenProtocol()
- CloseProtocol()
- OpenProtocolInformation()
- ConnectController()
- DisconnectController()
- ProtocolsPerHandle()
- LocateHandleBuffer()
- LocateProtocol()
- InstallMultipleProtocolInterfaces()
- UninstallMultipleProtocolInterfaces()
- 5.3.1 Driver Model Boot Services
- 5.4 Image Services
- 5.5 Miscellaneous Boot Services
- 6 Services - Runtime Services
- 7 Protocols - EFI Loaded Image
- 8 Protocols - Device Path Protocol
- 8.1 Device Path Overview
- 8.2 EFI_DEVICE_PATH Protocol
- 8.3 Device Path Nodes
- 8.3.1 Generic Device Path Structures
- 8.3.2 Hardware Device Path
- 8.3.3 ACPI Device Path
- 8.3.4 Messaging Device Path
- 8.3.4.1 ATAPI Device Path
- 8.3.4.2 SCSI Device Path
- 8.3.4.3 Fibre Channel Device Path
- 8.3.4.4 1394 Device Path
- 8.3.4.5 USB Device Path
- 8.3.4.6 USB Class Device Path
- 8.3.4.7 IO Device Path
- 8.3.4.8 MAC Address Device Path
- 8.3.4.9 IPv4 Device Path
- 8.3.4.10 IPv6 Device Path
- 8.3.4.11 InfiniBand Device Path
- 8.3.4.12 UART Device Path
- 8.3.4.13 Vendor-Defined Messaging Device Path
- 8.3.4.14 UART Flow Control Messaging Path
- 8.3.5 Media Device Path
- 8.3.6 BIOS Boot Specification Device Path
- 8.4 Device Path Generation Rules
- 9 Protocols - EFI Driver Model
- 10 Protocols - Console Support
- 10.1 Console I/O Protocol
- 10.2 Simple Input Protocol
- 10.3 Simple Text Output Protocol
- 10.4 Universal Graphics Adapter Protocols
- 10.5 UGA Draw Protocol
- 10.6 Rules for PCI/AGP Devices
- 10.7 UGA I/O Protocol
- 10.8 Implementation Rules for an EFI UGA Driver
- 10.9 UGA Draw Protocol to UGA I/O Protocol Mapping
- 10.10 Simple Pointer Protocol
- 10.11 EFI Simple Pointer Device Paths
- 10.12 Serial I/O Protocol
- 11 Protocols - Bootable Image Support
- 12 Protocols - PCI Bus Support
- 12.1 PCI Root Bridge I/O Support
- 12.2 PCI Root Bridge I/O Protocol
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read() EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read() EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read() EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.FreeBuffer()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Flush()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes()
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Configuration()
- 12.2.1 PCI Root Bridge Device Paths
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
- 12.3 PCI Driver Model
- 12.4 EFI PCI I/O Protocol
- EFI_PCI_IO_PROTOCOL
- EFI_PCI_IO_PROTOCOL.PollMem()
- EFI_PCI_IO_PROTOCOL.PollIo()
- EFI_PCI_IO_PROTOCOL.Mem.Read() EFI_PCI_IO_PROTOCOL.Mem.Write()
- EFI_PCI_IO_PROTOCOL.Io.Read() EFI_PCI_IO_PROTOCOL.Io.Write()
- EFI_PCI_IO_PROTOCOL.Pci.Read() EFI_PCI_IO_PROTOCOL.Pci.Write()
- EFI_PCI_IO_PROTOCOL.CopyMem()
- EFI_PCI_IO_PROTOCOL.Map()
- EFI_PCI_IO_PROTOCOL.Unmap()
- EFI_PCI_IO_PROTOCOL.AllocateBuffer()
- EFI_PCI_IO_PROTOCOL.FreeBuffer()
- EFI_PCI_IO_PROTOCOL.Flush()
- EFI_PCI_IO_PROTOCOL.GetLocation()
- EFI_PCI_IO_PROTOCOL.Attributes()
- EFI_PCI_IO_PROTOCOL.GetBarAttributes()
- EFI_PCI_IO_PROTOCOL.SetBarAttributes()
- 12.4.1 PCI Device Paths
- 12.4.2 PCI Option ROMs
- 12.4.3 Nonvolatile Storage
- 12.4.4 PCI Hot-Plug Events
- EFI_PCI_IO_PROTOCOL
- 13 Protocols - SCSI Bus Support
- 14 Protocols - USB Support
- 14.1 USB Host Controller Protocol
- 14.1.1 USB Host Controller Protocol Overview
- EFI_USB_HC_PROTOCOL
- EFI_USB_HC_PROTOCOL.Reset()
- EFI_USB_HC_PROTOCOL.GetState()
- EFI_USB_HC_PROTOCOL.SetState()
- EFI_USB_HC_PROTOCOL.ControlTransfer()
- EFI_USB_HC_PROTOCOL.BulkTransfer()
- EFI_USB_HC_PROTOCOL.AsyncInterruptTransfer()
- EFI_USB_HC_PROTOCOL.SyncInterruptTransfer()
- EFI_USB_HC_PROTOCOL.IsochronousTransfer()
- EFI_USB_HC_PROTOCOL.AsyncIsochronousTransfer()
- EFI_USB_HC_PROTOCOL.GetRootHubPortNumber()
- EFI_USB_HC_PROTOCOL.GetRootHubPortStatus()
- EFI_USB_HC_PROTOCOL.SetRootHubPortFeature()
- EFI_USB_HC_PROTOCOL.ClearRootHubPortFeature()
- EFI_USB_HC_PROTOCOL
- 14.1.1 USB Host Controller Protocol Overview
- 14.2 USB Driver Model
- 14.2.1 Scope
- 14.2.2 USB Driver Model Overview
- 14.2.3 USB Bus Driver
- 14.2.4 USB Device Driver
- 14.2.5 EFI USB I/O Protocol Overview
- EFI_USB_IO Protocol
- EFI_USB_IO_PROTOCOL.UsbControlTransfer()
- EFI_USB_IO_PROTOCOL.UsbBulkTransfer()
- EFI_USB_IO_PROTOCOL.UsbAsyncInterruptTransfer()
- EFI_USB_IO_PROTOCOL.UsbSyncInterruptTransfer()
- EFI_USB_IO_PROTOCOL.UsbIsochronousTransfer()
- EFI_USB_IO_PROTOCOL.UsbAsyncIsochronousTransfer()
- EFI_USB_IO_PROTOCOL.UsbGetDeviceDescriptor()
- EFI_USB_IO_PROTOCOL.UsbGetConfigDescriptor()
- EFI_USB_IO_PROTOCOL.UsbGetInterfaceDescriptor()
- EFI_USB_IO_PROTOCOL.UsbGetEndpointDescriptor()
- EFI_USB_IO_PROTOCOL.UsbGetStringDescriptor()
- EFI_USB_IO_PROTOCOL.UsbGetSupportedLanguages()
- EFI_USB_IO_PROTOCOL.UsbPortReset()
- EFI_USB_IO Protocol
- 14.2.6 USB Device Paths
- 14.1 USB Host Controller Protocol
- 15 Protocols - Network Support
- 15.1 EFI_SIMPLE_NETWORK Protocol
- EFI_SIMPLE_NETWORK Protocol
- EFI_SIMPLE_NETWORK.Start()
- EFI_SIMPLE_NETWORK.Stop()
- EFI_SIMPLE_NETWORK.Initialize()
- EFI_SIMPLE_NETWORK.Reset()
- EFI_SIMPLE_NETWORK.Shutdown()
- EFI_SIMPLE_NETWORK.ReceiveFilters()
- EFI_SIMPLE_NETWORK.StationAddress()
- EFI_SIMPLE_NETWORK.Statistics()
- EFI_SIMPLE_NETWORK.MCastIPtoMAC()
- EFI_SIMPLE_NETWORK.NvData()
- EFI_SIMPLE_NETWORK.GetStatus()
- EFI_SIMPLE_NETWORK.Transmit()
- EFI_SIMPLE_NETWORK.Receive()
- EFI_SIMPLE_NETWORK Protocol
- 15.2 NETWORK_INTERFACE_IDENTIFIER Protocol
- 15.3 PXE Base Code Protocol
- EFI_PXE_BASE_CODE Protocol
- EFI_PXE_BASE_CODE.Start()
- EFI_PXE_BASE_CODE.Stop()
- EFI_PXE_BASE_CODE.Dhcp()
- EFI_PXE_BASE_CODE.Discover()
- EFI_PXE_BASE_CODE.Mtftp()
- EFI_PXE_BASE_CODE.UdpWrite()
- EFI_PXE_BASE_CODE.UdpRead()
- EFI_PXE_BASE_CODE.SetIpFilter()
- EFI_PXE_BASE_CODE.Arp()
- EFI_PXE_BASE_CODE.SetParameters()
- EFI_PXE_BASE_CODE.SetStationIp()
- EFI_PXE_BASE_CODE.SetPackets()
- EFI_PXE_BASE_CODE Protocol
- 15.4 PXE Base Code Callback Protocol
- 15.5 Boot Integrity Services Protocol
- EFI_BIS_PROTOCOL
- EFI_BIS.Initialize()
- EFI_BIS.Shutdown()
- EFI_BIS.Free()
- EFI_BIS.GetBootObjectAuthorizationCertificate()
- EFI_BIS.GetBootObjectAuthorizationCheckFlag()
- EFI_BIS.GetBootObjectAuthorizationUpdateToken()
- EFI_BIS.GetSignatureInfo()
- EFI_BIS.UpdateBootObjectAuthorization()
- EFI_BIS.VerifyBootObject()
- EFI_BIS.VerifyObjectWithCredential()
- EFI_BIS_PROTOCOL
- 15.1 EFI_SIMPLE_NETWORK Protocol
- 16 Protocols - Debugger Support
- 17 Protocols - Compression Algorithm Specification
- 18 Protocols - Device I/O Protocol
- 19 EFI Byte Code Virtual Machine
- 19.1 Overview
- 19.2 Memory Ordering
- 19.3 Virtual Machine Registers
- 19.4 Natural Indexing
- 19.5 EBC Instruction Operands
- 19.6 EBC Instruction Syntax
- 19.7 Instruction Encoding
- 19.8 EBC Instruction Set
- 19.9 Runtime and Software Conventions
- 19.10 Architectural Requirements
- 19.11 EBC Interpreter Protocol
- 19.12 EBC Tools
- 19.12.1 EBC C Compiler
- 19.12.2 C Coding Convention
- 19.12.3 EBC Interface Assembly Instructions
- 19.12.4 Stack Maintenance and Argument Passing
- 19.12.5 Native to EBC Arguments Calling Convention
- 19.12.6 EBC to Native Arguments Calling Convention
- 19.12.7 EBC to EBC Arguments Calling Convention
- 19.12.8 Function Returns
- 19.12.9 Function Return Values
- 19.12.10 Thunking
- 19.12.11 EBC Linker
- 19.12.12 Image Loader
- 19.12.13 Debug Support
- 19.13 VM Exception Handling
- 19.14 Option ROM Formats
- Appendix A GUID and Time Formats
- Appendix B Console
- Appendix C Device Path Examples
- Appendix D Status Codes
- Appendix E 32/64-Bit UNDI Specification
- E.1 Introduction
- E.2 Overview
- E.3 UNDI C Definitions
- E.4 UNDI Commands
- E.4.1 Command Linking and Queuing
- E.4.2 Get State
- E.4.3 Start
- E.4.4 Stop
- E.4.5 Get Init Info
- E.4.6 Get Config Info
- E.4.7 Initialize
- E.4.8 Reset
- E.4.9 Shutdown
- E.4.10 Interrupt Enables
- E.4.11 Receive Filters
- E.4.12 Station Address
- E.4.13 Statistics
- E.4.14 MCast IP To MAC
- E.4.15 NvData
- E.4.16 Get Status
- E.4.17 Fill Header
- E.4.18 Transmit
- E.4.19 Receive
- E.5 UNDI as an EFI Runtime Driver
- Appendix F Using the Simple Pointer Protocol
- Appendix G Using the EFI SCSI Pass Thru Protocol
- Appendix H Compression Source Code
- Appendix I Decompression Source Code
- Appendix J EFI Byte Code Virtual Machine Opcode Summary
- Appendix K Alphabetic Function Lists
- References
- Glossary
- Index