|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
usb device descriptor
Друзья, подскажите как вычленить дескриптор usb флэшки
зная ее хэндл и с помошью DeviceIoControl(..,...) какой control code передавать. |
#2
|
||||
|
||||
Проверь почту, я выслал тебе пример из книге "Интерфейс Usb практика использования и программирования". Может поможет...
|
#3
|
|||
|
|||
спасибо только я вот по ней и работаю.
но там нет нужных мне Ctl_code если есть информация, буду признателен... |
#4
|
|||
|
|||
код: IOCTL_GET_USB_DESCRIPTOR
и в lpInBuffer передаешь запись USBSCAN_GET_DESCRIPTOR в зависимости от того как будет заполнен USBSCAN_GET_DESCRIPTOR в lpOutBuffer получишь записи типа USB_DEVICE_DESCRIPTOR или USB_STRING_DESCRIPTOR или USB_CONFIGURATION_DESCRIPTOR. P.S. Сам не проверял... |
#5
|
|||
|
|||
А что это за структура?
Я передаю и в IPINBuffer И IPOUTBuffer указатель на иодну структуру: TSetupPacket = packed record bmRequest : UCHAR; bRequest : UCHAR; wValue : Array [1..2] of UCHAR; wIndex : Array [1..2] of UCHAR; wLength : Array [1..2] of UCHAR; End; TDescriptorRequest = packed record ConnectionIndex : ULONG; SetupPacket : TSetupPacket; Data : Array [1..2048] of Byte; End; в коде вот так : ZeroMemory(@Packet, SizeOf(Packet)); Packet.SetupPacket.bmRequest := $80; Packet.SetupPacket.bRequest := USB_REQUEST_GET_DESCRIPTOR; Packet.SetupPacket.wValue [2]:= USB_DEVICE_DESCRIPTOR_TYPE; Packet.SetupPacket.wLength[2]:= 1; // Èñïîëüçîâàòü áóôåð 2 Êá // GetDeviceInfo(hHost); //IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION Success:= DeviceIoControl(hHost,?????????, @Packet, sizeof(Packet), @Packet, sizeof(Packet), BytesReturned, nil); If not(Success) then begin // Log(Format(' Îøèáêà ïîëó÷åíèÿ èíôîðìàöèè îá óñòðîéñòâå %s', [ //SysErrorMessage(GetLastError())])); Exit; End; а потом Packet.Data разбираю... |