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文件能被显示地映射至进程的地址空间。