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

Вниз

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 вся ветка

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

Наверх





Память: 0.55 MB
Время: 0.033 c
3-1086622471
}|{yk
2004-06-07 19:34
2004.07.04
Никто не знает как результаты выводимые dbms_output


14-1087308451
Piter
2004-06-15 18:07
2004.07.04
Открытие URL в браузере в новом окне


1-1087312803
Ivolg
2004-06-15 19:20
2004.07.04
Имя


1-1087820428
zep
2004-06-21 16:20
2004.07.04
StringGrid


14-1087139083
Daniel_
2004-06-13 19:04
2004.07.04
Nero burning rom





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский