一、一个进程的生与死
一个应用程序分为CUI(控制台程序)和GUI (控制台程序)
1、调用C/C++启动函数(mainCRTStartup or WinMainCRTStartup)
2、初始化C/C++运行库的全局变量
3、初始化 C 运行库的内存分配函数 malloc 和calloc 和其他I/O例程
4、初始化所有全局和静态变量
5、调用入口点函数(main or Winmain)
6、入口点返回
7、调用_onexit 函数
8、销毁所有全局和静态变量
9、生成内存泄露报告
10、调用ExitProcess
二、进程
加载到进程中的每一个可执行文件或者DLL文件都被赋予了一个独一无二的实例句柄。
这个句柄就是文件在进程地址空间的位置(基地址)
GetModuleHandle 就可以返回此基地址,如果传入NULL 则返回主调可执行文件的基地址.
mian 或者 winmain 第一个参数就是主调可执行文件的基地址。
进程的命令行 GetCommandLine()
进程的环境变量 GetEnvironmentStrings
进程可以强迫一个线程在一个CPU的子集中运行
进程需要告诉系统怎样处理错误 SetErrorMode
进程的当前驱动器和目录 GetCurrentDirectory()
进程在每个驱动器上都有一个默认目录 它在进程的环境变量中
CreateProcess 会创建一个进程和一个它的子线程
提升进程权限:自动(给进程配置权限资源RT_MANIFEST)和手动(ShellExecuteEx函数)