首页 > 编程知识 正文

微软 编程(windows核心编程mobi)

时间:2023-05-04 15:41:35 阅读:1499 作者:875

本文相关知识点来自《Windows核心编程(第5版)》,感兴趣的可以看一下(写书翻译不容易,支持正版(*-*))。

漂亮的

什么是进程

通常将进程定义为运行程序的实例,它由以下两部分组成:

操作系统用来管理进程的内核对象。内核也是操作系统保存进程统计的地方。

包含所有可执行文件或DLL模块的代码和数据的地址空间。此外,它还包括动态内存分配,如线程堆栈和堆的分配。

要做任何事情,进程必须让线程在其上下文中运行。这个线程负责执行包含在进程地址空间中的代码。当系统创建一个进程时,它会自动为该进程创建第一个线程,称为主线程。

00-1010调用CreateProcess函数创建一个进程。

BOOL WINAPI CreateProcess(

_ In _ opt _ LPCTSTR LPapplication name,

_Inout_opt_ LPTSTR lpCommandLine,

_ In _ opt _ LPSECURITy _ ATTRIBUTES LPprocessAttributes,

_ In _ opt _ LPSECURITy _ ATTRIBUTES LPthreadATTRIBUTES,

_In_ BOOL bInheritHandles,

_ In _ DWORD dwCreationFlags,

_In_opt_ LPVOID lpEnvironment,

_ In _ opt _ LPCTSTR lpCurrentDirectory,

_In_ LPSTARTUPINFO lpStartupInfo,

_ Out _ LPPROCESS _ INFORMATION lpprocessinginformation

);当线程调用CreateProcess时,系统将创建一个初始使用计数为1的进程内核对象。进程内核对象不是进程本身,而是操作系统用来管理进程的小数据结构。

系统为新进程创建一个虚拟地址空间,并将可执行文件(以及所有必要的DLL)的代码和数据加载到进程的地址空间中。

系统为新进程的主线程创建一个线程内核对象,其初始使用次数为1。像进程内核对象一样,线程内核对象是操作系统用来管理这个线程的一个小数据结构。

00-1010流程可以通过四种方式终止:

主线程的入口点函数返回(强烈推荐的方法)

进程中的一个线程调用ExitProcess函数(避免这种方式)

另一个进程中的线程调用TerminateProcess函数(避免这种方式)

进程中的所有线程都“自然死亡”(这几乎不会发生)

当进程终止时,系统将依次执行以下操作:

终止进程中任何剩余的线程。

释放进程分配的所有用户对象和GDI对象,关闭所有内核对象。

进程的退出代码从静止_活动变为传递给ExitProcess或TerminateProcess函数的代码。

进程内核对象的状态被触发。

进程内核对象的使用计数减1。

知识的积累总是枯燥的,每天接触以前不知道的知识就是进步!('')

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。