YStudio Y++

WinUSB类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库(旁路插件 supportlib.winusb)。路径:支持库 → 扩展类库 → WinUSB类。

用户态访问已绑定 WinUSB / 厂商 WinUSB 栈 的 USB 设备:枚举、打开、控制传输、批量/中断读写。动态加载系统 winusb.dll,免费。

类型名必须写完整「WinUSB类」。

硬约束

  1. 类型名必须写「WinUSB类」。
  2. 设备须在系统里使用 WinUSB 驱动;普通大容量存储/键鼠等默认驱动打开会失败(见 取错误())。
  3. 管道 ID、控制码布局以 厂商 USB 文档 为准。
  4. 不做全局钩子;只打开你指定的路径/索引。
  5. Windows 7 及以上(推荐 10/11);无 winusb.dll 时会提示环境不完整。

快速开始

WinUSB类 u
如果 (!u.枚举()) {
    输出(u.取错误())
    返回 ()
}
计次循环 (整数 i = 0; i < u.取设备数(); i++) {
    输出(u.取友好名(i) + " | " + u.取设备路径(i))
}

' 仅当该设备确为 WinUSB 时:
' 如果 (u.打开索引(0)) {
'     输出(u.取管道列表())
'     字节集 出 = u.批量读(0x81, 64)
'     u.关闭()
' }

方法一览

  • 逻辑 枚举([文本 硬件ID过滤]) / 整数 取设备数() / 文本 取设备路径|取友好名|取硬件ID(整数 索引)
  • 逻辑 打开(文本 路径) / 逻辑 打开索引(整数 索引) / 逻辑 声明接口([整数 接口号=0]) / 关闭()
  • 逻辑 控制传输(请求类型, 请求, 值, 索引, 字节集 数据, [输出容量], [超时])
  • 逻辑 批量写(管道ID, 字节集) / 字节集 批量读(管道ID, [最大字节], [超时])
  • 文本 取管道列表() / 整数 取管道数() / 字节集 取输出() / 文本 取错误()

选型

需求 建议
COM 口文本/字节流 串口类
通用厂商 IOCTL / SetupAPI 设备类
WinUSB 批量/控制 WinUSB类(本文)
HID 报表 HID类

相关

设备类 · HID类 · 串口类 · 字节集