zoukankan      html  css  js  c++  java
  • 关于接口描述符中bAlternateSetting的使用

            今天看CY7C68013开发手册时,突然想起,在USB接口描述符中有一个bAlternateSetting字段一直没用过,花了一上午时间也没找到相关资料!就在快中午时突然看到一句话:“bAlternateSetting用于在同一个接口中的多个描述符中进行切换". 一下子感觉抓住要点了。经过百度及查阅USB specification2.0得出如下结论:
           在USB协议中同一个配置中的不同接口不能共用端点。
           同一个接口可以有多个接口描述符,用bAlternateSetting来识别.
           同一个接口的不同接口描述符,可以拥有相同的端点。
           同一个接口中的不同描述符可以像其他接口描述符一样写在配置描述符里
           例如:我们在有些情况下需要对某个接口描述符中的某个端点的传输类型进行更改,那么我们就需要使用这种方式来达到我们的要求!
           如果事实真的这样的,那么上位机驱动在查找接口描述符中必然 要有一个参数bAlternateSetting来识别相同接口的不同描述符,我们来看一下

    VOID 

      UsbBuildSelectInterfaceRequest(

        IN PURB  Urb,
        IN USHORT  Length,

        IN USBD_CONFIGURATION_HANDLE  ConfigurationHandle,

        IN UCHAR  InterfaceNumber,

        IN UCHAR  AlternateSetting

        );

    PUSB_INTERFACE_DESCRIPTOR
      USBD_ParseConfigurationDescriptorEx(
        IN PUSB_CONFIGURATION_DESCRIPTOR  ConfigurationDescriptor,
        IN PVOID  StartPosition,
        IN LONG  InterfaceNumber,
        IN LONG  AlternateSetting,
        IN LONG  InterfaceClass,
        IN LONG  InterfaceSubClass,
        IN LONG  InterfaceProtocol
        );
    这两个函数中都有一个共同的参数:AlternateSetting!
    至此,基本可以说明得出的结论是正确的!


          
            
          

  • 相关阅读:
    C#如何连接wifi和指定IP
    3.4 小结
    3.3.4.5 起始与清除
    3.3.4.4 打印行
    3.3.4.3 设置字段分隔字符
    3.3.4.2 字段
    3.3.4.1 模式与操作
    3.3.4 使用 awk 重新编排字段
    3.3.3 使用 join 连接字段
    3.3.2 使用 cut 选定字段
  • 原文地址:https://www.cnblogs.com/findstr/p/2803714.html
Copyright © 2011-2022 走看看