Помощь - Поиск - Пользователи - Календарь
Полная версия: Память
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
dark0ut
Реально ли подвесить комп через pascal
А то я вчера значит
GetMem(p,64000);
а Dispose - соседям оставил;)
такое началось
страница в IE открывалась 5 минут и т.д.
Возможно такое?
mj
тормознуть можно, а повесить разве что 98'ую...
Vit
Win 95/98/ME намертво вешает такой код

Код
Repeat
 asm
   cli
 end;
Until False;


или можно запустить (ShellExecute) файл с именем "c:concon"

С NT/2000/XP как и ожидалось такие номера не пройдут.
mj
Цитата
Win 95/98/ME намертво вешает такой код

Repeat
 asm
   cli
 end;
Until False;


или можно запустить (ShellExecute) файл с именем "c:concon"

С NT/2000/XP как и ожидалось такbt номера не пройдут.

Поясню тем кто не знает asm, cli обозначает отрубить все апаратные прерывания... Под NT эту команду процесор почемуто просто не замечает...
Vit
Цитата
Под NT эту команду процесор почемуто просто не замечает...


Ядро NT имеет собственные процедуры обработки для команд Jmp, Cli, Int и некоторых других. Поэтому если программа не является сервисом, то вместо этих команд выполняются специальные процедуры ядра NT которые эмулируют эти команды.
BlackShadow
Ну, про 9х говорить нечего. Его повесить крайне просто. Например :
asm
 CLI
 HLT
end - запрещаем прерывания и делаем паузу до их возникновения. Для надёжности можно загнать в цикл. А вот с NT надо быть хитрее. У меня только 2 варианта реализации :
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.
2). Коварно. Нахально. Неожиданно. Переводим процессор в реальный режим, перехватываем все прерывания и творим, что хотим. Одно "но". Даже у меня и моего "товарища" возникли проблемы в реализации этого метода. Надо код оптимизировать буквльно на несколько тактов (исходя из подопытного Celeron-330), а вот как...

А вот испоьзуя BP или что либо иное под Real-Time или Protected Mode такого не добиться. А жаль.
mj
Цитата
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.

Ну взять на себя полную загрузку программа может ухитрится, это на самом деле легко делается через ловушки (пример я увидел на всем известном переводчике LingoWare)...
Но сама система то при этом не виснет и рано или поздно программа будет выгружена... smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.