《windows核心编程》第四章--进程
好长的一章呀~~~!内容基本有五点:1.Win32程序的基本内容;2.CreateProcess函数;3.关于子进程;4.如何终止一个进程;5.用户权限;
以及利用toolhelp编写的类似于任务管理器的一个小工具。
下面是一些笔记:
首先,我们应该知道PC中跑的一个程序,也就是一个进程可以被分为两个部分即内核对象和地址空间,内核对象自不必说,地址空间是程序加载可执行文件和DLL模块以及动态内存分配的地方!
在WIN32中,我们的程序可以被分为两类GUI和CUI程序,尽管他们的界限很模糊,但是他们对应的主函数却不同!
int _tmain(int argc,TCHAR** argv,TCHAR** envp);//控制台程序
int WINAPI _tWinMain(HINSTANCE hIns,HINSTANCE,PTSTR pszCmdLine,int nCmdShow)//窗口程序
编译器通过判定 子系统开关/SUBSYSTEM判断程序了入口函数,两种类型的唯一区别是:当从_tmain函数启动时,系统会为你的程序创建一个控制台,换句话说,当程序启动之后,这两总类型的程序其实差别不大!!
关于windows是如何调用程序的主函数的,这里书中劈头盖脸说了好多,但是我没怎么看懂!!!具体说来有可能是以下这个过程:
首先连接器会查询/SUBSYSTEM开关,根据子系统类型插入一个函数来启动C/C++运行库(这个运行库,在这本书中屡屡出现,但是作者丝毫没有要介绍一下的意思 !!!!)
C/C++运行库的启动函数是这样来选择的:
/subsystem:"console" /entry:"mainCRTStartup" (ANSI)
/subsystem:"console" /entry:"wmainCRTStartuup" (UNICODE)