本主题介绍有助于确定设备是否需要自定义驱动程序的设计注意事项。
确定要实现的驱动程序类型
下表介绍了何时应为设备开发自定义驱动程序并使用设备访问 API 与之通信,以及何时应改用 Windows 提供的设备堆栈。
支持 | 实现 |
---|---|
已知设备,包括:
|
对于许多类型的已知设备,你不需要自定义驱动程序,因为 Windows 包括用于管理驱动程序与 Windows 之间的通信的 API 和类扩展设备驱动程序接口(DDI)。 传感器、位置和 Windows 可移植设备(WPD)设备是支持此设备类的一些示例。 如果你构建了使用其中一个 Windows 提供的 DDI 发送和接收数据和命令的驱动程序,则无需 Windows 应用商店应用使用设备访问 API 来代理访问或将输入/输出(I/O)控制代码直接发送到驱动程序。 当 Windows 应用商店应用通过其设备类的 Windows 运行时 API 请求访问已知设备时,Windows 8 将基于设备类型处理设备访问。 应用将始终可以访问某些已知类型的设备(如加速计),这些设备不会透露任何个人身份信息。 在应用可以访问这些设备之前,必须在应用程序清单中声明其他类型的已知设备。 用户必须授予应用访问显示敏感信息的设备(如位置、网络摄像头和麦克风设备)的权限,或者可能会花费用户资金,例如移动宽带设备。 |
实现 MTP 服务的 WPD 设备。 |
可以使用 MTP 类驱动程序,也可以使用 WPD DDI 生成驱动程序。 Windows 8 为 MTP 设备服务提供支持。应用可以使用 Windows.Devices.Portable Windows 运行时 API、可移植设备组件对象模型 (COM) API 或 WPD 自动化来访问设备。 应用不需要使用设备访问 API。 |
没有 Windows 提供的类扩展或类驱动程序的设备。 |
在这种情况下,请参阅适用于内部设备的 UWP 设备应用 专用设备,以确定是否必须使用设备访问 API 实现自定义驱动程序访问。 |
安全注意事项
以下文章提供有关编写安全C++代码的指导:
- C++ 的安全最佳做法
- [适用于应用程序的模式 & 做法安全指南]/previous-versions/msp-n-p/ff650760(v=pandp.10))