(1)什么是进程?
进程是程序的一个运行实例,它由两个部分组成
- 一个内核对象
- 一个地址空间,其中包括可执行文件和dll 的代码和数据,还包括动态内存分配,比如堆栈什么的
(2)进程实例句柄
加载到进程空间的每一个可执行文件、dll都有一个独一无二的实例句柄HINSTANCE,也就是程序的基地址,使用的 函数是GetModuleHandle,GetModuleHandleEX
(3)进程的的命令行由创建进程时传入,进程还包括一个与它关联的环境块,是一个键值的字符串数组.
(4)CreateProcess函数
(5)终止进程的四种方法
- 主线程的入口点函数返回(这个是强烈推荐的方式)
- 进程的一个线程调用ExitProcess函数(要避免这种方式)
- 其他进程的一个进程调用TerminateProcess函数(要避免这种方式,异步)
- 进程中的所有线程自然死亡(这个基本上不可能发生)
(6)进程终止时候它做什么?
- 终止进程内遗留的任何线程
- 释放所有用户对象和GDI对象,关闭所有内核对象
- 进程的推出代码从STILL_ACTIVE变为传给传给ExitProcess或者TerminateProcess函数的代码
- 进程内核对象的状态变为已触发状态
- 进程内核对象的计数器减1