2016-09-29 104 views
0

Stdio函数库中有fprintf函数。如何在UEFI中使用fprintf

但是如何使用它?

第一个参数是FILE类型。

但我有EFI_FILE_PROTOCOL* File我从EFIOpenFile函数中获得。如何映射到FILE类型?

+1

你不能。哪有这回事。您必须使用stdlib移植到UEFI中,以下使用UEFI SHELL协议来完成所有魔术。然后你可以使用C和stdlib,就像在windows或linux中一样。 – Alex

回答

0

有托管的环境和独立的环境。

从C标准:

两种形式的一致性实现的托管和独立。符合托管的实施应接受任何严格符合的程序。一个符合独立实现应接受任何严格符合程序,其中使用的库条款(第7节)中所指定的功能被限制在标准头<float.h><iso646.h><limits.h><stdalign.h><stdarg.h><stdbool.h><stddef.h>的内容,<stdint.h> ,和<stdnoreturn.h>。符合的实现可能具有扩展(包括附加的库函数),只要它们不会改变任何严格符合的程序的行为。

所以在独立环境中(如你所描述的UEFI环境)C标准不要求fprintf()函数定义/声明,并且不需要进行任何定义的FILE类型。因此你需要自己编码。