Windows API 文件结构与功能分类详解
文章目录
- Windows API 文件结构与功能分类详解
- 一、总体目录结构回顾
- 二、按功能模块分类详解
- 🖼️ 1. 图形界面与窗口系统(UI / Input)
- 🌐 2. 通信与网络(Networking / IPC)
- 🔌 3. 硬件与外设(USB / HID / 设备枚举)
- 💾 4. 文件系统与存储
- ⚙️ 5. 系统与进程管理
- 🎮 6. 图形、音频与多媒体
- 🔒 7. 安全与身份验证
- ⚡ 8. 系统设备与电源管理
- ☁️ 9. WinRT / 现代 API 层
- 三、总结与建议
Windows API 文件结构与功能分类详解
路径示例:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0
Windows SDK 的 Include
文件夹是整个 Win32 / WinRT API 的“头文件地图”。
这些 API 按目录分层(um/
, shared/
, ucrt/
, winrt/
, cppwinrt/
),又在内部按功能模块划分成不同的头文件。
本文从两个维度讲解:
- 各目录的结构定位(总览)
- 按功能划分:UI、通信、USB、系统、图形、音频、安全等模块在哪些头文件中定义
一、总体目录结构回顾
目录 | 主要内容 | 常见用途 |
---|---|---|
ucrt/ | 标准 C 库头文件 | stdio.h , string.h , math.h |
shared/ | 通用结构体、类型定义 | windef.h , guiddef.h , winerror.h |
um/ | 用户模式 API(Win32) | windows.h , winuser.h , winsock2.h , fileapi.h |
cppwinrt/ | C++/WinRT 投影 | 现代 C++ 开发 WinRT 应用 |
winrt/ | 传统 WinRT 接口定义 | 旧版系统接口兼容支持 |
二、按功能模块分类详解
🖼️ 1. 图形界面与窗口系统(UI / Input)
这些头文件定义了窗口、消息、输入事件、GDI 绘图、窗口控件等基础界面功能。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
基本窗口系统 | windows.h , winuser.h | um | 创建窗口、消息循环、键鼠事件 |
图形绘制 (GDI) | wingdi.h , gdiplus.h | um | 位图、字体、颜色、打印支持 |
菜单和对话框 | commdlg.h , shellapi.h | um | 打开文件、消息框、图标等 |
控件与UI框架 | commctrl.h , uxtheme.h | um | 常用控件(按钮、列表、进度条) |
高级UI(WinRT/WinUI) | cppwinrt/winrt/Windows.UI.*.h | cppwinrt | 现代 WinUI、UWP 控件体系 |
现代 C++ UI 推荐使用 WinUI 3 或 DirectComposition,传统桌面则依然基于
user32.dll
+gdi32.dll
。
🌐 2. 通信与网络(Networking / IPC)
Windows SDK 为网络通信、进程间通信(IPC)和远程调用提供了完整的支持。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
Socket 网络通信 | winsock2.h , ws2tcpip.h | um | TCP/UDP、IPv4/IPv6 支持 |
HTTP / WinInet | wininet.h , winhttp.h | um | HTTP 客户端 / 代理请求 |
命名管道 | namedpipeapi.h | um | 本地进程通信 |
共享内存 / 文件映射 | memoryapi.h | um | 进程间共享数据 |
RPC / DCOM | rpc.h , objidl.h , combaseapi.h | um | 远程过程调用 / COM 接口 |
WebSocket (WinRT) | cppwinrt/winrt/Windows.Networking.Sockets.h | cppwinrt | 现代异步通信接口 |
WinSock 仍然是底层通信首选,而 WinRT Networking 适合 UWP / App SDK 开发。
🔌 3. 硬件与外设(USB / HID / 设备枚举)
涉及 USB、蓝牙、串口、设备接口等的头文件主要分布在 um/
目录。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
通用设备接口 | setupapi.h | um | 设备安装、枚举、属性获取 |
USB 设备访问 | usb.h , usbspec.h , usbioctl.h | um | 定义 USB 协议结构和 IOCTL 控制码 |
HID 输入设备 | hidclass.h , hidsdi.h | um | 鼠标、键盘、手柄 |
串口通信 | winbase.h , commapi.h , winnt.h | um | CreateFile("COMx") 操作串口 |
蓝牙接口 | bluetoothapis.h , bthdef.h | um | 蓝牙设备枚举与通信 |
传感器与位置 | sensorsapi.h , locationapi.h | um | 获取加速度、GPS、方向传感器数据 |
对 USB 设备的直接访问一般通过 WinUSB 或 HID 层完成,而 SetupAPI 负责设备发现。
💾 4. 文件系统与存储
Windows 的文件操作接口非常丰富,从基础 I/O 到 Shell 集成都在 um/
中定义。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
基础文件操作 | fileapi.h , winbase.h | um | 打开、读写、移动、删除文件 |
目录 / 路径操作 | shlwapi.h , pathcch.h | um | 路径拼接、文件名操作 |
文件属性 / 时间 | winnt.h , sysinfoapi.h | um | 时间戳、权限 |
压缩存储 | cabinet.h , compressapi.h | um | 系统压缩 API |
注册表访问 | winreg.h | um | 读写系统注册表 |
文件监控 | winbase.h | um | 文件系统事件通知 |
Shell 文件系统集成 | shobjidl.h , shellapi.h | um | 桌面快捷方式、文件对话框 |
⚙️ 5. 系统与进程管理
这一部分是 Win32 API 的“核心系统”部分,几乎所有程序都依赖。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
进程 / 线程控制 | processthreadsapi.h , synchapi.h | um | 启动进程、线程同步 |
内存管理 | memoryapi.h , heapapi.h | um | 虚拟内存、堆操作 |
时间 / 计时 | sysinfoapi.h , profileapi.h | um | 系统时间、性能计数器 |
服务管理 | winsvc.h | um | Windows 服务控制 |
环境变量 / 系统信息 | processenv.h , sysinfoapi.h | um | 环境变量、系统版本 |
错误码 / 状态码 | winerror.h | shared | HRESULT 定义与错误处理 |
🎮 6. 图形、音频与多媒体
Windows 在图形和音频接口上分为传统 GDI、多媒体 API、DirectX、Media Foundation、XAudio2 等多层。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
传统图形 (GDI) | wingdi.h | um | 位图、字体、绘图 |
现代图形 (DirectX) | d3d11.h , d2d1.h , dxgi.h | um | GPU 图形渲染 |
音频播放 | mmeapi.h , xaudio2.h , mmdeviceapi.h | um | 音频输入输出、XAudio2 |
多媒体框架 | mfapi.h , mfidl.h , mfreadwrite.h | um | Media Foundation 视频音频处理 |
图像编解码 | wincodec.h | um | WIC 图像加载、保存 |
游戏控制器 | xinput.h , dinput.h | um | 手柄输入支持 |
🔒 7. 安全与身份验证
涉及访问控制、加密、权限等。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
用户权限与令牌 | securitybaseapi.h , winnt.h | um | 访问控制、令牌操作 |
ACL / SID 管理 | aclapi.h , accctrl.h | um | 访问控制列表管理 |
加密与证书 | wincrypt.h , bcrypt.h , ncrypt.h | um | CryptoAPI / CNG 接口 |
Windows 凭据 | wincred.h | um | Credential Manager |
安全日志 | winevt.h | um | 事件日志记录与查询 |
⚡ 8. 系统设备与电源管理
管理电源、设备、电池、睡眠等系统状态。
功能 | 常用头文件 | 所属目录 | 说明 |
---|---|---|---|
电源管理 | powrprof.h | um | 电源方案、休眠 |
电池信息 | batclass.h | um | 电池状态查询 |
PnP 设备管理 | cfgmgr32.h | um | 设备管理器接口 |
驱动交互 | winioctl.h | um | 设备 I/O 控制码定义 |
☁️ 9. WinRT / 现代 API 层
这些是现代 Windows 应用(UWP / WinUI 3)的 API,封装了更高级别的功能。
功能 | 命名空间 / 头文件 | 所属目录 | 示例功能 |
---|---|---|---|
应用生命周期 | winrt/Windows.ApplicationModel.*.h | cppwinrt | 启动、后台任务 |
UI 控件 | winrt/Windows.UI.Xaml.*.h | cppwinrt | 界面布局、绑定 |
文件系统 | winrt/Windows.Storage.*.h | cppwinrt | 访问沙盒文件系统 |
通信 | winrt/Windows.Networking.*.h | cppwinrt | Socket、HTTP |
媒体 | winrt/Windows.Media.*.h | cppwinrt | 播放、录制、捕获 |
设备访问 | winrt/Windows.Devices.*.h | cppwinrt | 蓝牙、USB、传感器 |
三、总结与建议
开发方向 | 重点目录 | 常用头文件 | 备注 |
---|---|---|---|
桌面应用 (Win32) | um/ + shared/ | windows.h , winuser.h , wingdi.h | 传统 API |
系统工具 / 服务 | um/ | processthreadsapi.h , winsvc.h | 服务与后台任务 |
设备控制 / USB 通信 | um/ | setupapi.h , usbioctl.h , hidclass.h | 需驱动层接口 |
网络与通信 | um/ | winsock2.h , winhttp.h , ws2tcpip.h | Socket 通信 |
现代应用 / UI | cppwinrt/ | winrt/Windows.UI.*.h | WinUI、XAML |
图形 / 游戏开发 | um/ | d3d11.h , dinput.h , xinput.h | DirectX 系列 |
💡 建议阅读路径:
- 想写 Win32 桌面程序 → 从
windows.h
→winuser.h
→wingdi.h
- 想写 USB/硬件通信 → 看
setupapi.h
,usbioctl.h
,winioctl.h
- 想写现代 C++ App → 使用
cppwinrt/
,查阅winrt::Windows.*
命名空间- 想玩底层系统调用 → 阅读
winnt.h
、processthreadsapi.h
总结一句话:
Windows SDK 的Include
目录不仅是系统 API 的“地图”,更是整个 Windows 平台编程模型的分层体现。从 C 标准库(ucrt
),到 Win32 API(um
),再到现代 WinRT(cppwinrt
),每一层都服务于不同代际的应用开发需求。