初学者,请大神告知 下面这段代码是定义一个函数吗?“ (EFIAPI *EFI_SET_FRB_TIMER) ”是什么意思?

typedef EFI_STATUS (EFIAPI *EFI_SET_FRB_TIMER) (

IN EFI_SM_FRB_PROTOCOL * This,
IN EFI_FRB_TYPE FrbType,
IN UINTN *Timeout

);

这应该是UEFI里定时器的函数原型,总体上说是一个函数指针,指针指向一个返回类型为EFI_STATUS,三个输入型形参的函数。但是加上了一个typedef,就是为这个函数指针起了一个别名,就是EFI_SET_FRB_TIMER,这个东西就可以替代上面所有的复杂变量声明。简单说就是EFI_SET_FRB_TIMER 就已经是一个数据类型了。至于EFIAPI大部分情况下为空,你可以直接把他忽略掉,方便理解。

着个是定义一个函数指针类型的变量,

使用方式
EFI_SET_FRB_TIMER     xxxxx;

xxxxx是你定义的函数名,相当于
EFI_STATUS   xxxxx ( EFI_SM_FRB_PROTOCOL * This,  EFI_FRB_TYPE FrbType,   UINTN *Timeout);

源代码里“EFI_STATUS” 其实就是一个返回类型,“EFIAPI”是一个宏定义可以忽略

看上去十一个函数指针,这应该是一个定时器到达时间所触发的回调函数所用的。