Never test for an error condition you don't know how to handle.
- Steinbach's Guideline for Systems Programming
UEFI console 主要由兩個 protocol組成:
- Simple Text Input Protocol (Simple Text Input Ex Protocol)
- Simple Text Output Protocol
EFI System Table 幾個與 console相關的項目:
- ConsoleInHandle
- ConIn
- ConsoleOutHandle
- ConOut
- StandardErrorHandle
- StdErr
Console input device的 handle,此 handle必須 support Simple Text Input Protocol 及 Simple Text Input Ex Protocol,ConIn 則為指向此 Simple Text Input Protocol 的指標。
Console output device的 handle,此 handle必須 support Simple Text Output Protocol ,ConOut 則為指向此 Simple Text Output Protocol的指標。
Standard error console device的 handle,此 handle必須 support Simple Text Output Protocol ,StdErr則為指向此 Simple Text Output Protocol的指標。
與 console相關的 UEFI global variable:
- ConIn
- ConInDev
- ConOut
- ConOutDev
- ErrOut
- ErrOutDev
預設 console input device的 device path
所有可能的 console input device的 device path
預設 console output device的 device path
所有可能的 console output device的 device path
預設 error console的 device path
所有可能的 error console的 device path
Simple Text Input Protocol
- Reset
- ReadKeyStroke
- WaitForKey
Reset input device硬體
讀取按鍵輸入
等待按鍵輸入
Simple Text Input Ex Protocol
- ReadKeyStrokeEx
- Key Registration Capabilities
- SetState
比起 ReadKeyStroke能讀取更多種按鍵輸入
讓使用者可以註冊或取消註冊組合按鍵所觸發的 notification function
設定 input device的狀態。EX:Caps Lock actice
Simple Text Output Protocol
- OutputString
- SetAttribute
- ClearScreen
- SetCursorPosition
將 Unicode字串輸出到 output device
設定 OutputString()及 ClearScreen()的前景和背景的顏色
清除 output device 的output
設定游標的位置
Remote Console Support
透過 Console driver來產生多一層 Text I/O Interface以達到 remote 介面與 UEFI間的
溝通
Console Splitter
Console Splitter來同時支援多個 input及 output console device,透過 hook EFI System
Table的 ConIn/ConOut/StdErr來達成,且ConIn等 UEFI global可以包含多個 active console
的 device path
Network Console
UEFI也提供與網路溝通的能力,主要包含的元件有:
- Network Interface Identifier
- Simple Network Protocol
這功能由 UNDI(Universal Network Driver Interface)提供,並負責產生 Simple
Network Protocol
提供封包層級的網卡操作介面