进程的入口函数、环境变量和当前目录

《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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值