關於win32應用程式的啟動,我們給出乙個有可執行檔案+動態鏈結庫的例項來分析。
1、作業系統建立程序,分配私有程序空間,理論上32作業系統每個程序有4g的記憶體空間,其中低2g為系統所用,高2g為程序所用。作業系統的載入器把可執行檔案的資料段和**段對映到程序的虛擬記憶體空間,需要注意的是並不是把所有的**和資料都拷貝到記憶體,而只是預先取出部分**和資料拷貝到記憶體。
2、載入器讀入可執行檔案的匯入符號表,這張匯入符號表是程式鏈結過程中產生的,可以通過它查出程式依賴的動態鏈結庫。
3、如果是通過loadlibrary顯示呼叫每個動態鏈結庫,則會查詢對應的動態鏈結庫名,載入器為其確定乙個基位址,如果基位址不滿足該動態鏈結庫,則會做基位址重定位。定位完後,把整個動態鏈結庫對映到程序的虛擬記憶體空間,該動態鏈結庫將使用程序的空間。
4、載入器讀取動態鏈結庫的匯出符號表,比較應用程式的匯入符號是否與之匹配。
5、載入器讀取動態鏈結庫的匯入符號表,查詢對應依賴的動態鏈結庫,如果有的話則執行第3步驟。沒有的話則執行當前動態鏈結庫的初始化函式。
6、作業系統初始化應用程式的全域性變數,也包括全域性物件(通過建構函式)
7、進入應用程式主函式入口執行指令。
Win32應用程式
建立乙個win32應用程式的步驟。1.編寫winmain函式,可以在msdn上查詢並複製。2.設計視窗類 wndclass 3.註冊視窗類。4.建立視窗.5.顯示並更新視窗。6.編寫訊息迴圈.7.編寫視窗過程函式。視窗過程函式的語法,可通過msdn檢視wndclass的ipfnwndproc成員變數...
Win32應用程式入口函式
include int winapi winmain hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int ncmdshow 1.windows.h是開發window應用程式必須要包含 2.hinstance是當前程式例項控制...
Win32應用程式是什麼
win32應用程式是指可以在32位或以上windows系統中執行的程式。區別於dos應用程式,win16應用程式。dos應用程式是以前的dos作業系統下的應dao用程式。win16是以前windows3.0 3.1 3.2作業系統下的應用程式。win32是winnt 2000 xp 2003作業系統...