我正在使用 GNU-EFI 并且调用 UEFI 函数就像一个魅力,这要归功于
uefi_call_wrapper()
宏,它确保调用约定的差异不会成为问题。
但是:相反的情况下,当我希望系统固件调用我的函数时该怎么办?例如,这与回调函数的情况相关(通过
BS->CreateEvent()
注册)。
注册回调函数工作正常,执行成功,但是传递给这样的回调函数的参数是垃圾,例如可以传递的
VOID * Context
指针。
我找不到任何与此相关的文档(或任何一般的 GNU-EFI 文档)。
是否有适合这种情况的 GNU-EFI 宏、存根或其他任何东西?
我没有找到任何宏,但你可以做的是使用正确的(毫秒)调用约定定义回调函数。
__attribute__((ms_abi)) EFI_STATUS callback(Void * Context) {...}