Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Запрет доступа к определенным портам на линейке Windows NT   Найти похожие ветки 

 
Ученик ©   (2003-08-26 23:06) [0]

На незначительное время, в частности 1F0 (+6, +7), 170

Может кто-нибудь знает и подскажет название функции или нескольких функций или ссылку на форум, где этот вопрос можно задать ?

Каким образом реализуется в драйверах ?

В примерах DDK ничего подобного (в плане блокировки) не наблюдается :-(


 
NightAngel ©   (2003-08-27 00:47) [1]

Можно перехватить обращение к портам см. здесь http://delphi.mastak.ru/cgi-bin/forum.pl?id=1061814394&n=2
А также Manual на любой из процессоров, начиная с Pentium, про отладочные регистры.


 
MBo ©   (2003-08-27 07:26) [2]

Спросить можно на RSDN.
Запрет доступа встречал только в TVicHW или TVicLPT ( http://www.entechtaiwan.com/tools.htm), может, можно отследить, как это делается.


 
Ученик ©   (2003-08-27 23:05) [3]

>NightAngel © (27.08.03 00:47) [1]
Перехват позволяет остановить обращение ?
Какая реакция будет на мое собственное обращение к портам (можно ли будет разобрать свое-чужое) ?

>MBo © (27.08.03 07:26) [2]
Если не затруднит, о вызове какой функции, которая блокирует обращение, в TVicHW идет речь ?


 
MBo ©   (2003-08-28 08:23) [4]

>Ученик
Увы, я не разбираюсь в этом, просто вспомнил, что встречал когда-то в TVicHW функцию AcquirePort (монопольный захват порта).


 
Digitman ©   (2003-08-28 08:24) [5]


> Какая реакция будет на мое собственное обращение к портам
>


точно такая же, как и на "чужое".

т.е. во избежание входа в бесконечную рекурсию первым делом в обработчике отл.прерывания следует привести упр. и отл. регистры (см. NightAngel © (27.08.03 00:28) [3] в http://delphi.mastak.ru/cgi-bin/forum.pl?id=1061814394&n=2) в исходное состояние

концептуально это выглядит так :

после собственных обращений к порту (в ходе исполнения процедуры прерывания) перед возвратом из обработчика прерывания, если вновь требуется контроль за "чужими" обращениями к порту, регистры вновь устанавливаются указанным образом


 
Ученик ©   (2003-08-28 22:08) [6]

>MBo © (28.08.03 08:23) [4]
Наверно, идет речь о AcquireLPT, к сожалению, судя по названию это для LPT
>Digitman © (28.08.03 08:24) [5]
Почему-то кажется, что после "...привести упр. и отл. регистры в исходное состояние..." может произойти чужое обращение к порту, особенно, если данный порт активно используется, например, идет поиск на диске


 
Digitman ©   (2003-08-29 09:03) [7]


> Ученик


с чего бы ему произойти ? если твой обработчик прерывания работает в PL0, он в состоянии запретить на время своей работы любые прочие прерывания.
а при запрещенных прерываниях переключение задач не произойдет


 
Ученик ©   (2003-08-30 21:02) [8]

>Digitman © (29.08.03 09:03) [7]
"..запретить прерывания...", это для Windows NT нормально ? не "криминал" ? Т.е. можно использовать cli, sti ?


 
Polevi ©   (2003-09-01 09:35) [9]

>Ученик © (30.08.03 21:02) [8]
обработчик прерывания запрещает прерывания - обычная практика, без этого никак


 
Digitman ©   (2003-09-01 16:16) [10]


> Ученик


см.
> Polevi © (01.09.03 09:35)


иначе представь себе катастрофическую ситуацию :

некое устр-во для исполнения некоего действия должно получить
секвенцию из двух out-инструкций : первая устанавливает активным внутренний регистр адреса, вторая шлет данные в адресованный предыдущей инструкцией внутренний регистр данных

возникло прерывание. в обработчике установили регистр адреса.
следом ожидалось послать значение в рег-р данных, и тут возникло другое прерывание ... в его обработчике рег-р адреса устанавливается иным ... после возврата из второго обработчика в первый отложенная (из-за вложенного прерывания) запись в рег-р данных вызовет непредсказуемую ситуацию, ибо рег-р адреса вполне мог и измениться в обработчике вложенного прерывания


 
Ученик ©   (2003-09-01 22:50) [11]

>Polevi © (01.09.03 09:35) [9]
Digitman © (01.09.03 16:16) [10]
Для чтения из портов используютcя функции READ_PORT_????, для записи WRITE_PORT_???? (DDK), случайно, не в курсе, какие функции необходимо использовать для запрещения/разрешения прерываний ?


 
NightAngel ©   (2003-09-01 22:51) [12]

> Ученик ©
> В примерах DDK ничего подобного (в плане блокировки) не > наблюдается :-(


В дополнение ко всему вышесказанному. Я не знаю как, и в каком DDK Вы смотрели, но информация об этом там есть (в плане блокировки). Специально посмотрел.


 
NightAngel ©   (2003-09-01 22:51) [13]

> Ученик ©
> В примерах DDK ничего подобного (в плане блокировки) не > наблюдается :-(


В дополнение ко всему вышесказанному. Я не знаю как, и в каком DDK Вы смотрели, но информация об этом там есть (в плане блокировки). Специально посмотрел.


 
NightAngel ©   (2003-09-01 22:56) [14]

> Ученик © (01.09.03 22:50) [11]

Ищите по: Port Driver Services.


 
NightAngel ©   (2003-09-01 23:28) [15]

> случайно, не в курсе, какие функции необходимо использовать для запрещения/разрешения прерываний ?

cli/sti ?

Да и ещё... Не факт, что какой-то из драйверов не будет работать
с портами напрямую, ч/з - in/out, так-что делайте выводы.


 
Ученик ©   (2003-09-02 06:57) [16]

>NightAngel © (01.09.03 22:51) [12]
Используется Windows NT DDK 4.0, если можно (и не затруднит), конкретнее, о вызове каких функций идет речь, надеюсь это, не великая тайна ?

На всякий случай, речь не идет о драйвере какого-либо устройства, речь идет о чтении/записи произвольного порта.


 
Polevi ©   (2003-09-02 10:16) [17]

может не в тему но чтото всплывает в голове насчет запрета аппартных прерываний со времен Доса - cli + out 20h,20h ??

>Ученик © (02.09.03 06:57) [16]
чем не устраивает in out ?


 
Digitman ©   (2003-09-02 13:39) [18]


> Ученик


да какие еще ф-ции ?! если ты имеешь СPL = 0, то манипулируй прерываниями непосредственно инструкциями cli/sti, портами - непосредственно инструкциями in[s], out[s] !)

более того - при СPL = 0 ты можешь обращаться и напрямую к физической памяти, и опять же - безо всяких на то ф-ций


 
Ученик ©   (2003-09-03 07:07) [19]

>Polevi © (02.09.03 10:16) [17]
>Digitman © (02.09.03 13:39) [18]
Спасибо, за ответы

>Модератор
Тема, наверно, закрыта



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

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
3-40982
Виталий Панасенко
2003-10-16 18:22
2003.11.13
LocalSQL


6-41858
SidDN
2003-09-10 14:10
2003.11.13
Проблема с блок. сокетами!!!!


3-40842
Jony
2003-10-21 18:18
2003.11.13
Как программно снять выделение записи в DBGridEh?


3-40818
Man
2003-10-25 15:47
2003.11.13
Как в SQL выгребсти записи с n1 по n2


14-41880
Peter
2003-10-21 17:31
2003.11.13
Scaner2003