Windows内核之进程基本含义以及进程的创建

进程

1 进程的含义:

1.1   一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。

1.2   另一个是地址空间,它包含所有可执行模块或DL L 模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。

2 操作系统启动应用程序的步骤

2.1 调用C/c++运行时的启动函数

Windows内核之进程基本含义以及进程的创建_第1张图片

         启动函数总共4种,WinMainCRTStartup,wWinMainCRTStartup,mainCRTStartup,wmainCRTStartup。

         启动函数完成如下任务:

<1>检索指向新进程的完整命令行的指针

<2>检索指向新进程的环境变量的指针

<3>对C/ C + +运行期的全局变量进行初始化。如果包含了S t d L i b . h 文件,代码就能访问这些变量

<4>对C运行期内存单元分配函数(m a l l o c 和c a l l o c )和其他低层输入/输出例程使用的内存栈进行初始化。

<5>为所有全局和静态C+ +类对象调用构造函数。

<6>调用入口点函数

如:int nMainRetVal = wmain(__argc, __wargv, _wenviron); 

<7>当进入点函数返回时,启动函数便调用C 运行期的ex i t 函数,将返回值(nMainRetVal )传递给它。

<8>调用由_onexit函数的调用而注册的任何函数

<9>为所有全局的和静态的C++类对象调用析构函数

<10>调用操作系统的ExitProcess函数,将nMainRetVal传递给它。这使得该操作系统能够撤消进程并设置它的e x i t 代码

 

3 进程的实例句柄

3.1 进程的当前实例句柄

         加载到进程地址空间的每个exe或者dll文件都会被赋予一个独一无二的句柄。

获取加载的模块(exe,dll)的方法:

GetModuleFileName(HMOUDLEhModule,LPTSTR lpFileName,DWROD nSize);

当hModule的值为NULL 的时候,会返回当前调用模块的全部路径名字。

3.2 进程的前一个实例句柄

         C++代码总是将NULL赋值给W

你可能感兴趣的:(操作系统,windows编程,Windows内核,进程,进程创建)