Поделиться через


Предотвращение выхода или приостановка во время ожога

Если в приложении не выполняются надлежащие меры предосторожности, пользователь может выйти из системы во время операции ожога. Это приводит к прерыванию процесса ожога, что может привести к потере данных и, возможно, отрисовке диска непригодным для использования.

Чтобы избежать этой проблемы, приложение должно обработать сообщение WM_QUERYENDSESSION , которое доставлено перед выходом из системы. Если приложение получает это сообщение при выполнении операции ожога, верните значение FALSE , чтобы отменить процедуру выхода. Если приложение позволяет пользователю решить, следует ли продолжать ведение журнала, следует указать предупреждение, указывающее, что пользователь потеряет данные.

Переходы питания во время процесса ожога также могут создавать потенциальные проблемы в успешном выполнении действия ожога. Предотвращение этих осложнений во время процесса ожога требует, чтобы приложение было известно о том, когда происходит переходы питания. Это достигается путем включения приложения для обработки сообщения WM_POWERBROADCAST. Приложения, разработанные для Windows XP или Windows Server 2003, могут возвращать BROADCAST_QUERY_DENY в ответ на PBT_APMQUERYSUSPEND, предотвращая приостановку во время процесса ожога.

Из-за изменений в модели управления питанием для Windows Vista и Windows Server 2008 событие PBT_APMQUERYSUSPEND больше не доставляется приложениям. Вместо этого выполняется PBT_APMSUSPEND событие, предоставляющее два секунды приложения для подготовки к переходу.

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

Использование IMAPI

SetThreadExecutionState