2016-09-29 107 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類型。因此你需要自己編碼。