Привет всем! Вот уже месяц бьюсь на своим драйвером USB. Проблема в том что все handle получаю нулевыми. Может ли кто поделиться сырцами драйверов для USB? Или помочь какими нибудь полезными сылками с дествительно рабочими примерами. Заранее спасибо.
Снова привет! Похоже погарячился я на свой дравер, решил его подсунуть другим USB устройствам, все прекрасно работает. Но вот устройство для которого я пишу драйвер имеет 5 интерфейсов, плюс к этому некоторые интерфейсы имееют по 2 альтернативных настройки, вот его дискриптор: Код (Text): USB_CONFIGURATION_DESCRIPTOR STRUCT bLength 09H bDescriptorType 02H wTotalLength 010EH bNumInterface 05H bConfigurationValue 01H iConfiguration 00H bmAttributes E0H MaxPower 01H USB_CONFIGURATION_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 00H bAlternateSetting 00H bNumEndpoints 01H bInterfaceClass FFH bInterfaceSubClass FFH bInterfaceProtocol FFH iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 85H bmAttributes 03H wMaxPacketSize 0020H bInterval 08H USB_ENDPOINT_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 00H bAlternateSetting 01H bNumEndpoints 05H bInterfaceClass FFH bInterfaceSubClass FFH bInterfaceProtocol FFH iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 01H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 02H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 83H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 84H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 85H bmAttributes 03H wMaxPacketSize 0020H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 01H bAlternateSetting 00H bNumEndpoints 01H bInterfaceClass 02H bInterfaceSubClass 02H bInterfaceProtocol 01H iInterface 03H USB_INTERFACE_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 07H bDescriptorType 05H bEndpointAddress 86H bmAttributes 03H wMaxPacketSize 0008H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 02H bAlternateSetting 00H bNumEndpoints 00H bInterfaceClass 01H bInterfaceSubClass 01H bInterfaceProtocol 00H iInterface 04H USB_INTERFACE_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 03H bAlternateSetting 00H bNumEndpoints 00H bInterfaceClass 01H bInterfaceSubClass 02H bInterfaceProtocol 00H iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 03H bAlternateSetting 01H bNumEndpoints 01H bInterfaceClass 01H bInterfaceSubClass 02H bInterfaceProtocol 00H iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 09H bDescriptorType 05H bEndpointAddress 88H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 04H bAlternateSetting 00H bNumEndpoints 00H bInterfaceClass 01H bInterfaceSubClass 02H bInterfaceProtocol 00H iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_INTERFACE_DESCRIPTOR STRUCT bLength 09H bDescriptorType 04H bInterfaceNumber 04H bAlternateSetting 01H bNumEndpoints 01H bInterfaceClass 01H bInterfaceSubClass 02H bInterfaceProtocol 00H iInterface 00H USB_INTERFACE_DESCRIPTOR ENDS USB_ENDPOINT_DESCRIPTOR STRUCT bLength 09H bDescriptorType 05H bEndpointAddress 07H bmAttributes 01H wMaxPacketSize 0010H bInterval 01H USB_ENDPOINT_DESCRIPTOR ENDS Может кто сталкивался с такими устройствами, как с ними работать? Или может кто подскажет, ести ли возможность где нибудь скачать сырец usbccgp.sys?
А в чём проблема? Или смущают альтернативные интерфейсы? Если Alternate Settings смущают, то есть два варианта: 1. анализировать эти интерфейсы и выбирать наиболее подходящий из них при помощи SET_INTERFACE 2. забить и всегда ставить скажем первый альтернативный (он установлен по умолчанию так что можно не менять) По сути у разных альтернативных настроек одного интерфейса должна быть одинаковоя функциональность, но разные параметры - допустим энергопотребление и т.д...
Скачал тут книгу "Programming the Microsoft Windows Driver Model" Насколько знаю английский, там написано, что по умолчанию выбиратся 0 альтернативная настройка, а чтобы выбрать скажем 1 альтернативную настройку, нужно знать handle этого интерфейса, а они у меня тоже равены нулю. К стати, где то на форуме читал, что к этой книге есть примеры, может кто подскажет где их можно скачать ?
Нулевая альтернативная настройка выбирается устройством автоматически при подаче питания или сбросе (реализовано аппаратно), драйвера Windows тут не при чём. По-поводу остального ничего сказать не могу - я USB под DOS программирую...