CreateProcess 流程

Stage 1: opening the image to be executed


1. 開啟 image file,看看它要由哪個 subsystem 處理 (Win32 or POSIX or OS/2)
2. 建立一個 section object 對應到該 image file


Stage 2: creating the windows executive process object


呼叫 NtCreateProcess 來建立 windows executive process object,這個步驟會設定 EPROCESS 及 KPROCESS block,產生 process address space…等


Stage 3: creating the initial thread and its stack and context


產生 ETHREAD block,並分配 stack


Stage 4: notifying the windows subsystem about the new process


由於 process 由各 subsystem 管理,這個步驗會將 process exception port 設成 subsystem 的 general function port,如此 subsystem 就可以知道 process exception。這邊還會分別產生 subsystem 的 process block 及 thread block?


Stage 5: starting execution of the initial thread


這個時候 process environment 已經好了,process/thread 的資源也已建立,subsystem 也知道這個 new process。此時原本呼叫 CreateProcess 的 thread 恢復執行


Stage 6: performing process initialization in the context of the new process


當 context switch 到 new process 時,process (thread) 就會開始執行,它就會去檢查是否已有 prefetch 過、載入相關 DLL…等的工作


留言

熱門文章