需要为USB外围设备编写驱动程序吗?

2023-12-29

我正在设计一个 USB 外设,它偶尔会连接到 Windows PC,并在每个方向上传输几 KB 的数据。将有一个自定义 PC 应用程序使用专有协议(即 USB 有效负载)来控制数据传输。

我在下面的链接中看到微软描述的how为 USB 设备编写驱动程序。但我需要一个吗?

为 USB 设备开发 Windows 客户端驱动程序 https://msdn.microsoft.com/en-us/library/windows/hardware/hh406260(v=vs.85).aspx

PC 应用程序是我们想要知道如何与设备通信的唯一应用程序,因此从应用程序共享的角度来看,不需要驱动程序。

我可以直接将自定义协议烘焙到应用程序中,让应用程序与设备对话“原始 USB”,并且无需单独的驱动程序吗?


“原始 USB”,不,您不能通过应用程序执行此操作。

但因为您也控制该设备,所以您可以将其显示为 Windows 提供的设备驱动程序的设备类之一,该设备驱动程序足够通用,可以执行您想要的任何操作。

这些设备类别是 HID(人机接口设备)和“WinUSB”。其中,HID 是跨平台的,但功能更有限,WinUSB 允许高性能数据传输以及中断端点。

有关设置设备的字符串描述符以便 Windows 自动将其绑定到 WinUSB 驱动程序的说明如下:on MSDN https://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx

WinUSB 设备是通用串行总线 (USB) 设备,其固件定义了某些 Microsoft 操作系统 (OS) 功能描述符,这些描述符将兼容 ID 报告为"WINUSB".

WinUSB 设备的目的是使 Windows 能够加载 Winusb.sys 作为设备的功能驱动程序,而无需自定义 INF 文件。对于 WinUSB 设备,您无需为设备分发 INF 文件,这使得最终用户的驱动程序安装过程变得简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要为USB外围设备编写驱动程序吗? 的相关文章

  • 绘制自定义 Windows 控件时出现问题

    我正在尝试使用 Windows 中的 uxTheme 库绘制自己的自定义控件 但我无法弄清楚为什么我的控件看起来不像常规 Windows 控件 据说 使用我正在使用的相同主题 上图显示了标准的 Windows ComboBox 顶部 和使用
  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • Python 仪器驱动程序

    我是一名实验物理学家 并且是Python http en wikipedia org wiki Python 28programming language 29 我发现它非常适合数据分析和脚本编写 实际上我还用它来连接实验室仪器 网络分析仪
  • 如何使用c++获取system32目录的完整路径?

    虽然大多数时候都是C WINDOWS system32 但有时它可以在D分区或类似的 如何以编程方式获取它 可以调用Windows API函数SHGetFolderPath http msdn microsoft com en us lib
  • c 编程检查是否按下按键而不停止程序

    如您所知 在 Windows 中使用 getch 时 应用程序会等待您按下某个键 我如何在不冻结程序的情况下读取密钥 例如 void main char c while 1 printf hello n if c getch 谢谢 您可以使
  • 如何安全地将对象(尤其是 STL 对象)传入和传出 DLL?

    如何将类对象 尤其是 STL 对象 传入和传出 C DLL 我的应用程序必须以 DLL 文件的形式与第三方插件交互 并且我无法控制这些插件是使用什么编译器构建的 我知道 STL 对象没有保证的 ABI 并且我担心这会导致我的应用程序不稳定
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • Node.js 客户端中的 Windows 集成身份验证

    当使用node js作为客户端时 是否可以使用Windows集成身份验证连接到服务器 例如连接到IIS时 我对此的搜索仅出现使用 node js 作为服务器的结果 2015 年更新 现在有一些模块实现了 Windows 集成身份验证 节点
  • 我试图理解为什么在使用 paramiko 1.7.6 时出现“权限被拒绝”错误

    谁能告诉我为什么我会收到以下错误 Traceback most recent call last File C Python27 connect py line 22 in
  • GOPATH值设置

    我用go1 3 1 windows amd64 msi安装go 安装后GOROOT是默认设置 我发现 D Programs Go bin 在 PATH 中 然后我创建一个 GOPATH 环境变量 使用 go get 命令时 出现错误 软件包
  • 批量设置命令的输出和错误以分隔变量

    在Windows 7批处理 cmd exe命令行 中 我试图将命令的标准输出 stdout 和标准错误 stderr 重定向到单独的变量 因此第一个变量设置为输出 第二个变量设置为输出 变量设置为错误 如果有 而不使用任何临时文件 我已经尝
  • 在 powershell 脚本中以不同用户身份本地运行代码块

    这是非常简单的事情 但我就是无法让任何东西发挥作用 我想在特定用户下的 powershell 脚本中运行块代码 关键字是locally我正在使用 powershell 2 0 Invoke Command 似乎需要远程主机 我运行以下命令
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 如何检测Windows版本是否合法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对获取版本信息不感兴趣 我想做的就是确保我的应用程序只能在合法版本的 Windows 上运行 而不是在盗版版本上运行 Windows 使
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • Node.js + Socket.io + Windows 7 / 8?

    我一直在到处寻找 但似乎找不到解决方案 是否可以在 Windows 7 上的 Node js 上安装 Socket io 如果没有 是否有某种替代方案 或者您知道未来有任何 Windows 支持吗 通常使用 Node js 包管理器 但是我
  • 使用 Windows 命令行连接文本文件,删除前导行

    我需要连接一些相对较大的文本文件 并且更喜欢通过命令行来完成此操作 不幸的是我只有Windows 无法安装新软件 type file1 txt file2 txt gt out txt 允许我几乎得到我想要的 但我不希望 file2 txt
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar

