мгновенный шатдаун

Тема в разделе "WASM.BEGINNERS", создана пользователем afybc, 23 сен 2006.

  1. afybc

    afybc New Member

    Публикаций:
    0
    Возможно ли программно реализовать мгновенное выключение компа? Если нет, то каким образом можно сократить это время до минимума?
     
  2. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Есть 3 пути:
    1) kernel32!ShutdownSystemEx
    Скорость: ~30 сек - 2 мин
    Плюсы: все приложения корректно завершаются системой.
    Минусы: система выключается офигенно долго.
    2) ntdll!NtShutdownSystem
    Скорость: ~1-3 сек
    Плюсы: все ring0 приложения (драйвера и ядро ОС) корректно выгружаются, юзер обсирается от испуга.
    Минусы: все ring3 приложения летят в голубую даль
    3) выход в ring0, биосовские прерывания
    Скорость: ~0.01-0.1 сек
    Плюсы: юзер умирает от обширного инфаркта.
    Минусы: так недолго и систему убить, написание кода под ring0 (тем более без драйвера) - дело, скажем, не из легких.
     
  3. afybc

    afybc New Member

    Публикаций:
    0
    Спасибо! Попробовал по пункту 2 - действительно система вырубается где-то за 1-2 сек.
    Теперь буду разбираться с 3-им пунктом.
     
  4. Sergei_2006

    Sergei_2006 New Member

    Публикаций:
    0
    А код или сырец выложить не можете?
     
  5. apple

    apple Виктор

    Публикаций:
    0
    Держи драйвер
     
  6. apple

    apple Виктор

    Публикаций:
    0
    Там все просто
    Код (Text):
    1. NTSTATUS DriverEntry (PDRIVER_OBJECT  pDriverObject,
    2.                       PUNICODE_STRING pusRegistryPath)
    3.     {
    4.     return *((NTSTATUS *) 0);
    5.     }
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Это BSOD.
    А Sergei_2006 просит пример работы NtShutdownSystem.
    Код (Text):
    1. ZwShutdownSystem(ShutdownPowerOff);
     
  8. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Интересно было бы узнать, что за прерывания BIOS из ring0
    можно заюзать. Как то бредово звучит.

    Самое простое,имхо, mov al,0FEh out 64h,al.
    Можно еще INIT самому себе послать через APIC.
    Правда и в том и в другом случае нужно проверять (если APIC
    включен и на машине 1 проц),что проц у тебя bootstrap. Иначе
    проц уйдет в глубокий даун, в котором даже SMI,NMI не ловит
     
  9. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Сори, речь шла о выключении, а не о перезагрузке.
    Предыдущий пост можно не читать.
     
  10. SysProger

    SysProger New Member

    Публикаций:
    0
    Как можно завершить работу системы, находясь в r0?
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Код (Text):
    1. WinExec('shutdown -f -s -t 0', 0)
     
  12. ajak

    ajak New Member

    Публикаций:
    0
    Залейте ещё раз файл, интересно посмотреть, а как через биос можно? Подскажите?
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    max7C4
    иногда полезно читать вопрос прежде, чем отвечать)
     
  14. max7C4

    max7C4 New Member

    Публикаций:
    0
    Great
    вы не поняли шутку юмора
     
  15. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    max7C4
    делфи.
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    NtShutdownSystem экспортируется. HalReturnToFirmware() тоже.
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Очень напряжно это тебе будет.
    Через APM можно (int 15h).
    Варианта два:
    1. есть точка входа для защищённого режима - ей и пользоваться (может отсутствовать)
    2. создавать V86 задачу, и в ней вызывать точку входа для реального режима (int 15h)

    Если драйвера никогда не писал - лучше начать с чего-нибудь по проще :)
     
  18. Microedition

    Microedition Active Member

    Публикаций:
    0
    На сайте в разделе загрузок я видел прогу shutdown97. На офф. сайте фасма она тоже есть. Выключает комп за 1~3 сек. Весит 97 байт.
     
  19. Semiono

    Semiono Member

    Публикаций:
    0
    У меня комп даже psshutdown Руссиновича не рубит :)
    От звуковой карты процесс никак ни свалить!
    Через пуск выключает нормально. Пуск - всемогущ! ;-
     
  20. Semiono

    Semiono Member

    Публикаций:
    0
    Я даже доков на msdn не смог найти! ZwShutdownSystem - ???