WIA 錯誤處理常式取消無強制回應對話方塊
錯誤處理常式中的許多複雜度會圍繞如何處理無強制回應對話方塊的取消和關閉。
特別是,WIA Proxy 程式碼可確保較低層級的錯誤處理常式 (,換句話說,應用程式錯誤處理常式以外的處理常式) 有機會將取消要求從無模式對話傳回給驅動程式;這可確保較低層級的處理常式有機會關閉其無強制回應對話方塊。
為了讓錯誤處理常式從無模式對話取消資料傳輸作業,驅動程式應該持續傳送具有相同 hrErrorStatus 程式碼的WIA_TRANSFER_MSG_DEVICE_STATUS訊息,可能更新 lPercentComplete 參數,以允許錯誤處理常式 UI 顯示進度。 例如,如果驅動程式可以提供「啟動」真正花費的時間估計,它可以傳送一些 將 hrErrorStatus 設定為 WIA_STATUS_WARMING_UP的裝置訊息。 這可讓錯誤處理常式顯示進度對話方塊,以及讓使用者有機會取消此對話方塊的傳輸。 傳遞至IWiaErrorHandler::ReportStatus的lPercentComplete參數與驅動程式在IWiaTransferCallback::WiaTransferParams方法中設定的lPercentComplete參數完全相同。 如需此範例,請參閱 WDK CD 上的擴充 WIA 套件驅動程式。
為了允許錯誤處理常式關閉無強制回應對話方塊,Microsoft 引進了裝置狀態碼WIA_STATUS_CLEAR。 當 WIA Proxy 收到與目前所顯示不同裝置訊息時,WIA Proxy 目前顯示無模式 UI 的錯誤處理常式會傳送此訊息。 Proxy 也會在下列情況下傳送WIA_STATUS_CLEAR訊息:
驅動程式會傳送WIA_TRANSFER_MESSAGE_STATUS訊息,
在呼叫 IWiaTransferCallback::GetNextStream 方法期間
如果目前有錯誤處理常式顯示無模式 UI) ,則 (在資料流程/傳輸結束時 (。
驅動程式不應該傳送WIA_STATUS_CLEAR訊息本身。
IWiaTransferCallback介面會在Microsoft Windows SDK檔中說明。