OSDev http://osdev.su/ |
|
Как выключить/перезагрузить машину? http://osdev.su/viewtopic.php?f=6&t=314 |
Страница 1 из 2 |
Автор: | asmforce [ 01 мар 2010, 22:41 ] |
Заголовок сообщения: | Как выключить/перезагрузить машину? |
Как выключить/перезагрузить машину через ACPI? Как с ним работать? Заранее спасибо. |
Автор: | SII [ 02 мар 2010, 03:20 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
Ну Вы и вопрос задали... Для начала изучить соответствующие разделы спецификации ACPI, что, учитывая их объём, займёт немало времени :) Лично я эту задачу никогда не решал, поэтому ответить в данный момент не могу. Правда, учинить перезагрузку можно (по крайней мере, раньше можно было) без всякого ACPI -- через контроллер PS/2 (см, например, здесь: http://ru.osdev.wikia.com/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0_PS/2). |
Автор: | KIV [ 02 мар 2010, 16:56 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
http://a2os.org.ua/forums/topic.php?forum=10&topic=4 Вот. Там рассказывается как проще всего выключить компьютер через ACPI. А перезагрузка через контроллер PS/2 работает и по сей день. Вот так: Код: mov al, 0xFE
out 0x64, al |
Автор: | asmforce [ 08 мар 2010, 18:29 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
Теперь сам понимаю, о чем спросил. Извините, что отвлек. А за ответы спасибо. |
Автор: | asmforce [ 19 фев 2011, 15:56 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
Мимо проходил, вспомнил, что недавно нашел способ отключения через APM: // Проверено на VirtualBox (если что, версия 4.0.2); Отключение работает. StandBy, Suspend игнорируются; // INT 0x15 // The Advanced Power Management Set Power State BIOS function is called to place the system // in the requested state. The system BIOS only responds to power device ID = 0x0001 (system // BIOS). Input Parameters: AH - 0x53, indicating an Advanced Power Management Function. AL - 0x07, indicating Set Power State Subfunction. BX - 0x0001, indicating system BIOS. CX - System State ID, as follows: 0x0000 - Ready (not supported for device ID 0x0001). 0x0001 - Standby. 0x0002 - Suspend. 0x0003 - Off (not supported for device ID 0x0001). Output Parameters: CY - set if failure, else clear if success. AH - error code, as follows: 0x01 - power management functionality disabled. 0x09 - unrecognized device ID. 0x0a - parameter valud in CX out of range. 0x60 - cannot enter requested state. 0x86 - APM not supported. |
Автор: | phantom-84 [ 19 фев 2011, 20:30 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
APM - прошлый век! Я от него полностью отказался. http://www.wasm.ru/forum/viewtopic.php?id=21777 |
Автор: | pavia [ 19 фев 2011, 20:42 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
То есть ты написал виртуальную машину ACPI? |
Автор: | phantom-84 [ 19 фев 2011, 23:01 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
Нет, пока что делаю первые шаги в этом направлении, ну и в крайнем случае использую сообщение "Теперь питание компьютера можно отключить." |
Автор: | SII [ 20 фев 2011, 00:31 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
Просто нет смысла изучать устаревший стандарт, который поддерживается только для совместимости со старым ПО. А посему, если уж заморачиваться, что с ACPI, но никак не с APM. |
Автор: | asmforce [ 20 фев 2011, 00:52 ] |
Заголовок сообщения: | Re: Как выключить/перезагрузить машину? |
phantom-84 писал(а): Я не спорю. `В будущем` тоже `планирую` использовать ACPI для управления питанием, но пока можно и это юзать. Кто-то использует перезагрузку через контроллер клавиатуры, что тоже ненадолго. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |