Windows进程的启动和退出

来源:互联网 发布:js gzip 解压缩字符串 编辑:程序博客网 时间:2024/04/27 03:35
C/C++运行期启动函数的功能归纳如下:
    1.检索指向新进程的完整命令行的指针;
    2.检索指向新进程的环境变量的指针;
    3.对C/C++运行期的全局变量进行初始化,如果包含了stdlib.h文件,代码就能改变这些变量。
    4.对C运行期内存单元分配函数(malloc and calloc)和其他低层输入/输出例程使用的内存栈进行初始化。
    5.为所有全局和静态C++类对象调用构造函数。

当所有这些初始化操作完成后,C/C++启动函数就调用应用程序的进入点函数,按照进入点函数调用:
    调用wWinMain函数,如下形式:
    GetStartupInfo(&StarupInfo);
    int nMainRetVal  = wWinMain(GetModuleHandle(NULL),NULL,pszCommandLineUnicode,(StarupInfo.dwFlags & STARTF_USESHOWWINDOW)?StarupInfo.wShowWindow:SW_SHOWDEFAULT);
    调用WinMain函数,如下形式:
    GetStartupInfo(&StarupInfo);
    int nMainRetVal  = WinMain(GetModuleHandle(NULL),NULL,pszCommandLineAnsi,(StarupInfo.dwFlags & STARTF_USESHOWWINDOW)?StarupInfo.wShowWindow:SW_SHOWDEFAULT);
    调用wmain函数,如下形式:
    int nMainRetVal = wmain(__argc,__wargv,__wenviron);
    调用main函数,如下形式:
    int nMainRetVal = main(__argc,__argv,__environ);

当进入点函数返回时,启动函数便调用C运行期的exit函数,将返回值(nMainRetVal)传递给它。Exit函数负责下面的操作:
    1.调用_onexit函数的调用而注册的任何函数;
    2.为所有全局的和静态的C++类对象调用析构函数;
    3.调用操作系统的ExitProcess函数,将nMainRetVal传递给它。这使得该操作系统能够撤销进程并设置它的Exit代码。








0 0
原创粉丝点击