Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn ein Gerät über zwei oder mehr Treiber verfügen kann, testen Sie diese Treiber sorgfältig auf Kompatibilität miteinander. Wenn beispielsweise ein Treiber das Gerät in einem nicht verwendbaren Zustand verlässt (z. B. der Treiber, der die Schließsitzungsnachricht nicht in einem Protokoll sendet), schlägt der andere Treiber möglicherweise fehl, wenn er versucht, mit dem Gerät zu kommunizieren. Diese Situation geschieht häufig mit seriellen Geräten.
WIA und TWAIN in derselben DLL
Wenn Sie einen WIA-Treiber und einen TWAIN-Treiber gleichzeitig über eine einzelne DLL ausführen, lädt der WIA-Dienst und die TWAIN-Anwendung beide eine Instanz dieser DLL. Die WIA-Instanz der DLL erstellt den WIA-Elementbaum. Diese Baumstruktur stellt die Ordner und Bilder auf Ihrer Kamera dar. Jede Anwendung, die WIA verwendet (z. B. "Mein Computer", "Scanner" und "Kamera-Assistent") enthält eine Kopie der Elementstruktur in Ihrem Treiber.
Wenn ein Bild mithilfe des TWAIN-Treibers gelöscht oder hinzugefügt wird, wird der WIA-Treiber nicht über diese Änderung benachrichtigt. Daher enthält die WIA-Elementstruktur entweder Bilder, die gelöscht wurden, oder keine Bilder, die hinzugefügt wurden. In beiden Fällen muss der Treiber seinen Elementbaum aktualisieren. Dazu muss der TWAIN-Treiber Ihren WIA-Treiber anweisen, den Elementbaum zu aktualisieren, wenn ein Bild hinzugefügt oder gelöscht wird.
Eine Möglichkeit hierfür ist es, CoCreateInstance(CLSID_IWiaDevMgr,...) von Ihrem TWAIN-Treiber aufzurufen, alle Geräte auflisten und nach Ihrem Gerät suchen. Eine Möglichkeit, den Treiber über diese Enumeration zu identifizieren, besteht darin, eine benutzerdefinierte Eigenschaft in Ihrem WIA-Treiber zu erstellen, sodass Sie wissen, dass es sich bei dem TWAIN-Treiber um ihren WIA-Treiber handelt, wenn der TWAIN-Treiber diese Eigenschaft abfragt und vorhanden ist. Nachdem Sie das IWiaItem für Ihren Treiber erstellt haben, senden Sie dem Treiber einen Befehl, um seine Struktur neu zu erstellen (z. B. einen WIA-CMD_SYNCHRONIZE-Befehl in einem Aufruf der IWiaItem::D eviceCommand-Methode ). CoCreateInstance, IWiaDevMgr und IWiaItem werden in der Microsoft Windows SDK-Dokumentation beschrieben.
Eine weitere Möglichkeit zum Aktualisieren der WIA-Elementstruktur besteht darin, ein benanntes Ereignis im WIA-Treiber zu erstellen. Ein Thread in Ihrem WIA-Treiber kann dann warten, bis dieses Ereignis signalisiert wird. Wann immer Sie ein Bild mithilfe des TWAIN-Treibers löschen oder hinzufügen, signalisiert der TWAIN-Treiber dies (durch Aufruf von SetEvent (in der Windows SDK-Dokumentation beschrieben)) bei diesem benannten Ereignis. Der Thread in Ihrem WIA-Treiber wird dann freigegeben, und der WIA-Treiber baut den Baum neu auf.
In jedem Fall sollten Sie Ihre Baumstruktur neu erstellen, damit sie alle Änderungen an den aktuellen Bildern auf der Kamera oder dem Scanner widerspiegelt. Stellen Sie sicher, dass Sie jedes Mal, wenn Sie die Struktur aktualisieren, indem Sie ein Element aus der Elementstruktur hinzufügen oder löschen, ein Ereignis in die Warteschlange stellen (z. B. WIA_EVENT_ITEM_DELETED oder WIA_EVENT_TREE_UPDATED (eine Beschreibung dieser und anderer WIA-Ereignisbezeichner finden Sie in der Windows SDK-Dokumentation)). Wenn Sie erfolgreich ein Ereignis senden, wenn sich Die Struktur ändert, löst dies das Problem mit "Mein Computer" und anderen WIA-Anwendungen, die nicht automatisch aktualisiert werden.
Anmerkung Während Ihre TWAIN- und WIA-Treiber möglicherweise in derselben DLL vorhanden sind, können WIA- und TWAIN-Treiber die gleiche Benutzeroberfläche nicht gemeinsam nutzen. Jeder Treiber muss über eine eigene Benutzeroberfläche verfügen.