在Microsoft BUILD会议上,我看到了这个数字。
我想知道Win32的位置是否正确。 Win32 API在现代Windows架构中的作用和地位是什么?
我的Win32 API概念是所有现代Windows体系结构的一种组合。 Win32 API(或DDK)将“Windows内核服务”与其他技术联系起来。
我认为Internet Explorer / .NET / Silverlight都是在 Win32 API上构建。即使是一个花哨的新Metro应用程序,我猜想Win32处于最底层。然而,这个数字违背了我的知识。
如您所见,IE / .NET / SL / Metro与Win32水平放置。
问题:
答案 0 :(得分:6)
图表错了。
虽然最初有其他子系统(例如POSIX)访问ntdll.dll
(“内核服务”网关)而没有经过Win32(kernel32.dll
,user32.dll
),但这些子系统现已全部解散
Windows的所有现代应用程序框架都是基于Win32构建的。不再支持其他子系统。在某些情况下(驱动程序和启动时系统实用程序,如chkdsk)代码是直接针对本机API编写的,但这些情况非常罕见。
我对WinRT不太熟悉,但我认为Win32也适合它(或者它可能使用Win32和直接ntdll.dll
服务的组合)。
接下来,C ++ Metro应用程序仍将加载Win32 DLL,例如kernel32和ntdll。此外,WinRT API调用Win32 DLL - 因此它们不是替代品,而是Win32之上的包装器,API风格。 (历史记录:Windows曾经有一个名为“环境子系统”的功能,可以粗略地描述为API风格.WinRT不是环境子系统 - 它是Win32环境子系统之上的库。)
答案 1 :(得分:0)
该图(大概)是正确的,但仅适用于Windows 8.Windows 8的架构与以前的版本有明显不同。
我相信应用程序可以直接向内核发出请求,但接口大部分都没有记录。设备驱动程序直接使用内核。