Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

Добраться до PortName, через SetupAPI.   Найти похожие ветки 

 
POP   (2008-11-01 20:36) [0]

Подключен например у меня модем IDC. В свойствах (в диспетчере задач) вижу, он висит на COM2.

Как мне программно до этого "COM2" (PortName в реестре) добраться?

Через SetupAPI.

Пока додумался только вот до чего:

Через SetupDiGetClassDevs получаю список всех устройств в классе "Модемы", то есть юзаю GUID_DEVCLASS_MODEM.

Далее использую SetupDiEnumDeviceInfo и получаю заполненную структуру SPDevInfoData для каждого устройства (модема)

Далее, через SetupDiGetDeviceRegistryProperty (подсовываю ей SPDevInfoData) могу получить разную инфу, типа имя устройства, FriendlyName и тд.

То есть, в конечно итоге, можно ли добраться до досового имени PortName имея хендл устройства (из SPDevInfoData)?

Либо используя какую-нибудь инфу полученную с помощью SetupDiGetDeviceRegistryProperty?


 
POP   (2008-11-02 02:00) [1]

В процессе изучения вопроса обнаружил вот что:

Девайсы могут быть прописаны как в "Ports", так и в "Modems" в Девайс менеджере.

Девайсы могут иметь два пути по которым они открываются CreateFile: это обычные DOS имена типа COM1, COM2 и тд, и служебные, типа usb#vid_067b&pid_2303#5&1489a85&0&2#{86e0d1e0-8089-11d0-9ce4-08003e301f73}

Служебное имя называется DevicePath.

DevicePath можно получить фунциями SetupDiEnumDeviceInterfaces и SetupDiGetDeviceInterfaceDetail

Но перед эти нужно составить список устройств некоего класса, например "Ports" и подсунуть этим фунциям.

Список получается при помощи ф-и: SetupDiGetClassDevs(@GUID_DEVCLASS_PORTS, nil, 0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);

Так вот проблема в том, что для класса "Modems" эта ф-я не найдет ни одного девайса с DIGCF_DEVICEINTERFACE, а следовательно невозможно будет в дальнейшем получить DevicePath по которому можно коннектиться к устройству.

Для класса "Ports" найдутся все порты без проблем.. видимо они обьявлены как с интерфесом.

То есть возникает вопрос:

Каким макаром можно находить DevicePath и коннектиться к устройствам перечисленным в "Modems"?

На практике это выглядит так, вы в своей программе при помощи SetupAPI нашли все устройства в классе "Modems" и вывели из названия, юзер тыкает мышкой и выбирает один из них... далее как коннектиться к ним?


 
tesseract ©   (2008-11-06 10:25) [2]


> вывели из названия, юзер тыкает мышкой и выбирает один из
> них... далее как коннектиться к ним?


Вообще коннектиться к ним не надо - полученным устройством можно будет работать через CreateFile/DeviceIoControl - если у тебя есть список параметров для драйвера этих функций. Для разных драйверов он может быть разным.

Чем тебя RasDial не устравивает ? С RasEnumDevices намного проще найти модем.

ЗЫ: Или тебе  надо с этим модемом по душам через COM-порт  поговорить ?



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
2-1257851009
Andrewtitoff
2009-11-10 14:03
2009.12.27
ADOTable позиция


1-1230031610
zulus5
2008-12-23 14:26
2009.12.27
PopurMenu в MDIChild


2-1257402647
d@nger
2009-11-05 09:30
2009.12.27
Обновление Master-Detail таблицы (Firebird)


1-1230387592
dm37
2008-12-27 17:19
2009.12.27
Вывод текста (во время блокировки компьютера)


1-1229944689
dmitry_12_08_73
2008-12-22 14:18
2009.12.27
Получение ссылки на файл после нажатия в проводнике "Копировать"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский