win32窗口程序的主线程从什么位置开始?
从加载器加载开始?从WinMainCRTStartup开始运行开始?从WinMain运行开始?
这个主线程是用beginThread系统调用建立起来的吗?

解决方案 »

  1.   

    WinMainCRTStartup  ===〉WinMain
    我觉得是这样的。
      

  2.   

    应该是由运行时(CRT)加载的。入口点是WinMainCRTStartup?
      

  3.   

    如果是ANSI程序入口点是WinMainCRTStartup,如果是Unicode程序则是wWinMainCRTStartup
      

  4.   

    这个问题我曾经遇到过,并总结了一下:
    http://www.nk975.com/sswater/myref/index.asp?id=21
      

  5.   

    楼上地,我主要的问题是"主线程是从哪个点上开始执行" ,不是入口点的问题.
    入口点我还是比较明白的,对于窗口程序"如果是ANSI程序入口点是WinMainCRTStartup,如果是Unicode程序则是wWinMainCRTStartup",对于控制台程序,"ANSI程序的入口点是mainCRTStartup,Unicode程序的入口点是wmainCRTStartup"
      

  6.   

    线程能够执行,必须有它可执行的环境,如内存空间(栈要用到,线程本身的代码要分配空间)。所以我觉得主线程的执行点应该是进程中的内存映射表已经配置好并且kernel32,ntdll等必需模块已经映射入进程之后(因为像LoadLibrary这样的载入函数是存在于kernel32中的),从此时起其他模块的载入工作就可以由本线程来完成了。所以入口点应该在kernel32或者ntdll等必需的DLL中。
      

  7.   

    我觉得主线程应该是由CRT调用createthread建立起了的,不知道是不是?
      

  8.   

    那主线程是由操作系统Loader建立起来的了