随机推荐

  • Jquery .remove() 撤消?

    有什么办法可以实现这一点吗 我正在使用一个分页插件 它读取 ul 中的 li 数量 并确定要吐出的编号链接的数量 您可能想使用 hide 并检查 li 是否可见 这可以通过以下方式完成 li visible
  • PySpark - 获取组中每行的行号

    使用 pyspark 我希望能够对 Spark 数据帧进行分组 对组进行排序 然后提供行号 所以 Group Date A 2000 A 2002 A 2007 B 1999 B 2015 会成为 Group Date row num A
  • JaCoCo 和 Gradle - 过滤选项

    我目前正在使用 Gradle 插件来运行 JaCoCo 来进行代码覆盖率报告 我想在我的 build gradle 中指定一些过滤选项 https github com jacoco jacoco wiki FilteringOptions
  • 如何使用 openpyxl“格式化单元格”?

    我想使用 openpyxl 格式化 Excel 工作表中的列单元格 使其数字小数位为 0 示例表 B C 63245634566 NAME 63562341234 NAME 23452345345 NAME 21345234554 NAME
  • Jetpack Compose 矢量解析问题

    我正在尝试加载向量 但不断收到此错误堆栈跟踪 java lang IllegalArgumentException Unknown command for R at androidx compose ui graphics vector P
  • 如何在 TCL 中创建并迭代哈希值的哈希值?

    如何在 TCL 中创建并迭代哈希值的哈希值 如果我有这样的数据 foo a gt aa gt aa1 aa2 aa3 ab gt ab1 ab2 ab3 ac gt ac1 ac2 ac3 b gt ba gt ba1 ba2 ba3 bb
  • 带计时器的自动静音 Android 设备设置我的用户

    我的应用程序中有 2 个按钮 开始时间和结束时间 现在我希望设备在用户设置的开始和结束持续时间内进入静音模式 我该怎么做 我的用于获取开始时间和结束时间输入的代码mainactivity java code包 com example h m
  • 在C中通过名称获取进程ID

    我试图通过进程名称获取进程 ID 例如 notepad exe 但之前 Stack Overflow 上的解决方案似乎无法正常工作 这是我尝试过的 DWORD FindProcessId const char processname HAN
  • Sencha touch 2 + Apple 推送通知 + Ext.device.Push

    我最近开始使用 Sencha Touch 2 进行开发 目前我正在创建一个需要 Apple 推送通知支持的应用程序 因此 我在 Apple 开发人员中心创建了必要的证书 并使用它们将应用程序与 Sencha Touch SDK 工具打包在一
  • XML 1.0 和 XML 2.0 之间的区别

    XML 1 0 和 XML 2 0 有什么区别 XML 2 0 从来没有出现过 即使是草案也是如此 有一个并不完全流行的 XML 1 1 标准 它有三个主要变化 其中最重要的变化是在 XML 1 0 第五版中就地应用于 XML 1 0 这一
  • 如何计算 3d numpy 数组中的凸包图像/体积

    我想知道是否有任何基于 numpy 的工具可以 给定 3D 二进制输入 numpy 图像 找到其凸包 并返回此 3D 凸包内的索引或类似体素 3D 像素 列表 一种可能性是使用skimage morphology convex hull i
  • 将 void*(*)(void*) 类型转换为 void(*)(void)

    作为作业的一部分 我试图创建一个像 pthreads 这样的用户级线程库 为了处理线程之间的上下文切换 我使用 swapcontext 函数 在使用它之前 我必须使用 makecontext 函数创建一个上下文 makecontext 需要
  • 使用 Python 将文件夹上传到 Google Cloud Storage?

    我找到了 upload from file 和 upload from filename 但是是否有函数或方法可以通过 Python 将整个文件夹上传到 Cloud Storage 这对我有用 将所有内容从本地目录复制到谷歌云存储中的特定存
  • 从 python 中的单独文件导入列表变量

    脚本 py list one two three python script here 我的列表变得非常长 大约 400 行 有没有办法让变量list在一个单独的 py 文件中并导入它 或者我应该有单独的文件并通过迭代创建一个列表 list
  • MySQL 使用另一个表中的列名

    我想知道是否可以返回一个结果集 其列名存储在单独的表中 这是可能的还是我需要一个带有变量的存储过程 请参阅 mysql dump 的链接和所需结果集的描述 http pastie org 584865 http pastie org 584
  • RabbitMQ:在直接交换中创建动态队列

    我是 RabbitMQ 的新手 我刚刚浏览了 Rabbitmq 文档 路由 我对 Exchange 与路由键之间的关系感到非常困惑 我的要求是 我想动态创建多个队列 请参考下图 前任 假设如果生产者为消费者 c3 创建消息 那么它应该转到
  • 使用 JAXB 从 XML 字符串创建对象

    如何使用下面的代码来解组 XML 字符串并将其映射到下面的 JAXB 对象 JAXBContext jaxbContext JAXBContext newInstance Person class Unmarshaller unmarsha
  • 如何记住自定义 React hook

    const useSomeHook number gt const newNumber setNewNumber useState 0 useEffect gt setNewNumber number 1 number const Some
  • .NET Core 6 - 如何在 Program.cs 中设置 ILogger(log4net) 进行依赖注入

    我已将我的新项目移至 NET核心6但显然 Program 和 Startup cs 文件发生了根本性的变化 我想在每个具有依赖注入的控制器中使用 log4net 但我找不到任何有关登录的教程 NET 核心 6 我尝试过的 builder S
  • 需要为USB外围设备编写驱动程序吗?

    我正在设计一个 USB 外设 它偶尔会连接到 Windows PC 并在每个方向上传输几 KB 的数据 将有一个自定义 PC 应用程序使用专有协议 即 USB 有效负载 来控制数据传输 我在下面的链接中看到微软描述的how为 USB 设备编