Prevenzione della disconnessione o sospensione durante un burn

Se non vengono effettuate precauzioni appropriate all'interno di un'applicazione, è possibile che un utente si disconnette durante un'operazione di burn. Ciò porta all'interruzione del processo di masterizzazione, che può comportare la perdita di dati ed eventualmente rendere inutilizzabile il disco.

Per evitare questo problema, l'applicazione deve elaborare il messaggio WM_QUERYENDedizione Standard SSION recapitato prima di disconnettersi. Se l'applicazione riceve questo messaggio durante l'esecuzione di un'operazione di burn, restituire FAL edizione Standard per annullare la procedura di disconnessione. Se l'applicazione consente all'utente di decidere se continuare la disconnessione, verrà visualizzato un avviso che indica che l'utente perderà i dati.

Le transizioni di alimentazione durante il processo di burn possono anche creare potenziali problemi nel successo di un'attività di burn. Per prevenire queste complicazioni durante il processo di combustione, è necessario che un'applicazione sia a conoscenza di quando le transizioni di alimentazione stanno per verificarsi. Questa operazione viene eseguita consentendo all'applicazione di elaborare il messaggio di WM_POWERBROADCAST . Le applicazioni sviluppate per Windows XP o Windows Server 2003 possono restituire BROADCAST_QUERY_DENY in risposta a PBT_APMQUERYSUSPEND, impedendo la sospensione durante il processo di burn.

A causa delle modifiche apportate al modello di risparmio energia per Windows Vista e Windows Server 2008, l'evento PBT_APMQUERYSUSPEND non viene più recapitato alle applicazioni. Viene invece recapitato l'evento PBT_APMSUSPEND , fornendo due secondi per preparare un'applicazione per la transizione.

In seguito a queste modifiche, è consigliabile che le applicazioni chiamino la funzione SetThreadExecutionState per evitare un timeout di inattività del sistema che normalmente comporta la transizione a Suspend. È importante ricordare che la chiamata a questa funzione con i flag appropriati impostati impedirà solo l'inattività del sistema, non una sospensione in corso.

Uso di IMAPI

SetThreadExecutionState