Integration mit dem Bildverarbeitungsfilter
Streambasierte Datenübertragungen ermöglichen eine einfache Integration des WIA-Bildverarbeitungsfilters in einen WIA-Treiber, da der Stream vom Aufrufer bereitgestellt wird und der WIA-Treiber die gleiche Aktion ausführt, unabhängig vom Zielstream. Das heißt, der Treiber fragt einfach nach einem Stream und schreibt dann in diesen, unabhängig davon, welcher Streamtyp an den Treiber zurückgegeben wird.
Der WIA-Bildverarbeitungsfilter ist erforderlich, um IStream zu implementieren. Wenn dieser Filter erstellt wird, erhält er den Zieldatenstrom der Anwendung, an den er dann seine Aufrufe delegieren (oder weiterleiten soll). Anders ausgedrückt: Wenn IStream::Write für den Filter aufgerufen wird, sollte er den Puffer verarbeiten und dann IStream::Write im Zielstream mit dem verarbeiteten Puffer aufrufen.
Auf ähnliche Weise kann der Bildverarbeitungsfilter dem Treiber einen Stream zuweisen, sodass Daten aus dem Treiber in den Bildverarbeitungsfilter geschrieben werden können, der dann in den Zielstream der Anwendung schreibt. Beachten Sie, dass der Treiber, wenn kein Filter vorhanden ist, nicht geändert wird, sondern weiterhin in den Stream schreibt.
Diese Situation wird in den folgenden Abbildungen grafisch dargestellt. Die erste Abbildung veranschaulicht eine streambasierte Datenübertragung, wenn der Bildverarbeitungsfilter nicht verwendet wird.
Die zweite Abbildung veranschaulicht die streambasierte Datenübertragung bei Verwendung des Bildverarbeitungsfilters.
Beachten Sie, dass sich das Verhalten des Treibers nicht ändert. Der Treiber empfängt einen Stream und schreibt in diesen, ob der Stream vom Bildverarbeitungsfilter oder direkt von einer Anwendung bereitgestellt wird. Daher können Sie Value-Add-Bildverarbeitungskomponenten separat veröffentlichen. Beispielsweise könnten Sie einen im Lieferumfang enthaltenen Treiber bereitstellen, der zwar funktional ist, aber bessere Images bereitstellen kann, wenn der Benutzer die Bildverarbeitungskomponente von einer CD installiert. Der Treiber muss in dieser Situation nicht geändert werden.
Die IStream-Schnittstelle und ihre Methoden werden in der Microsoft Windows SDK-Dokumentation beschrieben.