Текущий архив: 2004.07.04;
Скачать: CL | DM;
Вниз
COM порт Найти похожие ветки
← →
fantomas © (2004-04-04 03:00) [0]Реально ли из своей проги читать данные с COM порта, с которым уже работает другая программа? Спасибо.
← →
тихий вовочка © (2004-04-04 15:35) [1]Насколько я знаю, нет. Приложение, имеющее доступ к порту чаще всего берет все права на него, без всяких share
← →
тихий вовочка © (2004-04-04 15:36) [2]Вопрос к тебе такой : что же ты перед тем, как вопрос задать просто не попробовал? Например через DWORD handle:=CreateFile("COM1",GENERIC_READ,FILE_SHARE_READ...
← →
Pat © (2004-04-04 16:16) [3]>Насколько я знаю, нет
sysinternals.com
← →
GanibalLector © (2004-04-05 02:45) [4]Pat прав!!!
Прога называется PortMon.
Коректно работает только с W2k(и выше),т.е. показывает что посылается\принимается.В Win9X такое явление отсутствует(ну,пишет что принял,а самого значения нет:( )
Вот такие вот дела...
← →
tesseract © (2004-04-05 09:47) [5]Смотреть что послали да, можно перехватывать и изменять значения. Но UART микросхема реализует RS232 полудуплексный порт, не поддерживающий сети устройств. Возможно профконтроллеры такое и позволят, но не факт.
← →
NikB (2004-04-05 21:38) [6]PortMon делает monitoring всех команд к порту (напр. перемена скорости и/или количество стоп битов).
Очень харошая програма, мне тоже интересно как она сделана :)
← →
GanibalLector © (2004-04-05 22:12) [7]2tesseract
Что-то ты приувеличил на счет изменения значений!!!
Впервые слышу ,что PortMon позволяет изменять то,что пришло из порта.Ты случаем не ошибся???
← →
GanibalLector © (2004-04-08 03:19) [8]Народ,как найти tesseract???
Он говорит,что можно перехватывать и изменять значения пришедший из порта.Ну,с перехватом понятно,А КАК ИЗМЕНЯТЬ???
← →
MegaVolt © (2004-04-08 09:39) [9]Если написать свой драйвер то запросто можно и мониторить и менять. Возможно эти проги так и делают. Хотя наверное можно как то ловить обращения к самому драйверу.
← →
chek (2004-04-09 09:29) [10]попробуй не CreateFile (эта функция создает новый) а, openFile (вроде так) я её нашол когда модуль шерстил. Если че у меня и структуры описание есть.
← →
jack128 © (2004-04-09 12:13) [11]
> попробуй не CreateFile (эта функция создает новый)
Что новый? Ком порт?? Круто!!! :-)
ЗЫ Внимательно изучаем 5 параметр функции
← →
NikB (2004-04-09 12:16) [12]>>> GanibalLector ©
Когда мне приходится "перехватывать и изменять значения пришедший из порта" ползую виртуалньи порт (http://www.virtualserialport.com/).
Я делаю так: из физического порта (напр. Com1) моя прога получает что-то (напр. "AAAA"), а потом изменяет и посилает его ("BBCCCDDD") на вируалнии порт (напр Com5). Виртуалнии порт "связан" виртуално с второй виртуалнии порт (напр. Com6). Так мой компютер получает на Com6 "мониторить и менять" из Com1.
А на Com6 может ждать моя или какая-та другая програма.
← →
chek (2004-04-09 19:25) [13]есть прога на http://www.aggsoft.com/ Advanced Serial Port Monitor так вот она вешается на порт шпионом (провда лекарство требует ато через 15 дней умирает). Если сильно надо в твоей проге то попробуй отловить Api которые она использует.
ЗЫ Внимательно изучаем 5 параметр функции//
Все поняли че я хотел сказать а CreateFile(даже с параметром только для чтения) не подходит
← →
Германн © (2004-04-09 22:22) [14]2 chek (09.04.04 19:25) [13]
А с параметром OPEN_EXISTING не подходит тоже? :)))
← →
GanibalLector © (2004-04-10 00:45) [15]>>>NikB
Спасибо,ща я попробую!!!
← →
Ihor Osov'yak © (2004-04-10 15:31) [16]Штатно открыть не получится, даже если программа, первой открывшая порт, позволяет шаринг - см. исходники драйверов ком-портов, которые идут в качестве семплов с DDK. Драйвер сам следит за тем, чтобы порт был открыт только "единыжды".
PortMon использует технологию драйвера - фильтра. По этой технологии можно не только мониторить (что собственно и делает утилита от сисинтерналс), но и менять данные на лету. Что никто вам не запрещает сделать самому :-).
Кроме драйвера фильтра можно еще использовать перехват соотв. апишных функций, но это немного криво, так как недокументировано. Хотя тогда не нужно связываться с режимом ядра.
Естественно, самый простой вариант - см. [12] NikB, также не обязательно виртуальные - лишь бы физических хватило :-).
← →
GanibalLector © (2004-04-11 02:23) [17]>>>Ihor Osov"yak
>но и менять данные на лету
Как???Вроде заглянул во все дыры(меню в смысле :) ) PortMon и опять нифига не нашел.
Может это из-за версии???Какую надо ставить???И как менять на лету???
← →
Германн © (2004-04-12 02:10) [18]2 GanibalLector © (11.04.04 02:23) [17
Ну, portmon, вроде как и не претендует на...?
А вот "технология драйвера фильтра", которую он использует - как раз претендует. Но, увы, насколько я знаю, исходники - уже не публикуются. Имхо.
← →
GanibalLector © (2004-04-12 23:59) [19]2 Германн © (12.04.04 02:10) [18]
>Но, увы, насколько я знаю, исходники - уже не публикуются.
Насколько я знаю,СИСИНТЕРНАЛС никогда их и не вылаживал.
Хуже всего то,что PORTMON написан на Сях.И,даже при всем желании на Delphi это не реализовать т.к. там все через vxd.Или я не прав?
← →
Германн © (2004-04-13 01:36) [20]2 GanibalLector © (12.04.04 23:59) [19]
Имхо, не прав. Во-первых исходники когда-то были, тут еще раз имхо. Во-вторых не вижу проблем во взаимотношениях С, Дельфи и vxd. Ни одно из перечисленных трех не противоречит двум оставшимся.
Уж не родственник ли ты Михал Сергеичу?
"вылаживал" и "ложат и ложат" - уж больно родственные огрехи языка! :-)
← →
tesseract © (2004-04-13 10:01) [21]Перехват значений подающихся на COM - порт возможен, но только если идёт запись через функции API. следующий выход - написаний собственных дров!
← →
GanibalLector © (2004-04-14 00:05) [22]2 Германн © (13.04.04 01:36) [20]
Не,в родстве с Михаилом Сергеевичев ЗАМЕЧЕН НЕ БЫЛ!!!
По поводу остального,ну и как работать с vxd?Просто я не встречал ВООБЩЕ нигде этого.Посоветуйте что-ли литературу или исходничек(на худой конец :) ).
2 tesseract © (13.04.04 10:01) [21]
Вопрос тот-же,как писать дрова???Литературу или сабж может видели?И еще,PortMon это Ж просто программа,а не дрова.Но у них все получилось.
Кстати,я тут взглянул на список сервисов,так вот, там присутствует PortMon,млин.Правда он скрыт,в закладке Services его нет.
← →
tesseract © (2004-04-14 10:03) [23]Как писать дрова под Win????? ну как, можно MSDN почитать, там есть DDK с примерами дров.
Можно зайти на WASM.RU - если ASM не претит. Если не тянет - можно почитать статьи о перехвате
API функций - (если нужная прога через CreateFile в порт пишет). Это слишком большая тема.
← →
AleXandrO (2004-04-15 09:21) [24]а мнпе нравится мониторить с помощью LGComSpy - зачем писать что-то новое?
← →
tesseract © (2004-04-15 09:35) [25]Тут не мониторить, тут перехватывать и изменятьвывод надо.
← →
Viktor Vetoshkin (2004-04-30 18:14) [26]PortMon s sysinternals.com ne ispol"zuet drov, on ispol"zuet funkciju ZwCreateFile. Eta funkcija pozvoljaet podslushivat" dannye i dazhe (?) izmenjat" ( eto menja ne sil"no interesovalo). Edinstvennoe, eto snachala nado otkryt" com port s zwcreatefile i lish" potom standartno.
P.S. Com - port ne razreshaet s pomoshch"ju create/open-file v rassharennom mode ispol"zovat".
S uvazheniem
viktor
← →
Германн © (2004-05-01 03:25) [27]2 Viktor Vetoshkin (30.04.04 18:14) [26]
!!! Bravo Viktor. Tak derjat.
Вот только откуда взялась и что выполняет (и как выполняет) функция ZwCreateFile ?
← →
Артем Герасимов (2004-05-02 23:43) [28]ZwCreateFile это как раз функция ядра. И выполняться может только из драйвера, которые портмон во время запуска exe выделяется из своего тела (т.е. из exe файла копируется область, представляющая собой файл-драйвера). Затем этот драйвер запускается.
есть копонент для делфи для мониторинга порта. Называется TVicCommSpy кажется. Значения менять не позволяет.
----
Артем Греасимов
http://www.aggsoft.com
← →
cdaDMITRIY © (2004-05-03 13:52) [29]Удалено модератором
Примечание: TEST
← →
Andrey V. © (2004-05-12 07:55) [30]А вышеуказанные программы умеют скидывать в файл то, что они через себя в порт пропускают ?
← →
tesseract © (2004-05-12 10:18) [31]Умеют но portmon это делает осеня плохо. Хотя я его использовал для анализа чужих программ неодноктрано - там филтр по функциям наложить нельзя
← →
Ihor Osov'yak © (2004-05-16 17:07) [32]2 [17] GanibalLector © (11.04.04 02:23)
>>>Ihor Osov"yak
>но и менять данные на лету
Имелось в виду не конкретная реализация от сисинтерналс, а использование техники драйвера-фильтра.
← →
tesseract © (2004-05-17 10:06) [33]Теоретически дпайвер фильтр и должен служит для изменения данных, подгонки их под нужные требования.
← →
GanibalLector © (2004-05-18 23:56) [34]2 tesseract,Ihor Osov"yak
Хорошо,тогда еще вопросик.Во всех мониторах от СИСИНТЕРНАЛС имеются файлы с расширением sys и vxd.Ну...с VXD понятно(где то даже пример нашел,как сделать) а с sys???Можно ли средствами Delphi сделать sys???
И еще,к сожалению мои поиски по нахождению исходников PortMon не увенчались успехом,ну да ладно.Вопрос такой,а может и не создавать вечный двигатель,а СПИОНЕРИТЬ эти два файла у СИСИНТЕРНАЛС.Как думаете,в ихнем коде присутствует замена данных?
← →
Артем Герасимов (2004-05-20 22:56) [35]>>Хорошо,тогда еще вопросик.Во всех мониторах от СИСИНТЕРНАЛС
>>имеются файлы с расширением sys и vxd.Ну...с VXD понятно(где
>>то даже пример нашел,как сделать) а с sys???Можно ли
>>средствами Delphi сделать sys???
sys сделать не получится, поскольку сборка этого файла выполняется с помошью утилитки build из Windows DDK. Все либы естественно сделаны для С.
Спионерить файлы теоретически возможно, но практически не реализуемо, т.к. придется перелопатить кучу кода, чтобы узнать:
- узнать коды функций драйвера
- формат структур данных
И то нет никакой гарантии что в какой то момент не вылезет проблема, которая может привести к краху системы.
----
Артем Греасимов
http://www.aggsoft.com
← →
tesseract © (2004-05-22 12:00) [36]2>> ganniballector
Скорей всего Sys- устанавливает новый драйвер, и он великолепно светиться в реестре. И если оно драйвер, то DeveciIOControl тебе поможет.
2>> Артем
Любой драйвер - это Dll режима ядра с определёнными функциями чере з Delphi можно её сделать - с некоторыми оговорками. И без всяких нахрен DDK - это просто Набор заголовков.
← →
tesseract (2004-05-22 19:35) [37]На http:\\www.Wasm.ru появилась статья по "анализу" HASP. Там хорошо описаны механизма перехвата данных по DeviceIOcontrol
← →
Артем Герасимов (2004-05-22 23:17) [38]2>> tesseract
>>Скорей всего Sys- устанавливает новый драйвер, и он
>>великолепно светиться в реестре. И если оно драйвер, то
>>DeveciIOControl тебе поможет.
Да, это драйвер, и в реестре он светится естественно. загружается динамически (это легко можно сделать на делфи).
Перехватом DeveciIOControl мало добьешься в данном случае. Проще дизассемблировать с помощью IDA... Но это тема уже не данного топика.
Хотел бы я посмотреть на того человека, который решиться написать драйвер-монитор порта на делфи :), ведь об этом и шла речь...
----
Артем Греасимов
http://www.aggsoft.com
← →
Павел (2004-05-23 13:42) [39]Да, господа, далеко вы зашли :) Позвольте присоединиться.
1. Написать дравер (т.е. sys или vxd) на Delphi нельзя.
2. Использовать sys или vxd в Delphi можно и нужно. Для этого он открывается через CreateFile, и потом к нему обращаются через DeviceIoControl или просто через ReadFile, WriteFile. В зависимости от того, какую функцию используют в драйвере вызывается соответствующий обработчик.
3. PortMon от сисинтерналсов использует драйвер. Просто он заложен в ресурсы. При загрузке программы он создается как файл и загружается.
4. Кому интересно про драйвера ищут книжку В.П. Солдатова "Программирование драйверов Windows" изд. Бином. Кому интересно про порты ищут книжку П.В. Агуров "Последовательные интерфейсы. Практика программирования" изд. БХВ-Питер. И то и другое легко найти на озоне или book.ru. Или пошукать по магазинам.
← →
tesseract (2004-05-23 16:07) [40]Конечно писать дрова на делфе не рекомендуется (на С кстати тоже)а гнидой ты будешь полгода гонять код понимая все вызовы. Но DeviceIOcontrol это стандартная ф-я драйвера - через неё все работают, главное понять ЯК. Так что гнидой лучше как раз сам exe помучить.
Страницы: 1 2 вся ветка
Текущий архив: 2004.07.04;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.052 c