4.对于EVT_NOTIFY_WAIT类型的event,我们使用BS->CoreCheckEvent->CoreNotifyEvent-->CoreRestoreTpl-->CoreDispatchEventNotifies来激活,它同样是往 gEventQueue插入IEvent的节点。 参考资料: 1.event.c,tpl.c,timer.c,cpudxe.c,DxeProtocolNotify.c,CpuAsm.asm,IvtAsm.asm 2.IA32/x64编程指导手册 3.IA32/X64...
入口中一个关键的接口RegisterProtocolNotify接口。该函数通知 DxeCore 当协议 Protocol 被安装时触发事件 Event, 第三个参数是在调用 CoreLocateHandle 或者CoreLocateProtocol 时传入该 Registration,以得到新安装的指定协议的句柄或接口,与EfiCreateProtocolNotifyEvent接口功能完全相同; RedfishConfigCommonInit在退出dxe和...
IN EFI_TPL NotifyTpl,//事件NotifyFunction函数的优先级 IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL //事件NotifyFunction函数 IN VOID *NotifyContext, OPTIONAL//传给事件NotifyFunction函数的参数 OUT EFI_EVENT *Event//生成的事件 ); 事件类型有如下几种(摘自MdePkg\Uefi\UefiSpec.h): 图2 各种类型事件 ...
一旦部署在一个固件卷中,DXE Foundation就会在每次系统引导时加载它。 SecDxe是一个小型DXE驱动程序,主要做两件事:安装一个从未使用过的GUID 832d9b4d-d8d5-425f-bd52-5c5afb2c85dc标识的协议;创建一个与Notify功能相关的事件。通知函数设置为在发信号通知EFI_EVENT_GROUP_READY_TO_BOOT事件组时调用。引导管...
图14给出了在OS之前UEFI rootkit工作流的概述。 首先,DXD调度程序加载SecDxe DXE驱动程序。 它在EFI_EVENT_GROUP_READY_TO_BOOT事件组上设置Notify函数回调。 当固件即将选择引导设备并运行OS加载程序时调用Notify功能。回调做了三件事: 加载嵌入式NTFS DXE驱动程序,以便能够访问和写入NTFS分区; ...
执行DriverImage的入口函数, 在入口函数里Driver Binding Protocol被加载到Handle上(Driver Image handle 或者其它的Controller handle),然后UEFI会遍历所有的Controller,调用Driver Binding Protocol的Supported 函数测试这个Driver是否支持该Controller,如果支持则调用Start()安装驱动。 EFI Component Name Protocol 编写Driver ...
执行DriverImage的入口函数, 在入口函数里Driver Binding Protocol被加载到Handle上(Driver Image handle 或者其它的Controller handle),然后UEFI会遍历所有的Controller,调用Driver Binding Protocol的Supported 函数测试这个Driver是否支持该Controller,如果支持则调用Start()安装驱动。 EFI Component Name Protocol 编写Driver ...
DxeMain->CoreNotifyOnProtocolInstallation->GenericProtocolNotify: 在注册gTimer之后,GenericProtocolNotify被触发,CoreTimerTick注册到gTimer中断处理函数TimerInterruptHandler中。 以ArmPkg的gTimer为例: 最后看看CoreTimerTick的实现: 先检查Timer的时间,将Timer任务加入调度列表,最后调用CoreReleaseLock(即RestoreTpl)函数...
在每个组件中,创建一个与EFI_EVENT_GROUP_FIRMWARE_DESYNC和 NotifyFunction() 关联的事件,该事件导致组件停止刷新/同步回存储。 事件的 NotifyFunction() 应执行组件转换到非同步模式所需的任何清理操作。 完成此清理后,组件在下次设备重新启动之前,不得使用闪存刷新或同步其存储。 如果事件的 NotifyFunction 失...
EVENT)CoreCreateEvent,// CreateEvent57(EFI_SET_TIMER)CoreSetTimer,// SetTimer58(EFI_WAIT_FOR_EVENT)CoreWaitForEvent,// WaitForEvent59(EFI_SIGNAL_EVENT)CoreSignalEvent,// SignalEvent60(EFI_CLOSE_EVENT)CoreCloseEvent,// CloseEvent61(EFI_CHECK_EVENT)CoreCheckEvent,// CheckEvent62(EFI_INSTALL_PROTOCOL...