Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По умолчанию служба WIA записывает ошибки в файл с именем wiadebug.log в каталоге %windir% . Сведения о том, что служба WIA размещает в этом файле, может быть очень полезной во время разработки драйверов. В следующем примере показана типичная проблема и показано, как можно использовать сведения в файле wiadebug.log для поиска решения проблемы.
Разработчик пишет приложение для тестирования драйвера сканера, который находится в процессе разработки. В рамках одного из тестов разработчик пытается установить количество точек на дюйм сканера (dpi) на 1200, но замечает, что это действие вызывает ошибку. При просмотре файла Wiadebug.log показано следующее:
wiasGetChangedValueLong, validate prop 6147 failed hr: 0x80070057
wiasUpdateScanRect, CheckXResAndUpdate failed (0x80070057)
CDrvWrap::WIA_drvValidateItemProperties, Error calling driver:
drvValidateItemProperties with hr = 0x80070057 (This is normal if the app wrote an invalid value)
Эти записи журнала указывают на то, что драйвер сообщает, что приложение написало недопустимое значение. Из этой информации не ясно, в чем именно заключается проблема. Если разработчик увеличивает уровень ведения журнала WIA, чтобы сообщить о предупреждениях, а также об ошибках, wiadebug.log выдает выходные данные, аналогичные следующим:
wiasValidateItemProperties, invalid LIST value for :
(propID) Horizontal Resolution, value = 1200
Valid values are:
75
100
150
200
300
600
wiasGetChangedValueLong, validate prop 6147 failed hr: 0x80070057
wiasUpdateScanRect, CheckXResAndUpdate failed (0x80070057)
CDrvWrap::WIA_drvValidateItemProperties, Error calling driver:
drvValidateItemProperties with hr = 0x80070057 (This is normal if the app wrote an invalid value)
Выходные данные показывают, что свойство "Горизонтальное разрешение" вызывает сбой. Приложение пытается задать разрешение 1200, но список поддерживаемых разрешений не включает 1200. Таким образом, вспомогательный помощник проверки службы WIA wiasValidateItemProperties отклоняет запрос, чтобы задать это значение.
Теперь, когда проблема определена, разработчик должен определить, является ли он драйвером или приложением, которое необходимо пересмотреть. Если спецификации сканера позволяют поддерживать все разрешения от 100 до 1400 dpi, драйвер должен иметь возможность обрабатывать запрос на 1200 dpi. Если сканер не поддерживает этот параметр, приложение должно быть изменено таким образом, чтобы оно не пыталось задать горизонтальное разрешение в значение, недопустимое для этого свойства. В этом случае приложение должно проверить, является ли значение допустимым, прежде чем пытаться задать свойство этому значению.
Уровень логирования управляется записью в реестре. Для WIA этот ключ находится в:
HKLM\System\CurrentControlSet\Control\StillImage\Debug\MODULE_NAME\DebugFlags
В этом примере MODULE_NAME — это имя соответствующего двоичного модуля. Для службы WIA это wiaservc.dll. Значение в DebugFlags определяет уровень журналирования. Три из параметров приведены в следующей таблице:
| Ценность | Значение |
|---|---|
| 0x00000001 | Отображение сообщений об ошибках. |
| 0x00000002 | Отображение предупреждений. |
| 0x00000004 | Отобразите сообщения трассировки. |
Значение в DebugFlags — это значение флага (т. е. различные параметры могут сочетаться с побитовым оператором ИЛИ). Чтобы включить ведение журнала для ошибок, предупреждений и трассировок одновременно, задайте для ОтладкиFlags значение 0x0000007.
Чтобы изменение значения DebugFlags вступило в силу, служба WIA (stisvc) должна быть остановлена, а затем перезапущена. См. раздел "Запуск и остановка службы неподвижных изображений" для подробностей.
Чрезмерное ведение журнала может привести к значительному снижению производительности. Вы должны увеличить уровень ведения журнала только при попытке решить определенную проблему. После исправления проблемы задайте для ведения журнала исходный уровень. Уровень ведения журнала по умолчанию — один. Не увеличивайте уровень ведения журнала выше трех, так как это может привести к сбою.