Windows工作原理中心思想
Windows工作原理的中心思想就是“动态链接”概念。Windows自身带有一大套函数,应用程序就是通过调用这些函数来实现它的用户界面和在屏幕上显示文本与图形的。这些函数都是在动态链接库里实现的。这些文件的名称都带有后缀.DLL,或有时带有后缀.EXE。
这些文件通常放在:
WINDOWSSYSTEM子目录
WINNTISYSTEM子目录
WINNTISYSTEM32子目录
Windows程序调用的大部分函数实际上以这3个动态库为主
内核(kernel): 负责操作系统的那些传统工作,包括内存管理、文件输入/输出及任务管理等。
用户(user): 指的是用户界面,负责所有的窗口管理。
GDI: 就是图形设备接口,负责在屏幕或打印机上显示文本与图形。
Windows带有上千个函数以供应用程序调用。每个函数都有一个意义明确的名字,比如CreateWindow。不用猜,这个函数是帮程序建立窗口用的。应用程序可能调用的所有函数必须先要在头文件里声明。
在Windows程序中,调用Windows函数与调用C语言的库函数(如Strlen)区别?
单纯从调用角度上看,没有什么区别。最主要的区别就是C语言库函数的机器代码会直接链接到你的程序代码中,而Windows函数则是放在你的程序之外的DLL里。
当Windows程序运行时,它通过一个叫做“动态链接”(dynamic linking)的进程找到了自己身体里各个dll内部函数的入口地址。每个Windows的EXE文件包含它所要用的各个动态链接库以及库中的函数的引用地址(reference)。被调用的函数需要装入内存(如果还没有在内存中的话)。