一般Win32程序入口点为 WinMainCRTStartup()
extern "C" void WinMainCRTStartup()
{
int mainret;
// 获取Win32的版本
int _ver = GetVersion();
// 创建了一个属于该进程的私有堆
if ( !_heap_init(0) )
fast_error_exit(_RT_HEAPINIT);
__try {
// 初始化低级IO
_ioinit();
// 获取命令行缓冲区指针
_acmdln = (char *)GetCommandLineA();
// 获取环境变量指针
_aenvptr = (char *)__crtGetEnvironmentStringsA();
// 设置argv参数
_setargv();
// 设置环境变量
_setenvp();
// 初始化C数据
_cinit();
__initenv = _environ;
// 调用WinMain函数
mainret =WinMain(__argc, __argv, _environ);
exit(mainret);
}
__except ( _XcptFilter(GetExceptionCode(), GetExceptionInformation()) )
{
_exit( GetExceptionCode() );
}
}
此函数可覆盖,从而使程序入口点指向自己的入口函数
本文详细介绍了Win32程序的启动过程,从WinMainCRTStartup()函数入手,逐步解析了程序如何初始化低级I/O、获取命令行参数、环境变量及如何调用WinMain函数等关键步骤。
4576

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



