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

Discussion in 'WASM.BEGINNERS' started by afybc, Sep 23, 2006.

  1. afybc

    afybc New Member

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

    mix_mix Михаил

    Blog Posts:
    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

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

    Sergei_2006 New Member

    Blog Posts:
    0
    А код или сырец выложить не можете?
     
  5. apple

    apple Виктор

    Blog Posts:
    0
    Держи драйвер
     
  6. apple

    apple Виктор

    Blog Posts:
    0
    Там все просто
    Code (Text):
    1. NTSTATUS DriverEntry (PDRIVER_OBJECT  pDriverObject,
    2.                       PUNICODE_STRING pusRegistryPath)
    3.     {
    4.     return *((NTSTATUS *) 0);
    5.     }
     
  7. n0name

    n0name New Member

    Blog Posts:
    0
    Это BSOD.
    А Sergei_2006 просит пример работы NtShutdownSystem.
    Code (Text):
    1. ZwShutdownSystem(ShutdownPowerOff);
     
  8. Medstrax

    Medstrax Забанен

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

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

    Medstrax Забанен

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

    SysProger New Member

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

    max7C4 New Member

    Blog Posts:
    0
    Code (Text):
    1. WinExec('shutdown -f -s -t 0', 0)
     
  12. ajak

    ajak New Member

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

    wasm_test wasm test user

    Blog Posts:
    0
    max7C4
    иногда полезно читать вопрос прежде, чем отвечать)
     
  14. max7C4

    max7C4 New Member

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

    Com[e]r Com[e]r

    Blog Posts:
    0
    max7C4
    делфи.
     
  16. Clerk

    Clerk Забанен

    Blog Posts:
    0
    NtShutdownSystem экспортируется. HalReturnToFirmware() тоже.
     
  17. cppasm

    cppasm New Member

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

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

    Microedition Active Member

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

    Semiono Member

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

    Semiono Member

    Blog Posts:
    0
    Я даже доков на msdn не смог найти! ZwShutdownSystem - ???