Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Событие устройства неподвижного изображения - это событие на уровне устройства, о котором программное обеспечение верхнего уровня должно быть уведомлено, если оно запросило такое уведомление. Минидрайвер в пользовательском режиме отвечает за определение большинства событий устройства и доставку уведомлений при их возникновении. Как правило, события указывают на то, что программное обеспечение верхнего уровня требуется для выполнения некоторых действий.
Типичное событие для устройства статических изображений — это обнаружение нажатия кнопки. Например, сканер может предоставить пользователю отдельные кнопки для запуска сканирования текста и фотографий. При нажатии кнопки программное обеспечение верхнего уровня потребуется для отображения или хранения изображения. Монитор событий неподвижного изображения обнаруживает, что событие произошло (с помощью COM-интерфейса IStiDevice) и может вызвать ранее зарегистрированное приложение для обработки неподвижных изображений (с помощью COM-интерфейса IStillImage).
По-прежнему события устройства изображения представлены идентификаторами GUID. Корпорация Майкрософт в sti.h определяет следующие события устройства неподвижного изображения.
GUID события | Цель |
---|---|
GUID_DeviceArrivedLaunch | К системе только что было присоединено устройство для статичных изображений. |
GUID_ScanImage | Изображение должно быть сканировано на компьютере. |
GUID_ScanFaxImage | Изображение должно быть отсканировано на компьютер, а затем отправлено по факсу. |
GUID_ScanPrintImage | Изображение должно быть отсканировано на компьютере, а затем распечатано. |
GUID_STIUserDefined1 | Нажата определяемая пользователем кнопка. |
GUID_STIUserDefined2 | Нажата определяемая пользователем кнопка. |
GUID_STIUserDefined3 | Нажата определяемая пользователем кнопка. |
Разработчики мини-драйверов в пользовательском режиме должны использовать эти предопределенные идентификаторы событий, когда это возможно. Если эти идентификаторы GUID не подходят, необходимо определить идентификаторы GUID для событий, относящихся к устройству.
Чтобы определить событие устройства статического изображения, необходимо:
Укажите GUID для каждого события.
Добавьте каждый GUID в INF-файл драйвера пользовательского режима.
В INF-файле драйвера каждая спецификация GUID должна включать звездочку (то есть "все приложения") или список конкретных приложений, указывая, какие приложения следует запускать при возникновении события. Монитор событий неподвижного изображения использует этот список для предоставления стандартных назначений приложений к событиям. Пользователь может изменить эти назначения с помощью панели управления сканеров и камер.
Уведомление о событии
Драйвер должен отслеживать устройство (с помощью асинхронного ввода-вывода или опроса), чтобы определить, когда происходит событие, связанное с каждым GUID. В зависимости от возможностей устройства драйвер может уведомлять клиентов о возникновении событий устройства асинхронно или отвечая на запрос на опрос устройства. Все драйверы, способные доставлять уведомления о событиях устройства (с помощью любого метода), должны задать флаг STI_GENCAP_NOTIFICATIONS в STI_DEV_CAPS структуре устройства. Драйверы, которые поддерживают опрос, а не асинхронное уведомление, также должны задать флаг STI_GENCAP_POLLING_NEEDED в той же структуре. (Эти возможности также должны быть указаны с помощью ключевого слова Capabilities в INF-файлах для устройств для неподвижных изображений.)
Если драйвер поддерживает асинхронное уведомление о событиях, монитор событий вызывает IStiUSD::SetNotificationHandle для запроса уведомлений и предоставления дескриптора событий. При возникновении события устройства драйвер должен уведомить монитор событий, вызвав SetEvent (см. документацию по пакету SDK для Microsoft Windows), используя дескриптор события в качестве аргумента. Затем клиент может вызвать IStiUSD::GetNotificationData , чтобы получить GUID события.
Если требуется опрос, монитор событий вызывает IStiUSD::GetStatus для опроса драйвера, который, в свою очередь, должен опрашивать устройство и возвращать результаты в STI_DEVICE_STATUS структуре.