Prévention de la fermeture de session ou de la suspension pendant une gravure
Si des précautions appropriées ne sont pas prises dans une application, il est possible qu’un utilisateur ferme une session pendant une opération de gravure. Cela entraîne l’interruption du processus de gravure et de possibles pertes de données. Cela peut éventuellement rendre le disque inutilisable.
Pour éviter ce problème, l’application doit traiter le message WM_QUERYENDSESSION remis avant de fermer une session. Si l’application reçoit ce message lors de l’exécution d’une opération de gravure, retournez FALSE afin d’annuler la procédure de fermeture de la session. Si l’application permet à l’utilisateur de choisir s’il continue la déconnexion, un avertissement, indiquant que l’utilisateur va perdre des données, doit être fourni.
Les transitions Marche/Arrêt pendant le processus de gravure peuvent également créer des problèmes potentiels dans le succès d’une activité de gravure. La prévention de ces complications pendant le processus de gravure nécessite qu’une application sache quand les transitions Marche/Arrêt sont sur le point d’être effectuées. Pour ce faire, l’application peut traiter le message WM_POWERBROADCAST. Les applications développées pour Windows XP ou Windows Server 2003 peuvent retourner BROADCAST_QUERY_DENY en réponse à PBT_APMQUERYSUSPEND, empêchant la suspension pendant le processus de gravure.
En raison des modifications apportées au modèle de gestion de l’alimentation pour Windows Vista et Windows Server 2008, l’événement PBT_APMQUERYSUSPEND n’est plus remis aux applications. L’événement PBT_APMSUSPEND est plutôt remis, fournissant deux secondes pour qu’une application prépare la transition.
En raison de ces modifications, il est recommandé que les applications appellent la fonction SetThreadExecutionState pour empêcher une durée d’inactivité du système, ce qui entraîne généralement la transition vers interrompre. Il est important de se rappeler que l’appel de cette fonction avec l’ensemble approprié d’indicateurs empêche uniquement l’inactivité du système, pas une suspension en cours.
Rubriques connexes