![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Привет всем!
Интересует как можно помигать диодами NUM_LOCK, CAPS_LOCK, SCROLL_LOCK. НО, реализовать это нужно через порт клавиатуры, а не с помощью Post/Send message. Т.е. на самом низком уровне. Вот. Буду очень благодарен, если кто нибудь сможет помочь. Спасибо.
|
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
Способ для 9x (на NT не работает):
Способ для NT (на 9x не работает):
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Poseidon, спасибо конечно, но это что, работа через порт?
Я имею ввиду напрямую Добавлено @ 23:25 Girder Извини что засоряю форум подобными сообщениями, но поиск не нашёл ничего стоящего... Мож. это я так искал Это сообщение отредактировал(а) NUCLEuS - 8.4.2006, 23:18 |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
А... ты об ентом. Но енто тоже имхо... обсуждалось. Искать лень... так что сделай типо так.
Скачиваеш TDriver(см. прикрепленную тему в ентом разделе)... устанавливаеш его... Далее типо так:
PS: Не проверял... -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Girder, спасибо тебе большое
|
|||
|
||||
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Girder,
проверил - не работает Вылетает на Driver1.PortInOut[$60]:=$ed; Если убрать эту строку, то вылетает на следующей (Driver1.PortInOut[$60]:=$2;). Говорит External exeption C0000008 Поправка : посмотрел в отладчике - вылет происходит из-за SetPort функции... А если её вызов убрать то будет Error : Privileged instruction. (как я понял эта функция может открывать порты I/O в NT (а я чёт думал что тут без ring0 не обойтись Что тут можно сделать? |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Ну просто там нету задержи... или к примеру можно сделать проверку занятости... т.е. вот так:
PS: Проверил... работает -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Girder, да, работает, спасибо
Но мне как всегда хочется всё сделать самому и на самом низком уровне Поэтому начал разбирать твой компонент и понял что без ring0 тут всё таки не обошлось Насколько я понял, ты загнал свой ring0 драйвер в массив (gwiopm_sys) я подумал что это драйвер потому что первые байты 4D 5A (MZ) как раз PE заголовка. Так вот, это уже Off Topic, но мне очень интересно, как ты написал этот самый драйвер, очень хочется увидеть исходник, я тоже хочу научиться писать ring0 драйвера... И интересно как твой драйвер функционирует? Просто даёт вызвавшему приложению ring0 права? Интересно очень... И, если можешь, дай пожалуйста исходник этого драйвера |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Он не мой.
PS: http://www.wideman-one.com/gw/tech/Delphi/...gwiopm_code.htm http://www.wideman-one.com/gw/tech/Delphi/iopm/ -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| NUCLEuS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Girder,
ок,почитаю А можешь объяснить эти строчки кода
Start Port = $50 End Port = $70 Это ты разрешаешь работу с портами от $50 до $70 вызывающему приложению? Или не так
Это тоже непонятно ты посылаешь на порт $60 (кстати, почему $60?) 11101101, зачем? |
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
1. Вообще-то в TDriver-е енто написано... что делает ента функция.
PS: Модифицируется карта разрешения ввода-вывода. 2. енто команда... Set/Reset Mode Indicators -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| NUCLEuS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Ок, огромное спасибо за всю информацию что ты мне дал
Это сообщение отредактировал(а) NUCLEuS - 10.4.2006, 19:40 |
|||
|
||||
![]()
|
| Правила форума "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. |