为 USB 设备开发 Windows 应用程序的概述

您所在的位置:网站首页 usb相关应用 为 USB 设备开发 Windows 应用程序的概述

为 USB 设备开发 Windows 应用程序的概述

2023-05-30 06:25| 来源: 网络整理| 查看: 265

为 USB 设备开发 Windows 应用程序的概述 项目 04/06/2023

摘要:

选择正确编程模型的准则 UWP 应用和桌面应用开发人员体验

重要的 API:

Windows.Devices.Usb WinUSB 函数

本文提供了有关确定应编写 UWP 应用还是 Windows 桌面应用来与 USB 设备通信的指南。

Windows 提供了可用于编写与自定义 USB 设备通信的应用的 API 集。 该 API 执行与 USB 相关的常见任务,例如查找设备和数据传输。

在此上下文中,自定义设备是指 Microsoft 不提供内置类驱动程序的设备。 可以改为安装 WinUSB (Winusb.sys) 作为设备驱动程序。

选择编程模型

如果安装 Winusb.sys,以下是编程模型选项:

USB 设备的 UWP 应用

Windows 8.1提供 Windows.Devices.Usb 命名空间,该命名空间不能在早期版本的 Windows 中使用。 有关其他 Microsoft Store 资源,请参阅通用 Windows 平台文档。

USB 设备的 Windows 桌面应用

在 Windows 8.1 之前,通过 Winusb.sys 通信的应用是使用 WinUSB 函数编写的桌面应用。 在 Windows 8.1 中,API 集已扩展。 有关 Windows 应用开发的详细信息,请参阅 针对 Windows 进行开发。

选择最佳编程模型的策略取决于各种因素。

应用会与内部 USB 设备通信吗?

这些 API 主要是为访问外围设备而设计的。 该 API 还可以访问电脑内部的 USB 设备。 但是,从 UWP 应用访问电脑内部 USB 设备仅限于该电脑的 OEM 在设备元数据中显式声明的特权应用。

应用会与 USB 常时等量终结点通信吗?

如果应用与设备的常时等量终结点之间传入或传出数据,则必须编写一个 Windows 桌面应用。 在 Windows 8.1 中,新的 WinUSB 函数已添加到 API 集中,该集允许桌面应用向常时等量终结点发送数据以及从其接收数据。

应用是“控制面板”类型的应用吗?

UWP 应用是按用户应用,不能在每个应用的范围之外进行更改。 对于这些类型的应用,必须编写 Windows 桌面应用。

UWP 应用是否支持 USB 设备类?

如果设备属于这些设备类之一,则请编写一个 UWP 应用。

name:cdcControl, classId:02 * * name:physical, classId:05 * * name:personalHealthcare, classId:0f 00 00 name:activeSync, classId:ef 01 01 name:palmSync, classId:ef 01 02 name:deviceFirmwareUpdate, classId:fe 01 01 name:irda, classId:fe 02 00 name:measurement, classId:fe 03 * name:vendorSpecific, classId:ff * *

注意

如果设备属于 DeviceFirmwareUpdate 类,则应用必须是特权应用。

如果你的设备不属于上述设备类,请编写 Windows 桌面应用。

驱动程序要求 驱动程序要求 UWP 应用 Windows 桌面应用 函数驱动程序 Microsoft 提供的 Winusb.sys(内核模式驱动程序)。 Microsoft 提供的 Winusb.sys(内核模式驱动程序)。 筛选器驱动程序 如果存在筛选器驱动程序,则访问仅限于特权应用。 该应用由 OEM 在设备元数据中声明为特权应用。 只要筛选器驱动程序不阻止对 Winusb.sys 的访问,它就可以存在于内核模式的设备堆栈中。 代码示例 示例 UWP 应用 Windows 桌面应用 开始使用这些示例 自定义 USB 设备访问示例USB CDC 控件示例固件更新 USB 设备示例 从 Microsoft Visual Studio Ultimate 或 Microsoft Visual Studio Professional 附带的 WinUsb 应用程序模板开始使用如何使用 WinUSB 函数访问 USB 设备中显示的代码示例来扩展模板。 开发工具 开发工具 UWP 应用 Windows 桌面应用 开发人员环境 Microsoft Visual Studio 2013

适用于 Windows 8.1 的 Microsoft Windows 软件开发工具包 (SDK)

使用 Visual Studio (Ultimate 或 Professional) 附带的 WinUSB 应用程序 模板,以及 WDK) 8 或更高版本 (Windows 驱动程序工具包。

对于常时等量传输,Visual Studio 2013 Windows 驱动程序工具包 (WDK) 8.1 或更高版本。

编程语言 C#、VB.NET、C++、JavaScript C/C++ 功能实现 关键场景 UWP 应用 Windows 桌面应用 设备发现 使用 Windows.Devices.Enumeration 命名空间获取 UsbDevice。 使用 SetupAPI 和 WinUsb_Initialize 获取WINUSB_INTERFACE_HANDLE。 USB 控制传输 UsbSetupPacketUsbControlRequestTypeUsbDevice.SendControlInTransferAsyncUsbDevice.SendControlOutTransferAsync WINUSB_SETUP_PACKETWinUsb_ControlTransfer 获取 USB 描述符 UsbDevice.DeviceDescriptorUsbConfiguration.DescriptorsUsbInterface.DescriptorsUsbEndpointDescriptor WinUsb_GetDescriptor 发送 USB 批量传输 UsbBulkInPipeUsbBulkInPipe WinUsb_ReadPipeWinUsb_ReadPipe 发送 USB 中断传输 UsbInterruptInPipeUsbInterruptOutPipe WinUsb_ReadPipeWinUsb_ReadPipe 发送 USB 常时等量传输 不支持。 WinUsb_ReadIsochPipeWinUsb_ReadIsochPipeAsapWinUsb_WriteIsochPipeWinUsb_WriteIsochPipeAsap 关闭设备 UsbDevice.Close WinUsb_Free 文档 文档 UWP 应用 Windows 桌面应用 编程指南 与 USB 设备通信,从开始到完成 如何通过 WinUSB Functions 访问 USB 设备 API 参考 Windows.Devices.Usb WinUSB 函数 相关主题 通用串行总线 (USB)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3