![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
kindDevil |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
Проблема в следующем:
чтение значения с порта проводиться ассемблерной вставкой в Delphi; если использовать Win9x, то проблем не возникает, но если пользоваться NT ядром, то выдается сообщение, которое гласит что-то вроде того, что низкоуровневый доступ к портам компьютера запрещен. Как обойти эту защиту, и существует ли какая-либо стандартная процедура или функция чтения с портов в Delphi? ![]() |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
gwiopm
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
В NT запрещен прямой доступ к устройствам.
Нужно использовать функции, предоставленные операционной системой. Раньше (в доNT времена) это допусклось, но теперь нужно действовать по правилам MS. |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Snowy ни каких правил... нет. Енто для стабильности и надежности и все такое.
PS: Как уже сказал выше используй драйвер gwiopm или к примеру можеш использывать свободный GDT дескриптор для того что бы свой обработчик запустить с теми привелегиями... которые позволят тебе использывать порты напрямую. -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
Guest |
|
|||
Unregistered |
а с чем этот драйвер едять?
|
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
![]() PS: Вот топ: http://forum.vingrad.ru/index.php?showtopic=73002 в присоединенке поста есть компонент TDriver. В данный компонент gwiopm(и необходимые функции для работы: SetPort, PortInOut) встроен. Устанавливай и используй. Через SetPort открываеш(получаеш разрешения ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
JoyEx |
|
|||
![]() Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
Из USERMODE с портами лучше всего не работать! У Вашего потока может закончиться выделенный ему квант времени и он может не успеть завершить работу с I/O (с аппаратурой). Код в kernel-mode при IRQL > DISPATCH_LEVEL не может быть прерван диспетчером потоков. IRQL - это уровень запроса прерывания (0-31), не путайте с DOS IRQ0-15, в Windows IRQL реализована НЕ аппаратно, а программно (текущий IRQL процессора храниться в hal.dll).
-------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |