UEFI服務
UEFI用驅動的形式提供服務,因爲只有驅動才能常駐內存(應用程序不行),這種驅動稱之爲服務型驅動
驅動分2種,UEFI驅動模型驅動 和 DXE驅動。服務採用DXE驅動的方式開發
服務的開發分3步:
1. 服務接口的設計
2. 服務接口的實現
3. 服務驅動入口函數中gBS->InstallProtocolInterface,將Protocol的實例安裝到自身Handle上
UEFI驅動
驅動的驅動服務部分:
1. Protocol頭文件中定義一個Protocol(EFI_XXX_PROTOCOL),包括GUID,成員函數和變量的簽名
2. 驅動程序源文件中定義私有數據(XXX_PRIVATE_DATA),包括Protocol和相關信息
這裏Protocol接口的實現要觸及硬件設備(寄存器)
驅動的框架部分:
1. 實現EFI_DRIVER_BINDING_PROTOCOL的三個服務Supported、Start和Stop
Start服務負責爲私有數據分配內存、初始化私有數據,並在ControllerHandle上安裝協議(InstallProtocolInterface)
2. 實現Component Name Protocol和Component Name2 Protocol
3. 模塊入口函數中安裝EDBP,ECNP,ECN2P(EfiLibInstallDriverBindingComponentName2)到Image Handle