我知道 Windows API 的功能远远超过 OS 内核的预期功能。我的问题是 Windows API 和内核之间的联系是什么?Windows API 是否包含其中的所有内核函数作为子集?
2 回答
Windows API(又名“Win32”)包含许多东西,包括内核访问。
http://technet.microsoft.com/en-us/library/cc768129.aspx
Win32下面的层是“Native API”,由“ntdll.dll”介导:
当 Win32 函数实际调用内核时,它使用“陷阱”。在 Intel x86 PC 上),它使用中断 0x2e。以下是有关其工作原理的一些很好的链接:
没有联系。winapi 是原生操作系统之上的一层。它的设计类似于 Windows 版本 3 的 api,旨在使移植程序变得容易。它是三个 api 层之一,OS/2 和 Posix,其他两个。但是由于没有人使用它们而被删除,winapi以压倒性优势获胜。最初的名称是“win32”,与 16 位版本区别开来,但是当 64 位 Windows 出现时,这引起了太多的混乱,所以今天大家都称它为“winapi”。
原生操作系统看起来很不一样,它很像 VMS。这不是巧合,他们有同一个设计师。大卫卡特勒,他曾在 DEC 内爆之前为它工作。当 DEC 抱怨时,钱转手了。
本机 api 未记录。有意让微软在操作系统上进行创新,同时仍然允许旧程序运行。这不是一个保守的秘密,它已经过大量的逆向工程。其中一些确实得到了记录,例如名称以“Nt”和“Rtl”开头的函数。像 NtCreateFile 和 RtlFillMemory。Rtl 函数是将 winapi 与本机 api 结合起来的粘合剂的一部分。当您编写设备驱动程序时,您还将更多地接触本机 api。