![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как остановить работу с ком портом?
ctapik © (2003-07-07 21:49:00)
На машине стоит Win NT/2000 необходимо запретить/разрешить работу с определенным ком портом. Заранее благодарен.
Forint (2003-07-17 17:24:00) [1]
Лучший чпособ запрета работы с портом - открыть его самому! :-))
В этом способе, конечно, есть и недостатки, но куда без них...
Nucl (2003-07-11 16:26:00) [2]
ну а что тебе мешает просто инициализировать новый порт аля com8 винда его по идее сделает виртуальным (могу ошибаться)
ctapik (2003-07-08 21:56:00) [3]
Неуж то никто не знает? Сгодится и на С++
ctapik (2003-07-08 08:57:00) [4]Объясню поподробнее. Заходим Device manager/Ports (Com & LPT)/communication port (com1)Нажимаем правой кнопкой мыши на нем и видим в меню строчку Disable. Нажимаем, в результате считается что ком порт не работает. Так же можно сделать и enable. Вопрос в том, как это сделать програмным путем. Необходимо чтобы это работаль только под NT/2000/XP
NightAngel (2003-07-08 01:29:00) [5]
> ctapik © (07.07.03 21:49)
Вот насчет того, чтобы ПЕРЕХВАТИТЬ ЗАПИСЬ В ПОРТ, я не знаю, и не думаю, что такое возможно. Может быть есть какие-то другие способы, но о них мне ничего неизвестно.
Возможно так:
Для перехвата обращений к памяти аппаратно используются регистры DR0-DR3. Так вот, для перехвата обращений к портам в/в исп. регистр DR7 (управляющий регистр), в котором (если установлен флаг DE в CR4) поля R/W0 - R/W3 (соотв. отладочн. регистрам DR0-DR3) отвечают за след. действия:
00 - бряк на исполнение инструкций
01 - бряк на запись данных
10 - бряк на обращение к портам в/в
11 - бряк на чтение/запись данных
Вся эта красота работает только на Pentium"ах. На 386 и 486 DE сброшен, и RW интерпретируются точно так же, только в случае 10 состояние неопределено.
Всё это только теория, на практике не проверял, но думаю, что никаких ограничений здесь быть не должно.
bestix (2003-07-07 23:17:00) [6]
Поподробнее. Откуда запретить?