0、进程由两部分构成,进程内核对象和地址空间。
1、进入点函数
可以使用的进入点函数有WinMain, wWinMain, main, wmain,嵌入可执行文件的启动函数分别为WinMainCRTStartup, wWinMainCRTStartup, mainCRTStartup, wmainCRTStartup.
2、进程的实例句柄
HMODULE and HINSTANCE是完全相同的对象,之所以存在两个数据类型,是因为16位的Windows中,二者用于标识不同的东西。
GetModuleFileName, GetModuleHandle
3、每个进程都有一个与它相关的环境块,环境块是进程的地址空间中分配的一个内存块。
4、CreateProcess函数详解。
VOID BaseProcessStart(PPROCESS_START_ROUTINE pfnStartAddr)
...{
__try
...{
ExitThread((pfnStartAddr)());
}
__except(UnhandledExceptionFilter(GetExceptionInformation()))
...{
ExitProcess(GetExceptionCode());
}
//NOTE: We never get here.
}5、进程在何种情况下终止运行:
- 主线程的进入点函数返回
- 进程中的一个线程调用ExitProcess函数
- 另一个进程中的线程调用TerminateProcess函数
6、进程终止运行时出现的情况:
- 进程中剩余的所有线程全部终止运行
- 进程指定的所有用户对象和GDI对象均被释放,所有内核对象均被关闭 (...)
- 进程的退出代码将从STILL_ACTIVE改为传递给ExistProcess or TerminateProcess的代码
- 进程内核对象的状态变成收到通知的状态
- 进程内核对象的使用计数递减1
本文详细解析了进程的基本构成,包括进程的实例句柄、环境块等概念,并深入探讨了进程的创建与终止机制,如CreateProcess函数的工作原理及进程结束的各种情况。
325

被折叠的 条评论
为什么被折叠?



