【问题标题】:Does Windows API give one access to the Kernel or is it more complicated than that?Windows API 是否提供对内核的访问权限,还是比这更复杂?
【发布时间】:2013-07-30 16:13:21
【问题描述】:

我了解 Windows API 的功能远远超出操作系统内核的预期功能。我的问题是 Windows API 和内核之间的联系是什么? Windows API 是否包含其中的所有内核函数作为子集?

【问题讨论】:

    标签: windows api winapi kernel


    【解决方案1】:

    没有连接。 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。

    【讨论】:

    • 虽然毫无疑问存在差异,但大部分原生 API 与 winapi 包装器具有 1:1 的对应关系,因此风味(我猜是 VMS 风格)在 winapi 中强烈体现.
    • 我不知道有什么叫做原生API的东西存在,嗯
    【解决方案2】:

    Windows API(又名“Win32”)包含许多东西,包括内核访问。

    http://technet.microsoft.com/en-us/library/cc768129.aspx

    下面的层 Win32 是“Native API”,由“ntdll.dll”介导:

    当 Win32 函数实际调用内核时,它使用“陷阱”。在 Intel x86 PC 上),它使用中断 0x2e。以下是有关其工作原理的一些很好的链接:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 2019-05-27
    • 2015-03-25
    • 2016-12-08
    • 2016-05-24
    • 2010-11-04
    相关资源
    最近更新 更多