굽기 중 로그오프 또는 일시 중단 방지

애플리케이션 내에서 적절한 예방 조치를 수행하지 않으면 사용자가 굽기 작업 중에 로그오프할 수 있습니다. 이로 인해 굽기 프로세스가 중단되어 데이터가 손실되고 디스크를 사용할 수 없게 될 수 있습니다.

이 문제를 방지하려면 애플리케이션이 로그오프하기 전에 전달되는 WM_QUERYENDSESSION 메시지를 처리해야 합니다. 애플리케이션이 굽기 작업을 수행하는 동안 이 메시지를 수신하는 경우 FALSE를 반환하여 로그오프 절차를 취소합니다. 애플리케이션에서 사용자가 로그오프를 계속할지 여부를 결정할 수 있는 경우 사용자가 데이터를 잃게 됨을 나타내는 경고가 제공되어야 합니다.

굽기 프로세스 중 전원 전환은 굽기 작업의 성공에 잠재적인 문제를 일으킬 수도 있습니다. 굽기 프로세스 중에 이러한 복잡성을 방지하려면 전원 전환이 발생하는 시기를 애플리케이션에서 인식해야 합니다. 이 작업은 애플리케이션이 WM_POWERBROADCAST 메시지를 처리할 수 있도록 하여 수행됩니다. Windows XP 또는 Windows Server 2003용으로 개발된 애플리케이션은 PBT_APMQUERYSUSPEND 대한 응답으로 BROADCAST_QUERY_DENY 반환하여 굽기 프로세스 중 일시 중단을 방지할 수 있습니다.

Windows Vista 및 Windows Server 2008 용 전원 관리 모델의 변경으로 인해 PBT_APMQUERYSUSPEND 이벤트는 더 이상 애플리케이션에 전달되지 않습니다. 대신 PBT_APMSUSPEND 이벤트가 전달되어 애플리케이션이 전환을 준비할 수 있도록 2초가 제공됩니다.

이러한 변경으로 인해 애플리케이션은 SetThreadExecutionState 함수를 호출하여 시스템 유휴 시간 초과를 방지하여 일반적으로 Suspend로 전환하는 것이 좋습니다. 적절한 플래그 집합으로 이 함수를 호출하면 진행 중인 Suspend가 아니라 시스템 유휴 상태만 방지됩니다.

IMAPI 사용

SetThreadExecutionState