更新 USB 设备列表

2023-12-01

我想要创建自动更新 USB 设备列表的模块(不仅仅是大容量存储)。现在它的工作方式非常粗鲁 - 它有额外的线程,1 秒后更新设备列表。但也许您知道如何处理一些生成操作系统(例如 Windows XP 及更高版本)的插入事件或如何简化此过程的另一种方法。感谢您的时间!


这个问题看起来一半是设计,一半是实现。看来您最关心的是寻找 Java USB 服务的方法,例如jUSB为系统中的热插拔事件提供服务,允许您通过以下方式调用事件控制反转而不是运行一个在后台热情地、迭代地轮询系统的线程。

您寻求的支持早在 2005 年就以 JSR-80 的形式实施,并似乎继续存在,在所有超越其商业支持的伟大项目中,javax-usb在 SourceForge 上。请注意,在他们的玩具示例中(在javax-usb-example/src/ShowTopology.java), 他们的首选模型仍然基于轮询。

然而,并非一切都失去了!在的属性文件javax.usb,我们发现:

# 是否应该使用轮询而不是等待热插拔 通知。

# 某些内核版本存在错误,并且在更新设备节点之前不要更新 唤醒等待设备文件的线程后很多秒。 如果您在中度到重度负载的系统上没有收到热插拔事件, 使用轮询。

# 请注意,由于新的(有缺陷?)内核行为破坏了 javax.usb,因此这是默认值 真实!

# 如果你知道你的内核没有损坏,你可以将其设置为 false。

#com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling = true

And in javax-usb/src/javax/usb/event/UsbServicesListener.java中,我们看到了一个用于设置 USB 事件侦听器的模型,您可以在设备连接到系统或从系统分离时继续使用该模型。外部没有给出任何文件说明这是否works,然而,这些文档本身似乎大多已经有 8 岁了。

因此,可以合理地假设,虽然支持理论上存在,但它滞后、陈旧,并且迫切需要社区进行更新。这是 SO 上这个优秀社区可以帮助解决的问题,所以我将开始接近直接指向项目本身。

目前,在增强的硬件或热插拔支持出现之前,轮询仍然是最佳解决方案。

(附加参考实现javax-usb)

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

更新 USB 设备列表 的相关文章

