【WindowsAPI】 Windows SDK 的包含目录结构
【WindowsAPI】 Windows SDK 的包含目录结构
文章目录
- 【WindowsAPI】 Windows SDK 的包含目录结构
- 1. 整体结构概览
- 2. 详细分类说明
- cppwinrt/ - C++/WinRT 头文件
- km/ - Kernel Mode 内核模式
- shared/ - 共享头文件
- ucrt/ - `Universal C Runtime`
- um/ - User Mode 用户模式
- winrt/ - 传统 Windows 运行时 (C++/CX)
- 3. 开发场景对应
- 桌面应用程序:
- 驱动程序开发:
- 现代UWP应用:
- 4. Visual Studio 中的配置
- 5. 版本号说明
- 总结:
1. 整体结构概览
10.0.26100.0/
├── cppwinrt/ # C++/WinRT 现代Windows运行时支持
├── km/ # Kernel Mode 内核模式开发
├── shared/ # 共享头文件 (UM和KM共用)
├── ucrt/ # Universal C Runtime 通用C运行时
├── um/ # User Mode 用户模式开发
└── winrt/ # 传统C++/CX Windows运行时
2. 详细分类说明
cppwinrt/ - C++/WinRT 头文件
// 现代C++ Windows运行时投影
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.UI.Xaml.h>// 使用示例:
winrt::Windows::UI::Xaml::Controls::Button button;
- 作用:基于标准C++17的Windows运行时支持
- 特点:无额外语言扩展,纯标准C++
km/ - Kernel Mode 内核模式
// 驱动程序开发头文件
#include <wdm.h> // 核心驱动头文件
#include <ntddk.h> // NT设备驱动
#include <ntifs.h> // 文件系统驱动// 使用示例:
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath);
-
作用:内核模式驱动开发
-
包含:内核API、驱动框架、硬件访问
shared/ - 共享头文件
// UM和KM都可以使用的头文件
#include <guiddef.h> // GUID定义
#include <specstrings.h> // 注解和字符串处理
#include <sdkddkver.h> // SDK版本定义
-
作用:用户模式和内核模式共享的定义
-
特点:不依赖特定执行模式
ucrt/ - Universal C Runtime
// 标准C库头文件
#include <stdio.h> // 标准IO
#include <stdlib.h> // 内存管理
#include <string.h> // 字符串操作
#include <math.h> // 数学函数
-
作用:通用C运行时库
-
包含:ANSI C标准库、安全函数版本
um/ - User Mode 用户模式
// Windows API 头文件
#include <Windows.h> // 主要Windows头文件
#include <winuser.h> // 用户界面
#include <wingdi.h> # 图形设备接口
#include <winbase.h> # 基础API// 使用示例:
HANDLE hFile = CreateFile("test.txt", GENERIC_READ, ...);
-
作用:用户模式应用程序开发
-
包含:Win32 API、COM、ActiveX、网络等
winrt/ - 传统 Windows 运行时 (C++/CX)
// C++/CX 扩展语法
#include <wrl.h> // Windows运行时库
#include <robuffer.h> # 缓冲区支持// 使用示例(C++/CX语法):
Platform::String^ str = "Hello";
3. 开发场景对应
桌面应用程序:
#include <um/Windows.h> // 主要使用um
#include <ucrt/stdio.h> // 辅助使用ucrt
驱动程序开发:
#include <km/wdm.h> // 主要使用km
#include <shared/guiddef.h> // 共享定义
现代UWP应用:
#include <cppwinrt/winrt/Windows.Foundation.h> // 现代方式
// 或
#include <winrt/wrl.h> // 传统方式
4. Visual Studio 中的配置
在项目属性中:
VC++ Directories → Include Directories
会自动包含这些路径C/C++ → Additional Include Directories
也可以手动添加特定子目录
5. 版本号说明
10.0.26100.0 对应:
- Windows 11 24H2 的 SDK 版本
- 每个Windows版本有对应的SDK版本
总结:
这个目录结构体现了微软清晰的架构分层:
- um/km:执行模式分离
- ucrt:运行时基础
- cppwinrt/winrt:新旧技术栈并存
- shared:跨模式共享
这样的设计让开发者可以根据目标平台和技术栈选择正确的头文件。
