运行Windows操作系统的计算机中的处理器可以在两种不同模式下工作:用户模式和内核模式。
应用程序运行在用户模式下,而操作系统组件运行在内核模式下。
架构
用户进程:由用户执行的程序/应用程序,如记事本、Chrome或Microsoft Word。
子系统DLL:包含用户进程调用的API函数的DLL。例如,kernel32.dll导出CreateFile Windows API(WinAPI)函数,其他常见的子系统DLL包括ntdll.dll、advapi32.dll和user32.dll。
Ntdll.dll:系统范围的DLL,是用户模式中最低的层级。它是一个特殊的DLL,用于实现从用户模式到内核模式的过渡,通常被称为原生API或NTAPI。
执行内核:即Windows内核,它调用内核模式中的其他驱动程序和模块来完成任务。Windows内核部分存储在文件ntoskrnl.exe中,路径为“C:\Windows\System32”。

流程
下面的图示展示了一个应用程序如何创建文件:
流程从用户应用程序调用CreateFile WinAPI函数开始,该函数存在于kernel32.dll中。kernel32.dll是一个关键的DLL,它向应用程序暴露WinAPI,因此大多数应用程序都会加载它。
接下来,CreateFile调用其等效的NTAPI函数NtCreateFile,该函数通过ntdll.dll提供。
ntdll.dll随后执行一个汇编指令(在x86架构中为sysenter,在x64架构中为syscall),将执行转移到内核模式。
内核的NtCreateFile函数然后会调用内核驱动程序和模块来执行请求的任务。

但是,应用程序可以直接调用系统调用(即NTDLL函数),而不必通过Windows API。Windows API仅作为原生API的封装。
3029

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



