Поделиться через


Создание компонентов Device-Specific для API получения изображений

API получения изображений, например TWAIN, обычно требуют компонентов, относящихся к устройству, таких как источники данных TWAIN. Эти компоненты, специфичные для устройства, следует использовать интерфейс COM IStillImage и интерфейс COM IStiDevice для взаимодействия с драйверами пользовательского режима неподвижных изображений и монитором событий.

API получения изображений могут вызывать IStillImage::GetDeviceValue и IStillImage::SetDeviceValue для чтения и записи данных реестра для устройств неподвижного изображения. Например, имя источника данных TWAIN каждого устройства для неподвижных изображений хранится в реестре.

Так как API TWAIN не позволяет приложению указывать активное устройство при вызове источника данных, источник данных обычно вызывает IStillImage::GetDeviceList получить список всех устройств с изображением, а затем будет искать правильное устройство, как правило, на основе названий изготовителя и модели. Текстовые названия производителей и моделей получаются из файла информации об установке (INF). Так как TWAIN имеет ограничение на 32 символов для имен источников данных, и поскольку WIA добавляет "WIA-" к строкам для создания совместимых имен, текст в INF-файле не должен превышать 28 символов. В противном случае приложения, совместимые с TWAIN, выполняющие сравнение по всей строке, а не только первые 32 символов, могут не находить устройство, которое вызвало запуск приложения.

Чтобы получить доступ к устройству, программное обеспечение получения изображений вызывает IStillImage::CreateDevice для создания экземпляра COM-объекта, определяющего интерфейс IStiDevice. Интерфейс IStiDevice предоставляет несколько методов для выполнения операций ввода-вывода устройства. При создании экземпляра объекта программное обеспечение получения изображений должно указывать режимы передачи данных режимы передачи.

Программное обеспечение для получения изображений может вызывать IStiDevice::Подписаться чтобы запросить мониторинг событий для доставки уведомлений о событиях устройства обработки неподвижных изображений . После получения уведомления можно вызвать IStiDevice::GetLastNotificationData, чтобы определить тип события. IStiDevice::UnSubscribe следует вызывать, когда уведомления больше не нужны.

После того как программное обеспечение завершит использование интерфейса IStiDevice, необходимо вызвать IStiDevice::Release.