Книга: C# для профессионалов. Том II

Изменения сетевого соединения и события электропитания

Изменения сетевого соединения и события электропитания

В Windows 2000 не требуется, чтобы система перезагружалась так часто, как это было необходимо в Windows NT; например, не нужно перезагружать систему, когда изменяется адрес IP, — служба получает события при смене адреса и действует соответственно. Windows 2000 посылает следующие управляющие коды службам, когда изменяется сетевое соединение:

Управляющий код
SERVICE_CONTROL_NETBINDADD Доступен новый компонент для соединения.
SERVICE_CONTROL_NETBINDREMOVE Компонент для соединения был удален. Необходимо заново считать информацию соединения и отсоединиться от удаленного компонента.
SERVICE_CONTROL_NFTBINDENABLED Ранее отключенное соединение снова включено.
SERVICE_CONTROL_NETBINDDISABLE Ранее включенное соединение теперь отключено.

Если служба использует соединение, необходимо заново прочитать информацию соединения и удалить соединения, которые стали недоступными. Служба реагирует на сетевые изменения, поэтому перезагрузка не требуется.

Windows 2000 добавляет также увеличенную поддержку управления электропитанием. Существует поддержка для перевода системы в нерабочее состояние — память записывается на диск, поэтому возможна более быстрая начальная загрузка системы. Также возможно временно остановить машину, чтобы сократить потребление электроэнергии, при этом система в случае необходимости автоматически пробуждается.

Для всех событий электропитания служба получает управляющий код SERVICE_CONTROL_POWEREVENT с дополнительными параметрами. В параметре отражена причина события. Код причины может говорить о разряженности батареи, о том, что система переходит в приостановленное состояние, или об изменении статуса электропитания. В зависимости от кода причины служба должна замедлить скорость, приостановить фоновые потоки выполнения, закрыть сетевые соединения, закрыть файлы и т.д.

Классы в пространстве имен System.ServiceProcess также имеют поддержку для этих свойств Windows 2000 Служба конфигурируется так, чтобы она реагировала на события паузы и продолжении с помощью свойства CanPauseAndContinue, и задается свойство для управления электропитанием: CanHandlePowerEvent. Службы Windows 2000, которые управляют электропитанием, регистрируются в SCM с помощью метода API Win32 RegisterServiceCtrlHandlerEx().

Задавая значение CanHandlePowerEvent как True, метод

protected virtual bool OnPowerEvent(PowerBroadcastStatus power Status);

будет вызываться, как только изменится статус электропитания. Некоторые из значений, получаемые из PowerBroadcastStatus, перечислены ниже в таблице:

Значение powerStatus Описание
BatteryLow Слабый заряд батареи. Необходимо сократить функционирование службы до минимума.
PowerStatusChange Произошло переключение электропитания от батареи на внешний источник, или мощность батареи опустилась ниже допустимого значения и т.д.
QuerySuspend Полномочия системных запросов перешли в приостановленный режим. Можно отказаться от полномочий или приготовиться к переходу в приостановленный режим, закрывая файлы, разъединяя сетевые соединения и т.д.
QuerySuspendFailed Переход в приостановленный режим был отвергнут системой. Можно продолжать с той же функциональностью.
Suspend Никто не отменил запрос перехода в приостановленный режим. Система скоро будет приостановлена.

Оглавление книги


Генерация: 1.543. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз