Создание компонентов 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::Subscribe , чтобы запросить монитор событий для доставки уведомлений о событиях устройства с изображением. После получения уведомления можно вызвать IStiDevice::GetLastNotificationData , чтобы определить тип события. IStiDevice::UnSubscribe следует вызывать, если уведомления больше не нужны.
Когда программное обеспечение для получения образа завершит использование интерфейса IStiDevice , оно должно вызвать IStiDevice::Release.