· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Работа железом и не только...

Посл.отвђт Сообщенiе


Дата: Май 7, 2004 13:49:42

Доброго времени суток, господа.
Не подскажете как можно реализовать следующие задачи:
- отключение/включение монитора;
- остановка/запуск жестких дисков(так как это делает системный "гаситель");
- перевод ЦПУ в режим STANDBY и обратно;
- отключение/включение музыки.
Задача, как я понимаю не простая, но буду очень рад если вы поможете мне хоть с чем-то из этого. А пишу я что-то вроде того самого системного гасителя.

Заранее очень благодарен!


Дата: Май 7, 2004 14:01:47


Дата: Май 7, 2004 14:06:39

Забавно :)
Ну а все-таки? Может я не совсем корректно выразился, имелось ввиду не на физическом плане выключение а на программном, т.е. монитор просто погасить, музыку запретить, жесткие диски сам пока не понимаю как останавливают, но система это делает. А с поцессором так я вообще в панике, абсолютно без понятия как его можно притормозить, СЛИП что-ли или что...


Дата: Май 8, 2004 02:20:31

Tristania
А не проще ли через API послать его в Hibernate? Это же можно сделать даже через rundll, не прибегая к программированию.


Дата: Май 10, 2004 12:13:39

насчёт cpu - HLT
насчёт винтов есть впециальные комманды управления энергопотреблением и шумом
насчёт монитора поройся в RSDN, там как то через WM_SYSCOMMAND было дело, я делал это как то на низком уровне, зайди на www.codenet.ru и отыщи исходник моего старого вируса hellicon, там это делалось, отключение музыки, тоже смотри в RSDN, там в статьях Зайцева этот вопрос освещался
а вообще http://www.nondot.org/sabre/
там кое что есть интересное


Дата: Май 10, 2004 15:42:15

CARDINAL
Дык, в user-mode, кажись: HLT, не останавливает процессор, а действует только на процесс, в котором она выполнилась... Если бы, это было не так, то любой процесс мог бы нарушить работу всей системы...


Дата: Май 10, 2004 16:41:28 · Поправил: Oleg_SK

Tristania
Тебе надо уточнить: для какой оси ты хочешь написать программку.
- отключение/включение монитора;
Вот так это делается под Windows 98:
invoke SendMessage, hWin, WM_SYSCOMMAND, SC_MONITORPOWER, NULL ; выключить монитор
invoke SendMessage, hWin, WM_SYSCOMMAND, SC_MONITORPOWER, -1; включить монитор
под Windows 2000+, этот вариант не пройдет.
- перевод ЦПУ в режим STANDBY и обратно;
Ось не позволит тебе непосредственно остановить процессор. Это можно сделать только в рамках перевода компа в режим энергосбережения: SUSPEND (но, не HIBIRNATE). Об обратной процедуре я скажу позже.
- остановка/запуск жестких дисков(так как это делает системный "гаситель")
IMHO, это можно сделать только в рамках перевода компа в режим энергосбережения: SUSPEND или HIBIRNATE. Об обратной процедуре я скажу позже.
- отключение/включение музыки.
IMHO, для этого тебе нужно юзать микшер... Я с ним не работал, поэтому больше ничего сказать не могу.

Как вывести комп из режима энергосбережения я точно не знаю. Но подозреваю, что в этом может помочь таймер установленный функцией: SetWaitableTimer (во всяком случае, для режима: SUSPEND).

Учти также то, что если программа пишется под платформу: Windows 2000+, то для того чтобы иметь возможность перевести комп в какой-либо энергосберегающий режим, твоя прога должна получить для этого соответствующие привилегии... О привилегиях можно узнать из статей на сайте www.rsdn.ru .
Так-же, я думаю, тебе будет полезно почитать спецификацию концепции: OnNow. Где ее можно найти я не помню, так что ищи сам... В этой доке подробно описаны все режимы энергосбережения.


Дата: Май 10, 2004 17:42:26


Дата: Май 11, 2004 14:25:06

Oleg_SK
".. переводит процессор в состояние останова, из которого его может вывести только аппаратное прерывание или перезагрузка...
Команда выполняется только в реальном режиме или с CPL=0." Зубков С.В. "Ассемблер для Дос, WIndows и Unix"

HAL!HalProcessorIdle
А кто тебе про UserMode тут говорил интересно ??? Получишь свой заслуженный #GP


Дата: Май 11, 2004 14:52:02

Спасибо, пошел писать.... :)


Дата: Май 11, 2004 18:05:37

CARDINAL
А кто тебе про UserMode тут говорил интересно ???
В вопросе вообще нет информации о том, в каком кольце защиты (user-mode or kernel-mode) нужно выполнить требуемые действия. Я предположил, что это user-mode...


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089