Windows API筆記(十)動態鏈接庫

Windows API筆記(一)內核對象
Windows API筆記(二)進程和進程間通信、進程邊界
Windows API筆記(三)線程和線程同步、線程局部存儲
Windows API筆記(三)線程同步
Windows API筆記(四)win32內存結構
Windows API筆記(五)虛擬內存
Windows API筆記(六)內存映射文件
Windows API筆記(七)堆
Windows API筆記(八)文件系統
Windows API筆記(九)窗口消息
Windows API筆記(十)動態鏈接庫
Windows API筆記(十一)設備I/O



3個最重要的DLL:

  1. kernel32.dll,它由管理內存、進程和線程的函數組成
  2. user32.dll,它由執行用戶界面的任務(如創建窗口和發送消息)的函數組成
  3. gdi32.dll,它由繪圖和顯示文本的函數組成

Windows還有幾個其他的dll,含有執行更專門的任務的函數。

  1. ADVAPI32.dll,保護了有關對象安全、註冊表管理和事件記錄的函數
  2. COMDLG32.dll,包括了通用對話框(如File Open和File Save)
  3. LZ32.dll,支持文件解壓縮

在本章中,我們討論如何爲自己的應用程序創建Win32 DLL。而且,本章的末尾還講述了一些使用DLL的高級技術。

1. 創建動態鏈接庫

應用程序把DLL映射至進程的地址空間的方式:

  1. 隱式的加載時連接
  2. 顯式的運行時連接

1.1 映射DLL到進程的地址空間

1. 隱式鏈接

當連接一個應用程序時,必須指定要鏈接的一組LIB文件。每個LIB文件包含了DLL文件允許應用程序調用的函數的列表。當操作系統加入exe文件時,系統查看exe文件映像的內容來看要裝入哪些DLL,而後視圖將需要的DLL文件映像映射到進程的地址空間中。

尋找DLL時,系統在下列位置查找文件映像:

  1. 包含exe映像文件的目錄
  2. 進程的當前目錄
  3. Windows系統目錄
  4. Windows目錄
  5. path環境變量中的目錄

2. 顯示鏈接

調用LoadLibrary或LoadLibraryEx函數時,DLL文件能被顯示地映射至進程的地址空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章