Здрасте. Мне посоветовали задать на ваш форум вопрос про USB-девайс. Такой вопрос: Я использую SetupApi для получения данных об устройстве. Тама есть функция SetupDiGetDeviceRegistryProperty, которая получает из реестра данные об устройстве. Наверно большинство я знаю ($00000000-$0000001F), но мне надо узнать Порт устройства. Если залесть в реестр то там в "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB" есть список устройств, мне надо узнать допустим здесь "..\Vid_...\5&17b9a840&0&1\Device Parameters" PortName. В моём случае это СОМ порт, возможны и другие, но это мне не важно. У кого есть какие идеи.
Что-то не понял, так СОМ порт или USB. СОМ порт имеет определённый номер для чтения-записи. Через СОМ порт работают на прямую (или через функции работы с портом или файлом), а USB имеет свой набор функций для работы с устройством и массив подключённых устройств. Там же можно узнать, то ли устройство подключено. Ссылки: http://www.usb.org/ http://www.lvr.com/usb.htm +Статьи в osr.com
Тогда нужно дизасемить уже существующий драйвер и посмотреть как он работает. Такие есть. USB-VirtualCOM.
Да не надо мне ничего Дизамбелировать. Как мне узнать порт на котором сидит модем. USB я знаю. Как мне поймать COM?
Я так делал (не с усб правда, но оно вобщем как помню тоже находилось как COM3 ) char *buffer1,*buffer2,*buffer3; ......... SetupDiGetDeviceRegistryProperty(hDevInfo,&DevInfoData,SPDRP_DRIVER,0,(PBYTE)buffer,256,0) lstrcpy(buffer2,"SYSTEM\\CurrentControlSet\\Control\\Class\\"); lstrcat(buffer2,buffer); RegOpenKeyEx(HKEY_LOCAL_MACHINE,buffer2,0,KEY_QUERY_VALUE,&hKey); if(RegQueryValueEx(hKey,"AttachedTo",0,0,(LPBYTE)buffer3,(DWORD*)&i)==ERROR_SUCCESS){ здесь в buffer3 будет имя порта, по которому TAPI нашёл модем. } P.S. А если верить TAPI не катит, то думаю единственный верный способ будет: попорядочку всем портам слать какой-нибудь запрос (типа ATI3) и сравнивать ответ с нужным. Но тут скорей всего можно наткнуться на неприятности.
P.S. А если верить TAPI не катит, то думаю единственный верный способ будет: попорядочку всем портам слать какой-нибудь запрос (типа ATI3) и сравнивать ответ с нужным. Но тут скорей всего можно наткнуться на неприятности. Это глупо... ошибок много будет... SetupDiGetDeviceRegistryProperty - не катит...
Если я правильно понял, есть USB устройство (мобила) и нужно его read/write делать? Если так, то могу куском исходника помочь, который имя девайса определяет и потом его в CreateFile ставит. После этого можно его читать/писать как обычный ком-порт (и вообще как обычный файл).