Erstellen von Device-Specific-Komponenten für Imageerfassungs-APIs
Bilderfassungs-APIs wie TWAIN erfordern in der Regel gerätespezifische Komponenten, z. B. TWAIN-Datenquellen. Diese gerätespezifischen Komponenten sollten die IStillImage-COM-Schnittstelle und die IStiDevice-COM-Schnittstelle verwenden, um mit Den Treibern des Benutzermodus-Standbildgerätes und dem Ereignismonitor zu kommunizieren.
Bilderfassungs-APIs können IStillImage::GetDeviceValue und IStillImage::SetDeviceValue aufrufen, um Registrierungseinträge für Standbildgeräte zu lesen und zu schreiben. Beispielsweise wird der Name der TWAIN-Datenquelle jedes Standbildgeräts in der Registrierung gespeichert.
Da die TWAIN-API es einer Anwendung nicht erlaubt, das aktive Gerät beim Aufrufen einer Datenquelle anzugeben, ruft die Datenquelle in der Regel IStillImage::GetDeviceList auf, um eine Liste aller Standbildgeräte abzurufen, und sucht dann in der Liste nach dem richtigen Gerät, normalerweise basierend auf den Namen des Herstellers und des Modells. Die Namen des Herstellers und des Modells werden aus der Inf-Datei (Setup Information) abgerufen. Da TWAIN einen Grenzwert von 32 Zeichen für Datenquellennamen hat und WIA "WIA-" an Zeichenfolgen anhängt, um die kompatiblen Namen zu erstellen, sollte der Text in der INF-Datei nicht länger als 28 Zeichen sein. Andernfalls können TWAIN-kompatible Anwendungen, die einen Vergleich für die gesamte Zeichenfolge und nicht nur für die ersten 32 Zeichen durchführen, möglicherweise nicht automatisch das Gerät finden, das zum Starten der Anwendung geführt hat.
Um auf ein Gerät zuzugreifen, ruft die Bilderfassungssoftware IStillImage::CreateDevice auf, um eine instance des COM-Objekts zu erstellen, das die IStiDevice-Schnittstelle definiert. Die IStiDevice-Schnittstelle bietet mehrere Methoden zum Ausführen von Geräte-E/A-Vorgängen. Beim Erstellen des Objekt-instance sollte die Bilderfassungssoftware die Übertragungsmodi "Daten" angeben.
Die Bilderfassungssoftware kann IStiDevice::Subscribe aufrufen, um den Ereignismonitor anzufordern, Benachrichtigungen über Standbildgeräteereignisse zu übermitteln. Nachdem die Benachrichtigung empfangen wurde, kann IStiDevice::GetLastNotificationData aufgerufen werden, um den Typ des Ereignisses zu bestimmen. IStiDevice::UnSubscribe sollte aufgerufen werden, wenn Benachrichtigungen nicht mehr benötigt werden.
Wenn die Imageerfassungssoftware die Verwendung der IStiDevice-Schnittstelle abgeschlossen hat, muss sie IStiDevice::Release aufrufen.