windows核心程式設計之程序 1

2021-08-07 17:00:18 字數 1396 閱讀 3313

我對程序的理解,由於程序是不活潑的,活潑的是程序裡面的執行緒。所以,程序相當於乙個容器,只有裡面有東西(執行緒),該容器才有存在的必要,如果裡面的東西用光了(執行緒全部終止執行),瓶子就被**(程序的位址空間就被系統**或重新分配給新的程序)

多工搶占式作業系統:每個程序都有執行緒,每個執行緒都有自己的cpu暫存器和堆疊,作業系統通過迴圈分配給每個執行緒時間片,來維持執行緒的執行,由於速度非常快,造成了一種假象,這些任務都是同時執行的

引導程式怎麼看乙個程式是cui(cmd視窗)程式還是gui(圖形介面)程式

1.看link標誌:如果是cui程式,則器標誌為/subsystem:console,否則為/subsystem:windows

2.如果沒有link標誌,則看你的入口函式的函式名,

如果找到的函式是main和wmain則程式編譯為cui程式,反之則為gui程式

所以,如果建立工程時不小心弄錯了工程型別,只需刪掉link標誌,系統就可根據入口函式動態設定工程型別

系統在啟動程序時並不是簡單的直接進入入口函式(這點在程式退出時也會提到)

c/c++有乙個執行期啟動函式,它主要負責:

1.檢索程式的命令列的指標

2.檢索程式的環境塊的指標

3.對全域性變數進行初始化(非c++物件)

4.對記憶體分配函式使用的堆疊進行初始化

5.為所有全域性和靜態c++物件使用建構函式

當程式正常退出時(由入口點函式返回),呼叫執行期退出函式

1.呼叫由_onexit函式而註冊的任何函式

2.執行所有全域性或者靜態c/c++物件的析構函式

3.呼叫exitprocess函式,將入口點函式的返回值設為它的引數,這樣就使得作業系統撤銷程序,並設定它的exit**

windows核心程式設計之程序 3

獲取系統版本的函式 getversion返回乙個dword型別的值,高子返回ms dos版本號,低字返回windows版本號 本來按照邏輯來說應該是低字的高位元組返回windows的主版本號,低位元組返回此版本號,但是編寫該 程式設計師犯了乙個小錯誤,主版本號和次版本號的位置弄反了,高位元組返回次版...

windows核心程式設計之核心物件

由於不是計算機科班出身,一直對於程序和執行緒沒有深入的了解,現開始看windows核心程式設計,將具體內容整理一下,以加深印象。1 核心物件,即作業系統維護的乙個資料結構,內部維護該物件的各種資料資訊,常見的核心物件有 用於建立程序的程序核心物件,用於建立執行緒的執行緒核心物件,建立檔案的檔案核心物...

windows核心程式設計 程序

程序定義成乙個正在執行的程式的例項,包含兩個部分 1 乙個核心物件,作業系統用它來管理程序。核心物件也是系統儲存程序統計資訊的地方。2 乙個位址空間,其中包含所有可執行 exe檔案 或dll模組的 和資料。此外,還包括動態記憶體分配,比如執行緒堆疊和堆的分配。windows支援兩種型別的應用程式 g...