繁体   English   中英

如何从处于低功耗状态的USB设备获取字符串描述符?

[英]How to get string descriptor from a USB device which is in low power state?

我正在尝试用C ++编写一个应用程序,其中列出了从USB设备获取的信息。 我正在关注USBView( Github )实用程序的代码。

当设备处于D0电源状态(完全供电)时,我能够获得字符串描述符,但是当设备进入低功耗状态(D2) ,我不是。

IOCTL IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION返回错误“连接到系统的设备无法正常运行”。 USBView实用程序显示当设备处于低功耗状态时,字符串描述符不可用。

在此输入图像描述

这种行为是奇怪的,在USB规范中没有找到它的参考。 我已经检查了2个设备,我得到了相同的行为。 即使在D2状态下,我也可以获得其他描述符,例如设备描述符,BOS描述符等。

当USB设备处于低功耗状态时,有没有办法获取字符串描述符? 如果没有,有没有办法暂时将其转为D0电源状态? 可能ACPI就是答案,但它是一个非常低级别的API,我发现它无法理解。 Windows是否提供任何高级API来设置电源状态?

USB 2.0规范定义了挂起模式,即总线上没有流量且设备进入休眠以节省电量的状态。 由于没有流量,因此您无法在挂起模式下从设备请求字符串描述符。 在你做到这一点之前,你必须用特殊的信号唤醒它。

我能想到的唯一可以帮助你的是禁用“USB选择性挂起设置”,这是Windows的一项功能,通常会在不使用时将设备置于挂起模式。 它在控制面板的电源设置部分非常深入,所以如果您无法找到它,请告诉我。

在我看来,你应该能够唤醒设备,即使它处于选择性暂停状态,以便你可以从中获取信息,但我不确定如何做到这一点,这可能取决于你的设备驱动程序使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM