看板 C_and_CPP 關於我們 聯絡資訊
我在程式裡面看到定義 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) \ UINTN \ __stdcall \ _DllMainCRTStartup ( \ UINTN Inst, \ UINTN reason_for_call, \ VOID *rserved \ ) \ { \ return 1; \ } \ \ EFI_STATUS \ __declspec( dllexport ) \ __cdecl \ InitializeDriver ( \ IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, \ IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList \ ) \ { \ return InitFunction(SecCoreData, PpiList); \ } typedef VOID (EFIAPI *EFI_PEI_CORE_ENTRY_POINT)( IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ); 有人知道這函式為什麼要多定義 _DllMainCRTStartup 嗎? 因為程式裡其實只用到 InitFunction 不是嗎? 另外 __stdcall __declspec(dllexport) __cdecl 的用途是? 在程式內的宣告使用方式如下: 這樣用法是對的嗎?? 還是我看錯 .H 檔了?? VOID EFIAPI SecStartupPhase2( IN VOID *Context ) { EFI_PEI_CORE_ENTRY_POINT PeiCoreEntryPoint; : (*PeiCoreEntryPoint) (SecCoreData, (EFI_PEI_PPI_DESCRIPTOR *)&mPrivateDispatchTable); : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.213.214
cobrasgo:你先把它展開成.S檔就知道了 07/10 00:27
EdisonX: efi bios kernel ? 07/10 01:14
EdisonX:oh,我看到你第一個問題了,第一個問題在自我修養裡有提到, 07/10 01:27
EdisonX:_DllMainCRTStartup 是在 main 前執行的 function, 07/10 01:28
EdisonX:然後 __stdcall 那段是調用約定,一樣在"程式設計師的自我 07/10 01:30
EdisonX:修養"裡有提到,建議去翻翻. 07/10 01:30
WPC001:感覺是新手剛踏入bios這行, 然後又要負責Win32的driver XD 07/10 08:05
WPC001:但糟糕的是連C都沒學好... 07/10 08:05
R119:那樓上可以推薦一下有那些比較好的參考資料可以找嗎? 07/10 13:50
R119:感恩~ 07/10 13:51
james732:別的也就算了, __stdcall 這些東西請 google 07/10 17:28
UNARYvvv:因為編成 DLL 又沒修改 linker 參數改變 entry point 07/11 04:06
UNARYvvv:所以預設會找 DllMainCRTStartup, 這邊其實沒用到所以加 07/11 04:07
UNARYvvv:個一個空的(直接回傳)的實作 07/11 04:07
UNARYvvv:stdcall cdecl 這些請加上 "calling convention" 去搜尋 07/11 04:12
UNARYvvv:__declspec(dllexport) 這跟 PE 執行檔的 import/export 07/11 04:18
UNARYvvv:有關, 中文書的話我也建議看上面推文提到的 "程式設計師 07/11 04:18
UNARYvvv:的自我修養" 一書 07/11 04:19
UNARYvvv:找資料的時候會找到一堆 Windows 程式設計的資料,因為雖 07/11 04:24
UNARYvvv:你要做 UEFI,但是看 spec 就會發現它的執行檔格式和一些 07/11 04:25
UNARYvvv:機制有利用到現有的 PE 格式,所以多少懂一點是有幫助的 07/11 04:26
UNARYvvv:(上面的 linker 指的是 Microsoft linker) 07/11 04:37
UNARYvvv:還有..這段的機制主要相關的是 PI spec,不是 UEFI spec 07/11 04:39
R119:感謝 UNARYvvv 詳細的回答 讓我學到很多 07/11 08:26