小華的部落格: 2010/7/11 - 2010/7/18

搜尋此網誌

網頁

星期日, 7月 11, 2010

EFI_DRIVER_ENTRY_POINT() 的意義

很多人剛開始學習EFI的時候,一定會看到你的Driver.c內有一個EFI_DRIVER_ENTRY_POINT()巨集,那他到底是幹甚麼的呢?

如果你有追進去看他的定義,你就會發現在一般的情況下,他其實是一個空的巨集定義
也就是不代表任何意義,在你Compiler code之後,也不會產生任何東西! 因此,在你的Driver.c內有沒有這個巨集並不會影響到你的code的執行!

不過,一般我們都還是會定義成跟你的Driver EntryPoint函數名稱一樣,來增加"可讀性"

除了一般的情況之外,如果你想把你的Driver放到NT模擬器下面執行時,這個巨集就非常重要了! 因為Window 32 bit環境下的執行檔案的進入點跟EFI不同,所以你的Driver想要在模擬器下執行時,你就必須透過這個巨集來重新定義函數原型宣告,不然你就沒辦法在NT下的模擬器執行你的EFI Driver.

所以結論就是:
如果你沒有要在NT模擬器跑你的EFI Driver,那你是可以忽略這個寫法! 但是,還是建議你保持良好的寫code習慣,增加可讀性,所以多一行code應該是不會花你太多時間啦~