Extensible Firmware Interface Specification
32 12/12/00 Version 1.02
can’t clean up on behalf of drivers that have been loaded into the system. The drivers have to do
that themselves by creating an event whose type is EVT_SIGNAL_EXIT_BOOT_SERVICES and
whose notification function is a function within the driver itself. Then, when
ExitBootServices() has finished its cleanup, it signals each event of type
EVT_SIGNAL_EXIT_BOOT_SERVICES.
Another example of the use of synchronous events occurs when an event of type
EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE is used in conjunction with the
SetVirtualAddressmap() function. For more information, see Section 3.7.1.
The EVT_NOTIFY_WAIT and EVT_NOTIFY_SIGNAL flags are exclusive. If neither flag is
specified, the caller does not require any notification concerning the event and the NotifyTpl,
NotifyFunction, and NotifyContext parameters are ignored. If EVT_NOTIFY_WAIT is
specified, then the event is signaled and its notify function is queued whenever a consumer of the
event is waiting for it (via WaitForEvent() or CheckEvent()). If the
EVT_NOTIFY_SIGNAL flag is specified then the event’s notify function is queued whenever the
event is signaled.
Note: Since its internal structure is unknown to the caller, Event cannot be modified by the caller.
The only way to manipulate it is to use the published event interfaces.
Status Codes Returned
EFI_SUCCESS The event structure was created.
EFI_INVALID_PARAMETER One of the parameters has an invalid value.
EFI_OUT_OF_RESOURCES The event could not be allocated.