随机推荐

  • 使用字符串创建 Red 语言的单词和路径

    我有字符串在namelist 对应于应用程序中的变量和字段名称 该函数应该从名称列表中读取字符串 添加 f 以获取 field names 然后将变量值放入相应的字段中 我尝试了以下代码 没有给出任何错误 但也不起作用 namelist v
  • Rstudio不会编织

    Rstudio 不会编织 我已经在课程中使用它几个星期了 当我尝试编织时 它会执行直到遇到一些代码并停止 代码是 ggplot 数据 gss aes x 年 填充 度 几何酒吧 消息是 找不到函数 ggplot 其他函数也会发生这种情况 注
  • C#8 接口及其中定义的属性/方法 - 显然不起作用

    这是我使用的界面 public interface IPresentism public abstract bool isPresent get public virtual bool isAbsent gt isPresent isPre
  • Oracle 中的 OVER 子句

    Oracle中的OVER子句是什么意思 The OVER子句指定分析函数运行的 分区 排序和窗口 示例 1 计算移动平均线 AVG amt OVER ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1
  • 如何通过解析 TTF 字体文件获取字形宽度?

    用于捕获 a 的字形宽度TrueType字体 我转换对应的TTF归档依据fontforge into AFM 它是文本格式 不是二进制 然后 解析文本文件以捕获字形宽度 应该有更简单的方法来直接解析二进制文件TTF文件来捕获字形宽度 我很欣
  • C# 索引属性?

    我使用 Visual Basic 已经有一段时间了 最 近决定开始学习 C 作为学习更复杂语言的一个步骤 作为这次跳跃的一部分 我决定将一些旧的 VB 项目手动转换为 C 我遇到的问题是转换一个具有使用带有参数 索引的属性的类的库 在 VB
  • 如何调试IE11 APPCACHE

    我有一个适用于 CHROME 和 SAFARI 的 HTML5 页面 但使用 Internet Explorer 11 不起作用 我的缓存清单根据http manifest validator com 我很沮丧 这是 AppCache 清单
  • 将 XHTML 转换为 Word ML

    将 Word HTML 转换为 Word XML 的最佳方法是什么 我无法购买工具 因此需要最好是 XSLT 它是免费的 并且适用于段落 列表 粗体和斜体等基本格式 斯蒂芬 布永写了一篇blog关于这一点 请参阅 MSDN 她提供了一个非常
  • Firebase Cloud 代码(后端逻辑)

    我正在考虑使用 Firebase 而不是 Parse 因为它即将关闭 来满足我未来的移动后端需求 我真的很喜欢它的实时数据库方面 但它没有像 Parse 与 Cloud Code 那样轻松集成后端逻辑 有没有简单的方法可以实现此功能 或者很
  • 无效的正则表达式错误

    我正在尝试检索该字符串的类别部分 property id 516 category featured properties 所以结果应该是 featured properties 我想出了一个正则表达式并在这个网站上进行了测试http gs
  • 将 Ado.net DataReader 转换为 IDataRecord 给出奇怪的结果

    我有一个针对数据库运行的查询 我可以看到有一条 2013 年 5 月 31 日的记录 当我使用 ADO NET 从 C 运行此查询 然后使用以下代码时 我丢失了 2013 年 5 月 31 日的记录 var timeSeriesList n
  • fileReader.readAsBinaryString 上传文件

    尝试使用 fileReader readAsBinaryString 通过 AJAX 将 PNG 文件上传到服务器 精简代码 fileObject 是包含我的文件信息的对象 var fileReader new FileReader fil
  • Google Sheets:具有动态变化的自定义函数

    我正在使用一个自定义功能跟踪什么为单元格着色是 但是这个函数有一个问题不更新自身如果细胞颜色改变 细胞颜色 function GetCellColorCode input var ss SpreadsheetApp getActiveSpr
  • 气流 Schedule_interval 和 start_date 使其始终触发下一个间隔

    如何配置气流 mwaa 以便它在部署 dag 时每天同一时间 太平洋标准时间上午 6 点 触发 我尝试过对我来说有意义的事情 将schedule interval设置为0 6 将开始日期设置为 now datetime utcnow now
  • javascript 中 isNaN 和 Number.isNaN 之间的混淆

    我对 NaN 的工作原理感到困惑 我已经执行了isNaN undefined 它回来了true 但如果我会使用Number isNaN undefined 它正在返回false 那么我应该使用哪一个 还有为什么结果有这么大的差异 引用一个p
  • 类型类 MonadPlus、Alternative 和 Monoid 之间的区别?

    标准库 Haskell 类型类MonadPlus Alternative and Monoid每个方法都提供了两种语义基本相同的方法 空值 mzero empty or mempty 操作员a gt a gt a将类型类中的值连接在一起 m
  • 如何在Python中从子类调用父类的方法?

    在 Python 中创建简单的对象层次结构时 我希望能够从派生类调用父类的方法 在 Perl 和 Java 中 有一个关键字 super 在 Perl 中 我可能会这样做 package Foo sub frotz return Bamf
  • Spring 会话范围 bean 与 AOP 的问题

    我想在 HomeController 类中注入 currentUser 实例 因此对于每个请求 HomeController 都会有 currentUser 对象 我的配置
  • 如何在 Spring MVC 中实现 HTTP 字节范围请求

    我的网站上出现视频倒带问题 我发现了 http 标头的问题 我当前返回视频的控制器方法 RequestMapping method RequestMethod GET value testVideo ResponseBody public
  • 更新 USB 设备列表

    我想要创建自动更新 USB 设备列表的模块 不仅仅是大容量存储 现在它的工作方式非常粗鲁 它有额外的线程 1 秒后更新设备列表 但也许您知道如何处理一些生成操作系统 例如 Windows XP 及更高版本 的插入事件或如何简化此过程的另一种