引言
在 Windows 中,我们的进程通常都运行在一个叫 Windows 的子系统上。在 Windows 子系统上分为 console、GUI 等子系统。进程如果想要调用系统 API,通常都需要先调用子系统的 API,来做一次转换。简单结构如下:
而这里我们说的 Native App 呢,它是不依赖任何子系统,可以直接通过 ntdll.dll 来调用系统 API 的。简单结构如下:
Native App 的优势
对比普通的 Win32 或者说其他子系统应用,主要有以下几个优势
- 性能好。使用 native 接口,可以绕过标准 Windows 应用程序接口,从而去掉一个软件层,可以加快运行速度。
- 功能强大。标准 Windows Api 无法提供的功能,也可能通过 Native Api 来实现。
- 依赖少。不依赖子系统的 dll,减少很多依赖。
- 灵活性好。此应用不依赖子系统,所以不用等子系统启动后才能运行。
开发 Hello Native
创建项目
VS 中是没有 native 应用的模板的,所以这里我们先创建一个 console app,然后基于 cosnole app 来进行修改部分配置即可。