Impedindo o logoff ou a suspensão durante uma gravação
Se as precauções adequadas não forem tomadas dentro de um aplicativo, é possível que um usuário faça logoff durante uma operação de gravação. Isso levará à interrupção do processo de gravação, o que pode resultar em perda de dados e possivelmente inutilizar o disco.
Para evitar esse problema, o aplicativo deve processar a mensagem WM_QUERYENDSESSION que é entregue antes de fazer logoff. Se o aplicativo receber essa mensagem durante a execução de uma operação de gravação, retorne FALSE para cancelar o procedimento de logoff. Se o aplicativo permitir que o usuário decida se deseja continuar fazendo logoff, um aviso deverá ser fornecido indicando que o usuário perderá dados.
Transições de energia durante o processo de gravação também podem criar problemas potenciais no sucesso de uma atividade de gravação. Prevenir essas complicações durante o processo de gravação requer que um aplicativo esteja ciente de quando as transições de energia estão prestes a ocorrer. Isso é feito habilitando o aplicativo a processar a mensagem WM_POWERBROADCAST. Aplicativos desenvolvidos para Windows XP ou Windows Server 2003 podem retornar BROADCAST_QUERY_DENY em resposta a PBT_APMQUERYSUSPEND, impedindo a suspensão durante o processo de gravação.
Devido a alterações no Modelo de Gerenciamento de Energia para Windows Vista e Windows Server 2008, o evento PBT_APMQUERYSUSPEND não é mais entregue aos aplicativos. Em vez disso, o evento PBT_APMSUSPEND é entregue, fornecendo dois segundos para que um aplicativo se prepare para a transição.
Como resultado dessas alterações, é recomendável que os aplicativos chamem a função SetThreadExecutionState para evitar um tempo limite ocioso do sistema que normalmente resulta na transição para Suspender. É importante lembrar que chamar essa função com os sinalizadores apropriados definidos apenas evitará que o sistema fique ocioso, não uma suspensão em andamento.
Tópicos relacionados