Windows下USB百科
+ -

Windows-USB集线器HUB端口状态PortStatus

2024-01-18 50 0

USB集线器驱动定义了几种状态用于标识下游端口及连接设备的状态信息。

//
// Hub and Port status defined below also apply to StatusChnage bits
//
#define HUB_STATUS_LOCAL_POWER      0x01
#define HUB_STATUS_OVER_CURRENT     0x02

//PortStatus
#define PORT_STATUS_CONNECT         0x001
#define PORT_STATUS_ENABLE          0x002
#define PORT_STATUS_SUSPEND         0x004
#define PORT_STATUS_OVER_CURRENT    0x008
#define PORT_STATUS_RESET           0x010
#define PORT_STATUS_POWER           0x100
#define PORT_STATUS_LOW_SPEED       0x200
#define PORT_STATUS_HIGH_SPEED      0x400

该端口状态是USB集线器GetPortStatus的扩展。

PORT_STATUS_CONNECT

USB集线器驱动即下游端口的总线创建下游端口的子设备之后,标识该端口为PORT_STATUS_CONNECT。所以PORT_STATUS_CONNECT至少在获取设备描述符SET_ADDRESS正常之后。
USB集线器驱动用于管理其连接到该该线器下的所有子设备,包括其下游端口状态的标识。同时也对系统关于USB集线器的一些自定义IOCTL的的信息应答。这其中就包括IOCTL_INTERNAL_USB_GET_PORT_STATUS。USB集线器通过判断其端口的状态返回其相应的标识。

    //首先通过GetPortStatus获取端口状态
    ntStatus = USBH_SyncGetPortStatus(deviceExtensionHub,
                                      DeviceExtensionPort->PortNumber,
                                      (PUCHAR) &portData->PortState,
                                      sizeof(portData->PortState));

 // translate hup port status bits
 if (portData->PortState.PortStatus & PORT_STATUS_ENABLE) {
     *portStatus |= USBD_PORT_ENABLED;
 }

 if (portData->PortState.PortStatus & PORT_STATUS_CONNECT ) {
     *portStatus |= USBD_PORT_CONNECTED;
 }

PORT_STATUS_ENABLE

和PORT_STATUS_CONNECT类似,也是GetPortStatus的一部分。
但USB集线器自定义接口IOCTL_INTERNAL_USB_ENABLE_PORT可以对端口进行禁用和使能。
对端口禁用和启用,使用USB集线器的类请求SetHubFeature的C_PORT_ENABLE实现。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB集线器GetPortStatus
RequestbmRequestTypebRequestwValuewIndexwLengthDataGetPortStatus10100011B (0xA3)GET_STATUS(0x00)0Port4Port Status and Change Statu......
Windows-USB集线器HUB端口状态PortStatus
USB集线器驱动定义了几种状态用于标识下游端口及连接设备的状态信息。//// Hub and Port status defined below also apply to StatusChnage bits//#define HUB_STATUS_LOCAL_POWER 0x01......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!