防止在刻录期间退出登录或暂停

如果在应用程序中未采取适当的预防措施,则用户可能会在刻录操作期间退出登录。 这会导致刻录过程中断,造成数据丢失,并可能使光盘无法使用。

为了避免此问题,应用程序应处理退出登录之前发送的 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 函数,以防止系统空闲超时,这通常会导致转换到暂停状态。 请务必记住,使用相应标志集调用上述函数只会阻止系统空闲,而不会阻止正在进行的暂停状态。

使用 IMAPI

SetThreadExecutionState