Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отправить нестандартный запрос в USB-устройство?  (Прочитано 5165 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Karloson
Гость
« : 27-10-2009 10:53 » new

Есть плата/устройство и драйвер (не HID). Пытаюсь из драйвера отправить свой(нестандартный) запрос в устройство с помощью ф-ции UsbBuildGetDescriptorRequest. Но устроийство всегда получает один из 12-ти стандартных.
Делаю примерно так:
Код:
#define MY_REQUEST 13

UsbBuildGetDescriptorRequest(
urb,
(USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
MY_REQUEST,
0,
0,
ioBuffer,
NULL,
outputBufferLength,
NULL);

UsbBuildFeatureRequest() и UsbBuildStatusRequest() пока не разбирался, но по описанию, вроде, не подходят по причине кучи параметров в запросе.

Как отправить свой запрос?
Как правильно переписать структуру URB  и ф-цию/макрос UsbBuildGetDescriptorRequest под свои запросы?
Как usbser.sys отправляет CDCзапросы типа SETLINECODING, GETLINECODING, SETCONTROLLINESTATE?
« Последнее редактирование: 28-10-2009 05:30 от Karloson » Записан
Karloson
Гость
« Ответ #1 : 28-10-2009 05:30 » 

Спасибо всем. В три часа ночи разобрался. Надо было пользовать:
Код:

UsbBuildVendorRequest(
urb, // Urb
URB_FUNCTION_VENDOR_DEVICE, // Function
(USHORT) sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST), // Length
(USBD_TRANSFER_DIRECTION_IN  | USBD_SHORT_TRANSFER_OK), // TransferFlags
0, // ReservedBits
MY_REQUEST, // Request (bRequest)
0, // Value (wValue)
0, // Index (wIndex)
ioBuffer, // TransferBuffer
0, // TransferBufferMDL
outputBufferLength, // TransferBufferLength (wLength)
0); //link

Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 28-10-2009 05:47 » 

Karloson, дык молодец, что разобрался Улыбаюсь Только ночью лучше спать - с утра то оно гораздо лучше соображается
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines