weednet 发表于 2008-11-12 11:07:15

求助关于EFI

各位大大好:
在下legacy bios没做两天又EFI了:L
我想问一下下面的代码是什么意思,能从c语法分析一下吗??谢谢了!

typedef
EFI_STATUS
(EFIAPI *EFI_PEI_RESET_SYSTEM) (
IN EFI_PEI_SERVICES   **PeiServices
);

typedef struct {
EFI_PEI_RESET_SYSTEMResetSystem;
} PEI_RESET_PPI;

xtdumpling 发表于 2008-11-12 13:18:14

typedef
EFI_STATUS
(EFIAPI *EFI_PEI_RESET_SYSTEM) (
IN EFI_PEI_SERVICES   **PeiServices
);定义EFI_PEI_RESET_SYSTEM,
是一个 指向返回值是EFI_STATUS,有一个参数IN EFI_PEI_SERVICES   **,使用EFIAPI调用方式的函数指针,也就是一个函数的地址

EFI_PEI_RESET_SYSTEM          PeiResetSystem;定义函数PeiResetSystem,相当于:
EFI_STATUS EFIAPI PeiResetSystem (INEFI_PEI_SERVICES   **PeiServices );

weednet 发表于 2008-11-12 14:04:00

感谢xtdumpling指点,学习了!

sharon 发表于 2009-8-6 09:45:21

请问,EFI_STATUS这个有没有具体意思呢?

请问,EFI_STATUS这个有没有具体意思呢?谢谢哈,初学者~~

forest.devil 发表于 2009-8-14 20:47:07

EFI_STATUS就是返回值类型啦,具体你可以到头文件里找。动动手勤思考。
第一个typedef是定义的一个函数指针类型,类型名是EFI_PEI_RESET_SYSTEM,EFIAPI是一个简单的宏替换,原型是啥你最好自己去查,其实也很简单,就一个词。
第二个typedef是定义了一个名为PEI_RESET_PPI的结构类型,它的唯一成员是一个(上一步定义的)函数指针。
经过这两次定义,以后如果你将一个变量声明为PEI_RESET_PPI类型,比方说
PEI_RESET_PPI myVar;
就意味着,myVar是一个结构型变量,它含有一个成员,这个成员是一个指向函数的指针,该函数接收一个指针数组作为其输入(其中数组中的每一项都指向一个类型为EFI_PEI_SERVICES的实例,请参考char **s作为输入),输出类型为EFI_STATUS。

解析   EFI_PEI_SERVICES **PeiServices
可看作 EFI_PEI_SERVICES (*PeiServices)[ ]
页: [1]
查看完整版本: 求助关于EFI