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:
- kernel32.dll,它由管理內存、進程和線程的函數組成
- user32.dll,它由執行用戶界面的任務(如創建窗口和發送消息)的函數組成
- gdi32.dll,它由繪圖和顯示文本的函數組成
Windows還有幾個其他的dll,含有執行更專門的任務的函數。
- ADVAPI32.dll,保護了有關對象安全、註冊表管理和事件記錄的函數
- COMDLG32.dll,包括了通用對話框(如File Open和File Save)
- LZ32.dll,支持文件解壓縮
在本章中,我們討論如何爲自己的應用程序創建Win32 DLL。而且,本章的末尾還講述了一些使用DLL的高級技術。
1. 創建動態鏈接庫
應用程序把DLL映射至進程的地址空間的方式:
- 隱式的加載時連接
- 顯式的運行時連接
1.1 映射DLL到進程的地址空間
1. 隱式鏈接
當連接一個應用程序時,必須指定要鏈接的一組LIB文件。每個LIB文件包含了DLL文件允許應用程序調用的函數的列表。當操作系統加入exe文件時,系統查看exe文件映像的內容來看要裝入哪些DLL,而後視圖將需要的DLL文件映像映射到進程的地址空間中。
尋找DLL時,系統在下列位置查找文件映像:
- 包含exe映像文件的目錄
- 進程的當前目錄
- Windows系統目錄
- Windows目錄
- path環境變量中的目錄
2. 顯示鏈接
調用LoadLibrary或LoadLibraryEx函數時,DLL文件能被顯示地映射至進程的地址空間。