реклама на сайте
подробности

 
 
> Получить имя устройства USB
Timofey
сообщение Jul 25 2009, 19:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



Есть USB устройство. Подключаю его к компу. Драйвер ставится, все хорошо. Устройство видно в диспетчере. У него есть один интерфейс с тремя точками (кроме нулевой): 1 - от хоста в устройство (2 байта длиной), 4 и 5 - от устройства к хосту (256 байт длиной).

Пишу следующие строки


Код
HDEVINFO hDevInfo;
PSP_DEVICE_INTERFACE_DATA pDevInfoData = NULL;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDevInfoDetail = NULL;
ULONG nNameLen;

Driver = INVALID_HANDLE_VALUE;
hDevInfo = SetupDiGetClassDevsA((GUID*)&GUID_USBSRV_TYPE_DEVICE,NULL,NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE);
pDevInfoData = new SP_DEVICE_INTERFACE_DATA;
pDevInfoData->cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
if (SetupDiEnumDeviceInterfaces(hDevInfo,NULL,(GUID*)&GUID_USBSRV_TYPE_DEVICE,0,pDevInfoData))
{
   SetupDiGetInterfaceDeviceDetail(hDevInfo,pDevInfoData,NULL,0,&nNameLen,NULL);
   pDevInfoDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA) new unsigned char[nNameLen];
   pDevInfoDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
   SetupDiGetInterfaceDeviceDetailA(hDevInfo,pDevInfoData,pDevInfoDetail,nNameLen,&nNameLen,NULL);
   Driver = CreateFile(pDevInfoDetail->DevicePath,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPE
N_EXISTING,0,0);
}
delete   pDevInfoData;
delete[] pDevInfoDetail;


GUID_USBSRV_TYPE_DEVICE= (D1: $36FC9E60; D2: $C465; D3: $11CF; D4: ($80, $56, $44, $45, $53, $54, $00, $00));
Проблема в том, что функция SetupDiEnumDeviceInterfaces всегда возвращает мне ошибку, что интерфейсов не найдено.
Я даже перебрал остальные GUID ради интереса, которые нашел в реестре.
В чем может быть причина? Или может есть другие способы получения имени и открытия устройства как файла?
З.Ы. Выравнивания в программе отключено для структур.
З.Ы.Ы. И еще, чем отличаются функции SetupDiGetClassDevsA от SetupDiGetClassDevsW? В мсдн вобще про них ничего не нашел, есть просто SetupDiGetClassDevs, но её нет в библиотеке винды sad.gif

Сообщение отредактировал Timofey - Jul 25 2009, 19:12
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016