The OS loader and drivers should not depend on these types of protocols because they are not guaranteed to be present in every EFI-compliant system.
OS loader(作業系統載入器)與驅動程式(EFI Driver)不應該依存protocols的型別,因為它並不保證會出現在每一種兼容EFI的系統上。
OS loaders and drivers should depend only on protocols that are defined in the EFI 1.10 Specification and protocols that are required by platform design guides such as Design Implementation Guide for 64-bit Server.
OS loader(作業系統載入器)與驅動程式(EFI Driver)應該只依存有定義在EFI 1.10規範中以及像是Design Implementation Guide for 64-bit Server之類的平台設計手冊中的protocols。
The extensible nature of EFI allows the developers of each platform to design and add special protocols.
EFI的可延展特性可以讓每一個平台的開發者去設計並加入特殊的protocols。
**Using these protocols, they can expand the capabilities of EFI and provide access to proprietary devices and interfaces in congruity with the rest of the EFI architecture.
**使用這些protocols可以擴充EFI的性能,以及提供存取專有的裝置與介面的能力。
Because a protocol is “named” by a GUID, no other protocols should have that same identification number.
因為protocol是用GUID所命名的,所以不會有其他的protocols會有重複的ID號碼。
Care must be taken when creating a new protocol to define a new GUID for it.
要注意,當在創建新的protocol時,要定義新的GUID它。
EFI fundamentally assumes that a specific GUID exposes a specific protocol interface.
EFI基本假設特殊的GUID會顯露出特殊的protocol介面。
Cutting and pasting an existing GUID or hand-modifying an existing GUID creates the opportunity for a duplicate GUID to be introduced.
剪貼目前現有的GUID或是手動修改現有的GUID會造成產生相同的GUID的機會。
A system containing a duplicate GUID inadvertently could find the new protocol and think that it is another protocol, crashing the system as a result.
系統不小心包含重複的GUID,會發現這個新的protocol會被認為是其他的protocol,結果會導致系統崩潰。
For these types of bugs, finding the root cause is also very difficult.
對於這樣的錯誤,要找出根本原因也是非常困難的。
The GUID allows for naming APIs without having to worry about namespace collision.
GUID允許名命APIs不需考濾到命名空間衝突的問題。
In systems such as PC/AT BIOS, services were added as an enumeration.
在一些像是PC/AT BIOS的系統上,系統服務的增加就如同列舉項目一樣。
For example, the venerable Int15h interface would pass the service type in AX.
例如:Int15h介面會傳遞在AX中的系統服務型別。
Since no central repository or specification managed the evolution of Int15h services, several vendors defined similar service numbers, thus making interoperability with operating systems and pre-OS applications difficult.
由於沒有中央資料庫或是規範管理Int15h系統服務的發展(會有幾個供應商定義相似的系統服務),使得OS與pre-OS應用程式之間的交握很困難。
Through the judicious use of GUIDs to name APIs and an association to develop the specification, EFI balances the need for API evolution with interoperability.
藉由正確的使用GUID去命名API,並且由工會去發展規範,EFI可以去平衡API的發展與互用性。