Книга: 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 |
Никто не отменил запрос перехода в приостановленный режим. Система скоро будет приостановлена. |
- Глава 11. Соединения точка-точка и ретрансляторы
- Оптимизация сетевого трафика
- Изменения оптимизатора, направленные на совместимость
- Другие изменения в 7-й версии InterBase
- Простейшие события
- 7.3. Порядок заключения, изменения, расторжения договоров
- 2. Операции декартового произведения и естественного соединения
- 4. Варианты операций соединения
- 5. Операции внутреннего соединения.
- 6. Операция естественного соединения.
- 7. Операция левого внешнего соединения.
- 8. Операция правого внешнего соединения.