Russian Qt Forum

Программирование => Общий => Тема начата: zoro86 от Сентябрь 13, 2010, 14:32



Название: как вытащить COM-порт из сетевого соединения??
Отправлено: zoro86 от Сентябрь 13, 2010, 14:32
Имеется GPRS соединение, стоит задача выяснить на каком порте сидит модем...

У меня если порт занят, то есть соединение поднято, я не могу отправить статус...При этом возникает вот такая задача...

может где нить в виндавозе хранится к какомуму порту установлен драйвер модема... я не нашел ... кто знает помогите..


Название: Re: как вытащить COM-порт из сетевого соединения??
Отправлено: lit-uriy от Сентябрь 13, 2010, 20:40
Это надо писать в ветку о Виндовозе, а не о Qt


Название: Re: как вытащить COM-порт из сетевого соединения??
Отправлено: zoro86 от Сентябрь 14, 2010, 06:34
Вообще то я средствами Qt хочу реализовать это...или WinApi на помощь позвать :)


Название: Re: как вытащить COM-порт из сетевого соединения??
Отправлено: zoro86 от Сентябрь 14, 2010, 06:39
А может товарищ админ переместит данную тему куда надо... если не сложно


Название: Re: как вытащить COM-порт из сетевого соединения??
Отправлено: Alex_cs_gsp от Сентябрь 15, 2010, 23:15
  Не понимаю, почему просто в диспетчере устройств посмотреть нельзя (и при желании убить порт).
   Если средствами Вынь-Апи, то тут очень просто, если порт - ком. Всего в системе (по крайней мере в хп, и в семерке вроде также) может быть 255 портов. По-очереди вызываешь функцию CreateFile для каждого из предполагаемых 255 портов. Если тебе возвращается INVALID_HANDLE_VALUE, то порт либо не существует либо занят. В этом случае вызываешь ф-ю GetLastError() и если она возвращает ERROR_ACCESS_DENIED, то порт существует и занят. Будет работать, т.к. с ком портом возможен только эксклюзивный доступ. Имя порта, который хочешь открыть нужно передавать в позикс формате, иначе порт с номером больше чем 9 открыть не получится.