Windows核心編程讀書筆記-第四章進程

來源:互聯網
上載者:User

標籤:io   ar   os   使用   sp   strong   檔案   資料   on   

1.進程組成

  • 一個核心對象,作業系統用它來管理進程。
  • 一個地址空間,其中包含所有可執行檔或DLL模組的代碼和資料。此外,它還包含動態記憶體分配,比如線程堆棧和堆的分配。

2.一個進程可以有多個線程,所有線程都在進程的地址空間中“同時”執行代碼。每個進程至少要有一個線程來執行進程地址空間包含的代碼。

3.用Microsoft Visual Studio來建立一個應用程式項目時,集開發環境會設定各種連結器開關,使連結器將子系統的正確類型嵌入最終產生的可執行檔。對於CUI程式,這個連結器開關是/SUBSYSTEM:CONSOLE,對於GUI程式,則是/SUBSYSTEM:WINDOWS

4.應用程式類型和相應的進入點函數

應用程式類型 進入點函數(入口) 嵌入可執行檔的啟動函數
處理ANSI字元和字串的GUI應用程式 _tWinMain(WinMain) WinMainCRTStartup
處理Unicode字元和字串的GUI應用程式 _tWinMain(wWinMain) wWinMainCRTStartup
處理ANSI字元和字串的CUI應用程式 _tmain(Main) mainCRTStartup
處理Unicode字元和字串的CUI應用程式 _tmain(Wmain) wmainCRTStartup

5.啟動函數的用途

  • 擷取指向新進程的完整命令列的一個指標
  • 擷取指向新進程的環境變數的一個指標
  • 初始化C/C++運行庫的全域變數。如果包含了StdLib.h,我們的代碼就可以訪問這些變數
  • 初始化C運行庫記憶體配置函數(malloc和calloc)和其他底層I/O常式使用的堆(heap)
  • 調用所有全域和靜態C++類對象的建構函式

6.載入到進程地址空間的每一個可執行檔或者DLL檔案都賦予了一個獨一無二的執行個體控制代碼。可執行檔的執行個體被當作(w)WinMain函數的第一個參數hInstanceExe傳入。(w)WinMain的hInstanceExe參數的實際值是一個記憶體基地址:系統將可執行檔的映像載入到進城地址空間的這個位置。

7.HMODULE和HINSTANCE完全是一回事。

8.

Windows核心編程讀書筆記-第四章進程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.