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


Вызов отключенного сканера с помощью WSD Challenger

Важно!

Функции WSD Challenger устарели, и вся документация, связанная с WSD Challenger, будет архивирована в предыдущих версиях документации.

Драйвер сканера веб-служб может оспорить отключенный сканер, чтобы восстановить связь с устройством, когда сканер возвращается в режим "в сети". Чтобы оспорить отключенный сканер, драйвер использует библиотеку DLL-библиотеки WSD Challenger (WSDCHNGR.DLL), которая предоставляется вместе с Windows Vista. Служба приобретения образов Windows (WIA) также использует WSDCHNGR.DLL для активного мониторинга всех устройств сканера WSDScan и предоставления драйверам возможности реагировать на проблему после сбоя связи с устройством.

Задача для класса устройств инициируется функцией WSDCHNGRChallengeDeviceClass WSD Challenge. Драйвер WIA обычно не должен напрямую вызывать эту функцию, так как служба WIA вызывает ее для всех устройств WIA.

Так как драйвер WIA выгружается вскоре после отключения устройства, которое он поддерживает, сам драйвер не можетWSDCHNGR.DLLзагружен . Таким образом, драйвер не может продолжать мониторинг WSD сложной задачей и не может повторно подключиться к устройству при его подключении к сети. Вместо этого драйверы WIA, устанавливаемые с помощью драйвераWSDScan.sys режима ядра, могут использовать службу WIA, чтобы оспорить класс устройства и обеспечить продолжение мониторинга после выгрузки драйвера.

Как правило, драйвер WIA, использующий WSDScan.sys , использует только следующие функции WSD Challenger:

WSDCHNGRInitialize
Инициализирует интерфейс WSD Challenger, который использует клиент драйвера WIA. Вызовите эту функцию при загрузке драйвера.

WSDCHNGRShutdown
Завершает работу интерфейса WSD Challenger, который использует клиент драйвера WIA. Вызовите эту функцию при выгрузке драйвера.

При завершении работы, если устройство является устройством класса WSDScan, служба WIA продолжает выполнять мониторинг задач WSD для устройства после выгрузки драйвера и завершения работы интерфейса запроса веб-служб.

WSDCHNGRRegisterDeviceToChallenge
Регистрирует устройство для оспариваемого. Вызовите эту функцию после того, как драйвер столкнется с любым потенциальным сбоем связи. Одно и то же устройство можно зарегистрировать для выполнения задачи несколько раз. WSDCHNGRRegisterDeviceToChallenge возвращает S_OK, если первое устройство успешно зарегистрировано. Эта функция возвращает S_FALSE при вызове для устройства, которое уже зарегистрировано для вызова.

В следующих примерах кода показано, как использовать эти функции WSD Challenge для инициализации WSD Challenger и как зарегистрировать устройство сканера для сложных задач после потенциальных сбоев связи:

Пример макроса для фильтрации кодов ошибок

Пример кода для оспаривания потенциально отключенного устройства

Пример кода для реализации вспомогательных методов

Дополнительные сведения об определениях и переменных, используемых в этих примерах, см. в разделе Определения и переменные, используемые в примерах.