reactos作業系統實現 7

2021-08-23 11:25:03 字數 1100 閱讀 6587

l

freeloader

記憶體布局

0000:0000 - 0000:0fff:

中斷向量表和

bios

資料0000:1000 - 0000:6fff:

實模式的棧記憶體

0000:7000 - 0000:7fff:

命令列(multiboot)

0000:8000 - ***x:***x: freeloader

程式和資料

***x:***x - 7000:7fff:

隨機分配的堆記憶體

7000:8000 - 7000:ffff:

保護模式的棧記憶體

8000:0000 - 8000:ffff:

檔案系統讀取的記憶體緩衝區

9000:0000 - 9000:ffff: bios

中斷13h

讀取資料緩衝區

a000:0000 - ffff:ffff: 保留l

ntoskrnl.exe

和hal.dll

記憶體布局

freeldr.sys

會把ntoskrnl.exe

載入到記憶體實體地址

8m開始位置,它的虛擬位址是

0xc0000000

。接著會載入分析

ntoskrnl.exe

檔案,從

ntoskrnl.exe

檔案裡分析它,並找到所有需要載入的動態連線庫,把這些庫全部載入到後面,也就是跟著

ntoskrnl.exe

ntoskrnl.exe

之前,已經進入保護模式狀態,否則是訪問不了大於1m的記憶體空間的。載入

ntoskrnl.exe

和它所依賴的

dll檔案之後,就把很多引數傳送給

ntoskrnl.exe

,跳轉到

ntoskrnl.exe

裡面執行,這樣就進入作業系統核心執行了。

ntoskrnl.exe

所依賴的dll如下圖所示:

reactos作業系統實現 178

sendmessagew函式主要用來向視窗傳送訊息。下面就是它的實現 001 lresult winapi 002 sendmessagew hwnd wnd,003 uint msg,004 wparam wparam,005 lparam lparam 006 028 029 填寫訊息結構。03...

reactos作業系統實現 187

隨著全球化的發展,開發軟體都是面向多語言的環境。目前大多數程式都是採用不同字型來顯示不同語言的辦法,那麼有沒有一種更好的辦法,一種字型就可以解決全球語言的顯示呢?答案肯定的,它就是採用邏輯字型ms shell dlg和ms shell dlg2。比如開發應用程式時,就看到在資源裡可以設定ms she...

reactos作業系統實現 193

selectobject函式是將物件選定到指定的裝置場境中。具體實現 如下 001 hgdiobj 002 winapi 003 selectobject hdc hdc,004 hgdiobj hgdiobj 005 016 獲取選擇dc的物件正確的控制代碼。017 hgdiobj gdifixu...