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

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

  1. afybc

    afybc New Member

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

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Есть 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
    Регистрация:
    30 июн 2006
    Сообщения:
    73
    Спасибо! Попробовал по пункту 2 - действительно система вырубается где-то за 1-2 сек.
    Теперь буду разбираться с 3-им пунктом.
     
  4. Sergei_2006

    Sergei_2006 New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    30
    А код или сырец выложить не можете?
     
  5. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Держи драйвер
     
  6. apple

    apple Виктор

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

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Это BSOD.
    А Sergei_2006 просит пример работы NtShutdownSystem.
    Код (Text):
    1. ZwShutdownSystem(ShutdownPowerOff);
     
  8. Medstrax

    Medstrax Забанен

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

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

    Medstrax Забанен

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

    SysProger New Member

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

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Код (Text):
    1. WinExec('shutdown -f -s -t 0', 0)
     
  12. ajak

    ajak New Member

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

    wasm_test wasm test user

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

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Great
    вы не поняли шутку юмора
     
  15. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    max7C4
    делфи.
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    NtShutdownSystem экспортируется. HalReturnToFirmware() тоже.
     
  17. cppasm

    cppasm New Member

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

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

    Microedition Active Member

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

    Semiono Member

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

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Я даже доков на msdn не смог найти! ZwShutdownSystem - ???