Freigeben über


WIA-Fehlerhandlerabbruch von moduslosen Dialogen

Ein Großteil der Komplexität des Fehlerhandlers dreht sich um die Behandlung von Abbruch und Abbruch von dialogfeldern ohne Modus.

Insbesondere stellt der WIA-Proxycode sicher, dass ein Fehlerhandler auf niedrigerer Ebene (d. h. ein anderer Handler als der Fehlerhandler dieser Anwendung) die Möglichkeit erhält, eine Abbruchanforderung aus einem moduslosen Dialogfeld an den Treiber zurück zu senden. Dadurch wird sichergestellt, dass ein Handler auf niedrigerer Ebene die Möglichkeit erhält, sein modusloses Dialogfeld zu schließen.

Damit ein Fehlerhandler einen Datenübertragungsvorgang aus einem moduslosen Dialogfeld abbrechen kann, sollte ein Treiber weiterhin WIA_TRANSFER_MSG_DEVICE_STATUS Nachrichten mit demselben hrErrorStatus-Code senden und möglicherweise den lPercentComplete-Parameter aktualisieren, damit eine Fehlerhandlerbenutzeroberfläche den Fortschritt anzeigen kann. Wenn ein Treiber z. B. eine Schätzung darüber geben kann, wie lange das "Aufwärmen" wirklich dauert, kann er eine Reihe von Gerätenachrichten senden, wobei hrErrorStatus auf WIA_STATUS_WARMING_UP festgelegt ist. Dadurch kann der Fehlerhandler ein Statusdialogfeld anzeigen und dem Benutzer die Möglichkeit geben, die Übertragung aus diesem Dialogfeld abzubrechen. Der lPercentComplete-Parameter , der an IWiaErrorHandler::ReportStatus übergeben wird, ist genau derselbe lPercentComplete-Parameter , den der Treiber in der IWiaTransferCallback::WiaTransferParams-Methode festlegt. Ein Beispiel hierfür finden Sie im Erweiterten WIA Monster Driver auf der WDK-CD.

Damit ein Fehlerhandler ein modusloses Dialogfeld schließen kann, hat Microsoft das Gerät status Code WIA_STATUS_CLEAR eingeführt. Diese Meldung wird vom WIA-Proxy an den Fehlerhandler gesendet, der derzeit eine moduslose Benutzeroberfläche anzeigt, wenn der WIA-Proxy eine andere Gerätenachricht als die derzeit angezeigte empfängt. Der Proxy sendet auch die WIA_STATUS_CLEAR-Nachricht, wenn:

Der Treiber sendet die WIA_TRANSFER_MESSAGE_STATUS Nachricht,

bei Aufrufen der IWiaTransferCallback::GetNextStream-Methode

am Ende des Datenstroms/der Übertragung (wenn derzeit ein Fehlerhandler vorhanden ist, der eine moduslose Benutzeroberfläche anzeigt).

Fahrer sollten die WIA_STATUS_CLEAR-Nachricht nicht selbst senden.

Die IWiaTransferCallback-Schnittstelle wird in der Microsoft Windows SDK-Dokumentation beschrieben.