|
два устройства один драйвер, usbbulk |
|
|
|
Feb 11 2008, 01:11
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(lazarev andrey @ Feb 8 2008, 10:41)  серийного номера в дескрипторе не предусмотрено, предусмотрены разные PID. в inf - файле прописаны несколько PID. может быть в этом дело? может надо делать для каждого отдельного устройства свой inf - файл? Как же не предусмотрено? (http://proyectosfie.com/html/usb/libro/ стр.97) The device descriptor has 14 fields in 18 bytes. 0 bLength 1 Descriptor size in bytes 1 bDescriptorType 1 The constant DEVICE (01h) 2 bcdUSB 2 USB specification release number (BCD) 4 bDeviceClass 1 Class code 5 bDeviceSubclass 1 Subclass code 6 bDeviceProtocol 1 Protocol Code 7 bMaxPacketSize0 1 Maximum packet size for Endpoint 0 8 idVendor 2 Vendor ID 10 idProduct 2 Product ID 12 bcdDevice 2 Device release number (BCD) 14 iManufacturer 1 Index of string descriptor for the manufacturer 15 iProduct 1 Index of string descriptor for the product 16 iSerialNumber 1 Index of string descriptor containing the serial number 17 bNumConfigurations 1 Number of possible configurations iSerialNumber. An index that points to a string containing the device’s serial number. This value is zero if there is no serial number. Some device classes (such as mass storage) require serial numbers. Serial numbers are useful if users may have more than one identical device on the bus and the host needs to keep track of which is which even after rebooting. Serial numbers also enable a host to determine whether a peripheral is the same one used previously or a new installation of a peripheral with the same Vendor ID and Product ID. No devices with the same Vendor ID, Product ID, and device release number should have the same serial number.
--------------------
|
|
|
|
|
Mar 21 2008, 12:19
|
Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 6-12-06
Пользователь №: 23 196

|
снова стало актуально. устройтсво сделано на at89c5131.
вот такой текст инф файла:
/*--------------------------- [Version] Signature = $CHICAGO$ Provider = "Company" Class = USB DriverVer = 10/12/2007, 1.0.0.0
;------------------------------------------------------------------------- ; Driver information ;-------------------------------------------------------------------------
[Manufacturer] "Co" = Tech.Mfg
[Tech.Mfg]
"Device1" = DDInstall_USB_C001, USB\VID_03EB&PID_C001 "Device2" = DDInstall_USB_C002, USB\VID_03EB&PID_C002
;------------------------------------------------------------------------- ; Windows 2000 installation section ;-------------------------------------------------------------------------
[DDInstall_USB_C001.NT] AddReg = AddRegistry_C001 CopyFiles = DrivertFiles.Ext, DrivertFiles.Inf
[DDInstall_USB_C001.NT.Services] AddService = USBBulk, 0x00000002, Service_Inst, EventLog_Inst
[DDInstall_USB_C002.NT] AddReg = AddRegistry_C002 CopyFiles = DrivertFiles.Ext, DrivertFiles.Inf
[DDInstall_USB_C002.NT.Services] AddService = USBBulk, 0x00000002, Service_Inst, EventLog_Inst
[Service_Inst] DisplayName = "USB 2 Endpoints universal driver" ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; 2 - SERVICE_AUTO_START, 3 - SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %10%\System32\Drivers\USBBulk.sys LoadOrderGroup = Base
;------------------------------------------------------------------------- ; Windows 9X installation section ;-------------------------------------------------------------------------
[DDInstall_USB_C001] AddReg = AddRegistry_9X, AddRegistry_C001 CopyFiles = DrivertFiles.Ext, DrivertFiles.Inf
[DDInstall_USB_C002] AddReg = AddRegistry_9X, AddRegistry_C002 CopyFiles = DrivertFiles.Ext, DrivertFiles.Inf
;------------------------------------------------------------------------- ; Registry section ;-------------------------------------------------------------------------
[AddRegistry_9X] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,USBBulk.sys
[AddRegistry_C001] HKR, "Parameters", "MaxInXfer", 0x00010001, 1048576 HKR, "Parameters", "EPInAddress", 0x00010001, 5 HKR, "Parameters", "MaxOutXfer", 0x00010001, 32 HKR, "Parameters", "EPOutAddress", 0x00010001, 2
[AddRegistry_C002] HKR, "Parameters", "MaxInXfer", 0x00010001, 1048576 HKR, "Parameters", "EPInAddress", 0x00010001, 5 HKR, "Parameters", "MaxOutXfer", 0x00010001, 32 HKR, "Parameters", "EPOutAddress", 0x00010001, 2
;------------------------------------------------------------------------- ; Event log registry entries ;-------------------------------------------------------------------------
[EventLog_Inst] AddReg = EventLog_AddReg
[EventLog_AddReg] HKR,,EventMessageFile,0x00020000,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\USBBulk.sys" HKR,,TypesSupported,0x00010001,7
;------------------------------------------------------------------------- ; Source file information ;-------------------------------------------------------------------------
[PreCopySection] HKR,,NoSetupUI,,1
[DestinationDirs] DrivertFiles.Ext = 10, System32\Drivers DrivertFiles.Inf = 10, Inf
[DrivertFiles.Ext] USBBulk.sys
[DrivertFiles.Inf] Atmel.inf
;=========================================================================
ну это я взял готовый инф и подправил немного.
драйвер я прикрепил. может что надо подправить в инф-файле?
Сообщение отредактировал lazarev andrey - Mar 21 2008, 12:23
|
|
|
|
|
Mar 24 2008, 09:22
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(lazarev andrey @ Mar 24 2008, 12:14)  2. программа для тестирования опять же взята из исходника, но переправленная для наших нужд. Как в программе тестирования определяется экземпляр устройства, с которым она должна работать?
|
|
|
|
|
Mar 24 2008, 15:00
|
Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 6-12-06
Пользователь №: 23 196

|
похоже, что нашли причину, при ближайшем рассмотрении кода приложения. мдас...надо осваивать более высокий уровень программирования  Тему можно закрыть, Всем спасибо, огромное за содействие.
|
|
|
|
|
May 17 2011, 15:36
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-05-11
Пользователь №: 65 069

|
Народ, а вот у меня имеются отладочные платы AVR32 с usb (2 шт). Назначаю им уникальные VID PID, инф файл по аналогии сделал, что был выше. Драйвер беру из NTDDK - bulkusb.sys. Пытаюсь подрубить два устройства на один драйвер. В системе установка проходит, висят оба устройства в диспетчере, дебагвью показывает отладку для каждого из устройств при подключении. Вроде все хорошо, пока не вытащишь одно из устройств из порта - тут же синий экран и перезагруз. При работе только с одним устройствам - и подцепляется, и отцепляется корректно. В чем особенность драйвера для работы на два (или более) устройств, кто подскажет? Полагаю, что обработка surprise_remove или просто remove такова, что выгружает полностью драйвер из системы (это мои догадки). Повторяю, инф файл идентичен тому, что выше в теме. Спасибо.
|
|
|
|
|
May 18 2011, 15:13
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-05-11
Пользователь №: 65 069

|
Вот наткнулся на IRP_MN_QUERY_DEVICE_RELATIONS и обработка REMOVAL_RELATIONS. В bulkusb от NTDDK этих обработчиков нету. Возможно это есть решение моего вопроса. Кто знает, как это работает?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|