драйвер для USB (не HID)

Тема в разделе "WASM.ELECTRONICS", создана пользователем al79, 9 июн 2007.

  1. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Привет всем!

    Вот уже месяц бьюсь на своим драйвером USB. Проблема в том что все handle получаю нулевыми. Может ли кто поделиться сырцами драйверов для USB? Или помочь какими нибудь полезными сылками с дествительно рабочими примерами.

    Заранее спасибо.
     
  2. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Снова привет!

    Похоже погарячился я на свой дравер, решил его подсунуть другим USB устройствам, все прекрасно работает.
    Но вот устройство для которого я пишу драйвер имеет 5 интерфейсов, плюс к этому некоторые интерфейсы имееют по 2 альтернативных настройки, вот его дискриптор:
    Код (Text):
    1. USB_CONFIGURATION_DESCRIPTOR STRUCT
    2.     bLength             09H
    3.     bDescriptorType     02H
    4.     wTotalLength        010EH
    5.     bNumInterface       05H
    6.     bConfigurationValue 01H
    7.     iConfiguration      00H
    8.     bmAttributes        E0H
    9.     MaxPower            01H
    10. USB_CONFIGURATION_DESCRIPTOR ENDS
    11.  
    12. USB_INTERFACE_DESCRIPTOR STRUCT
    13.     bLength            09H
    14.     bDescriptorType    04H
    15.     bInterfaceNumber   00H
    16.     bAlternateSetting  00H
    17.     bNumEndpoints      01H
    18.     bInterfaceClass    FFH
    19.     bInterfaceSubClass FFH
    20.     bInterfaceProtocol FFH
    21.     iInterface         00H
    22. USB_INTERFACE_DESCRIPTOR ENDS
    23.  
    24. USB_ENDPOINT_DESCRIPTOR STRUCT
    25.     bLength          07H
    26.     bDescriptorType  05H
    27.     bEndpointAddress 85H
    28.     bmAttributes     03H
    29.     wMaxPacketSize   0020H
    30.     bInterval        08H
    31. USB_ENDPOINT_DESCRIPTOR ENDS
    32.  
    33. USB_INTERFACE_DESCRIPTOR STRUCT
    34.     bLength            09H
    35.     bDescriptorType    04H
    36.     bInterfaceNumber   00H
    37.     bAlternateSetting  01H
    38.     bNumEndpoints      05H
    39.     bInterfaceClass    FFH
    40.     bInterfaceSubClass FFH
    41.     bInterfaceProtocol FFH
    42.     iInterface         00H
    43. USB_INTERFACE_DESCRIPTOR ENDS
    44.  
    45. USB_ENDPOINT_DESCRIPTOR STRUCT
    46.     bLength          07H
    47.     bDescriptorType  05H
    48.     bEndpointAddress 01H
    49.     bmAttributes     01H
    50.     wMaxPacketSize   0010H
    51.     bInterval        01H
    52. USB_ENDPOINT_DESCRIPTOR ENDS
    53.  
    54. USB_ENDPOINT_DESCRIPTOR STRUCT
    55.     bLength          07H
    56.     bDescriptorType  05H
    57.     bEndpointAddress 02H
    58.     bmAttributes     01H
    59.     wMaxPacketSize   0010H
    60.     bInterval        01H
    61. USB_ENDPOINT_DESCRIPTOR ENDS
    62.  
    63. USB_ENDPOINT_DESCRIPTOR STRUCT
    64.     bLength          07H
    65.     bDescriptorType  05H
    66.     bEndpointAddress 83H
    67.     bmAttributes     01H
    68.     wMaxPacketSize   0010H
    69.     bInterval        01H
    70. USB_ENDPOINT_DESCRIPTOR ENDS
    71.  
    72. USB_ENDPOINT_DESCRIPTOR STRUCT
    73.     bLength          07H
    74.     bDescriptorType  05H
    75.     bEndpointAddress 84H
    76.     bmAttributes     01H
    77.     wMaxPacketSize   0010H
    78.     bInterval        01H
    79. USB_ENDPOINT_DESCRIPTOR ENDS
    80.  
    81. USB_ENDPOINT_DESCRIPTOR STRUCT
    82.     bLength          07H
    83.     bDescriptorType  05H
    84.     bEndpointAddress 85H
    85.     bmAttributes     03H
    86.     wMaxPacketSize   0020H
    87.     bInterval        01H
    88. USB_ENDPOINT_DESCRIPTOR ENDS
    89.  
    90. USB_INTERFACE_DESCRIPTOR STRUCT
    91.     bLength            09H
    92.     bDescriptorType    04H
    93.     bInterfaceNumber   01H
    94.     bAlternateSetting  00H
    95.     bNumEndpoints      01H
    96.     bInterfaceClass    02H
    97.     bInterfaceSubClass 02H
    98.     bInterfaceProtocol 01H
    99.     iInterface         03H
    100. USB_INTERFACE_DESCRIPTOR ENDS
    101.  
    102. USB_ENDPOINT_DESCRIPTOR STRUCT
    103.     bLength          07H
    104.     bDescriptorType  05H
    105.     bEndpointAddress 86H
    106.     bmAttributes     03H
    107.     wMaxPacketSize   0008H
    108.     bInterval        01H
    109. USB_ENDPOINT_DESCRIPTOR ENDS
    110.  
    111. USB_INTERFACE_DESCRIPTOR STRUCT
    112.     bLength            09H
    113.     bDescriptorType    04H
    114.     bInterfaceNumber   02H
    115.     bAlternateSetting  00H
    116.     bNumEndpoints      00H
    117.     bInterfaceClass    01H
    118.     bInterfaceSubClass 01H
    119.     bInterfaceProtocol 00H
    120.     iInterface         04H
    121. USB_INTERFACE_DESCRIPTOR ENDS
    122.  
    123. USB_INTERFACE_DESCRIPTOR STRUCT
    124.     bLength            09H
    125.     bDescriptorType    04H
    126.     bInterfaceNumber   03H
    127.     bAlternateSetting  00H
    128.     bNumEndpoints      00H
    129.     bInterfaceClass    01H
    130.     bInterfaceSubClass 02H
    131.     bInterfaceProtocol 00H
    132.     iInterface         00H
    133. USB_INTERFACE_DESCRIPTOR ENDS
    134.  
    135. USB_INTERFACE_DESCRIPTOR STRUCT
    136.     bLength            09H
    137.     bDescriptorType    04H
    138.     bInterfaceNumber   03H
    139.     bAlternateSetting  01H
    140.     bNumEndpoints      01H
    141.     bInterfaceClass    01H
    142.     bInterfaceSubClass 02H
    143.     bInterfaceProtocol 00H
    144.     iInterface         00H
    145. USB_INTERFACE_DESCRIPTOR ENDS
    146.  
    147. USB_ENDPOINT_DESCRIPTOR STRUCT
    148.     bLength          09H
    149.     bDescriptorType  05H
    150.     bEndpointAddress 88H
    151.     bmAttributes     01H
    152.     wMaxPacketSize   0010H
    153.     bInterval        01H
    154. USB_ENDPOINT_DESCRIPTOR ENDS
    155.  
    156. USB_INTERFACE_DESCRIPTOR STRUCT
    157.     bLength            09H
    158.     bDescriptorType    04H
    159.     bInterfaceNumber   04H
    160.     bAlternateSetting  00H
    161.     bNumEndpoints      00H
    162.     bInterfaceClass    01H
    163.     bInterfaceSubClass 02H
    164.     bInterfaceProtocol 00H
    165.     iInterface         00H
    166. USB_INTERFACE_DESCRIPTOR ENDS
    167.  
    168. USB_INTERFACE_DESCRIPTOR STRUCT
    169.     bLength            09H
    170.     bDescriptorType    04H
    171.     bInterfaceNumber   04H
    172.     bAlternateSetting  01H
    173.     bNumEndpoints      01H
    174.     bInterfaceClass    01H
    175.     bInterfaceSubClass 02H
    176.     bInterfaceProtocol 00H
    177.     iInterface         00H
    178. USB_INTERFACE_DESCRIPTOR ENDS
    179.  
    180. USB_ENDPOINT_DESCRIPTOR STRUCT
    181.     bLength          09H
    182.     bDescriptorType  05H
    183.     bEndpointAddress 07H
    184.     bmAttributes     01H
    185.     wMaxPacketSize   0010H
    186.     bInterval        01H
    187. USB_ENDPOINT_DESCRIPTOR ENDS
    Может кто сталкивался с такими устройствами, как с ними работать?
    Или может кто подскажет, ести ли возможность где нибудь скачать сырец usbccgp.sys?
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    А в чём проблема? Или смущают альтернативные интерфейсы?
    Если Alternate Settings смущают, то есть два варианта:
    1. анализировать эти интерфейсы и выбирать наиболее подходящий из них при помощи SET_INTERFACE
    2. забить и всегда ставить скажем первый альтернативный (он установлен по умолчанию так что можно не менять)

    По сути у разных альтернативных настроек одного интерфейса должна быть одинаковоя функциональность, но разные параметры - допустим энергопотребление и т.д...
     
  4. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Скачал тут книгу "Programming the Microsoft Windows Driver Model"
    Насколько знаю английский, там написано, что по умолчанию выбиратся 0 альтернативная настройка, а чтобы выбрать скажем 1 альтернативную настройку, нужно знать handle этого интерфейса, а они у меня тоже равены нулю.
    К стати, где то на форуме читал, что к этой книге есть примеры, может кто подскажет где их можно скачать ?
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Нулевая альтернативная настройка выбирается устройством автоматически при подаче питания или сбросе (реализовано аппаратно), драйвера Windows тут не при чём.
    По-поводу остального ничего сказать не могу - я USB под DOS программирую...