GNU-EFI:如何正确执行回调(调用约定不兼容)?

问题描述 投票:0回答:1

我正在使用 GNU-EFI 并且调用 UEFI 函数就像一个魅力,这要归功于

uefi_call_wrapper()
宏,它确保调用约定的差异不会成为问题。

但是:相反的情况下,当我希望系统固件调用我的函数时该怎么办?例如,这与回调函数的情况相关(通过

BS->CreateEvent()
注册)。

注册回调函数工作正常,执行成功,但是传递给这样的回调函数的参数是垃圾,例如可以传递的

VOID * Context
指针。 我找不到任何与此相关的文档(或任何一般的 GNU-EFI 文档)。

是否有适合这种情况的 GNU-EFI 宏、存根或其他任何东西?

uefi gnu-efi
1个回答
0
投票

我没有找到任何宏,但你可以做的是使用正确的(毫秒)调用约定定义回调函数。

__attribute__((ms_abi)) EFI_STATUS callback(Void * Context) {...}

© www.soinside.com 2019 - 2024. All rights reserved.