自定义设备的设计注意事项

本主题介绍有助于确定设备是否需要自定义驱动程序的设计注意事项。

确定要实现的驱动程序类型

下表介绍何时应为设备开发自定义驱动程序并使用设备访问 API 与之通信,以及何时应改用 Windows 提供的设备堆栈。

要支持… 实现
已知设备,包括:
  • 传感器
  • 位置
  • 网络摄像头
  • 邻近帮助
  • 短信服务 (SMS)
  • 移动宽带

对于许多类型的已知设备,你不需要自定义驱动程序,因为 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 运行时 API、可移植设备组件对象模型 (COM) API 或 WPD 自动化来访问设备。 应用不需要使用设备访问 API。
一个没有 Windows 提供的类扩展或类驱动程序的设备。
在这种情况下,请查阅适用于专用设备的内部设备 UWP 设备应用,以确定是否必须使用设备访问 API 来实现自定义驱动程序访问。

安全注意事项

以下文章提供有关编写安全 C++ 代码的指导:

  • C++ 安全性最佳做法
  • [适用于应用程序的模式和做法安全指南]/previous-versions/msp-n-p/ff650760(v=pandp.10))

自定义驱动程序访问示例内部设备的 UWP 设备应用硬件开发人员中心