Windows进程相关数据结构简介
Linux上每一个进程都有一个进程控制块,与进程或线程有关的信息大都存储在这个数据结构中。而windows则有所不同。首先windows的进程和线程各有不同的数据结构来描述,从概念上把进程和线程分离开。其次,windows又把本可集中存储的进程数据结构也拆分成好几个对象,有的在系统空间里,有的在用户空间里。
系统空间里与进程有关的数据结构有:
1. EPROCESS:即struct_EPROCESS,表示windows里的一个进程。E表示executive,执行体的意思。
2. KPROCESS:是EPROCESS内的一个部分,也就是常说的PCB。
3. WIN32PROCESS:用户空间有个“windows子系统”的服务进程csrss。这个服务进程为windows中的每个应用进程都维持着一个数据结构,其中包含了一些与窗口和图形界面的信息。而有关窗口和图形界面的操作,原来也是由csrss在客户进程的请求下完成的。后来为了提高效率,把这部分功能移到了内核中,与此相应的数据结构也移动到了内核中,就成了现在的WIN32PROCESS。
用户空间里与进程有关的数据结构:
1. 如上所述,由于将WIN32PROCESS移进内核空间以后,csrss仍然需要为每个进程保留一些信息。所以csrss内部仍有一些与进程有关的数据结构。
2. PEB:Process Environment Block 即进程环境块。其中记录着进程的运行参数,映像装入地址等等信息。PEB在用户空间中的位置是固定的,总是在0x7ffdf000。
以上就是windows中与进程相关的数据结构。可以看出,与我所研究的DLL加载信息应该存储在PEB中。