怎么起个标题好呢,就windowsAPI吧

windows程序都不是底层的东西,而是使用微软已经设计好的API啊,是这样吗?
那问题就来了,
windows的底层东西是啥呢?
是机器码吗?还是汇编???
微软又怎么设计这些API呢?
是不是像定义一个C++函数或者一个C++类那样呢? 而在C++是直接在main()里面调用这些我们自己设计的函数或类。
而微软是不是把这些已经设计好的函数或者类包成一个文件,而这个文件名是不是windows.h (所以在windows程序都中使用这个文件#include)
那微软是不是这样发布这个文件的呢?
把这个文件放在windows系统文件里面跟着系统文件发不出来呢?
还有一种可能就是微软把这个文件放在visual studio里面发不出来呢?

上面的问题是多了点,如果你没心情回答就回其中的一个好了,能一一回答那就多谢了图片说明图片说明图片说明图片说明图片说明图片说明图片说明图片说明图片说明图片说明

5个回答

要回答这个问题,就要先说现代操作系统基本结构了。
主要分为三层:应用环境 、 系统环境 、 硬件环境。
编译出来的 windows 程序都是以 PE 结构存在的,程序启动的第一步就是将 可执行文件的 PE镜像 装载到内存里。
windows 程序最终要通过 ntdll.dll 与 操作系统内核进行通讯。
ntdll.dll 提供了相应的调用方法(即API)

从Microsoft 公布的部分 Windows NT 源代码中,大部分内核代码由 C++ 编写,混合少量汇编语言。

1。Windows使用NT内核,NT内核是微软用C语言+汇编编写的,应用层大部分是C++(win32/mfc)编写的,少部分是C#
2。WindowsAPI处理过程很复杂,大致为子系统API->nativeAPI->KiFastSystemCall->int 2e中断或特定指令->内核函数->I/O管理器等->设备驱动程序(过滤驱动、功能驱动、总线驱动)->(硬件抽象层)->硬件。子系统API就是我们熟悉的win32API,在各种dll中,nativeAPI就是原始API,存在ntdll.dll中。
3。头文件在VS中发布。因为应用程序调用头文件中的函数其实是静态调用API(通过PE文件结构中的导入表和导入地址表调用),API在dll中实现,系统工作无须这些头文件。
4。不全在windows.h,比如还有windowsx.h,shellapi.h等等

也有很多的汇编代码,最终不管什么语言写,都会编译成二进制的机器码,那样计算机才能懂

sinat_32105117
sinat_32105117 那微软是怎么设计API的 这些API是用什么语言写的
大约 4 年之前 回复

还是慢慢接触吧,学习方式很重要

C/C++加上汇编,内核基本上是C+汇编

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问