다음을 통해 공유


WIA 미니드라이버 문제 해결

기본적으로 WIA 서비스는 windir% 디렉터리의 wiadebug.log% 파일에 오류를 기록합니다. 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~1400dpi 사이의 모든 해상도를 지원할 수 있는 경우 드라이버는 1200dpi에 대한 요청을 처리할 수 있어야 합니다. 스캐너가 이 설정을 지원하지 않는 경우 이 속성에 유효하지 않은 값으로 가로 해상도를 설정하지 않도록 애플리케이션을 변경해야 합니다. 이 경우 애플리케이션은 속성을 이 값으로 설정하기 전에 값이 유효한지 검사 합니다.

로깅 수준은 레지스트리의 항목에 의해 제어됩니다. WIA의 경우 이 키는 다음 위치에 있습니다.

HKLM\System\CurrentControlSet\Control\StillImage\Debug\MODULE_NAME\DebugFlags

이 예제에서 MODULE_NAME 적절한 이진 모듈의 이름입니다. WIA 서비스의 경우 wiaservc.dll. DebugFlags의 값은 로깅 수준을 제어합니다. 다음 표에는 세 가지 설정이 제공됩니다.

의미
0x00000001 오류 메시지를 표시합니다.
0x00000002 경고 메시지를 표시합니다.
0x00000004 추적 메시지를 표시합니다.

DebugFlags의 값은 플래그 값입니다(즉, 다른 설정이 비트 OR 연산자와 결합될 수 있음). 오류, 경고 및 추적에 대한 로깅을 한 번에 켜려면 DebugFlags를 0x0000007 설정합니다.

DebugFlags 값 변경이 적용되려면 WIA 서비스(stisvc)를 중지한 다음 다시 시작해야 합니다. 자세한 내용은 스틸 이미지 서비스 시작 및 중지 를 참조하세요.

과도한 로깅으로 인해 성능이 크게 저하 될 수 있습니다. 특정 문제를 해결하려고 할 때만 로깅 수준을 늘려야 합니다. 문제를 해결한 후 로깅을 원래 수준으로 설정합니다. 기본 로깅 수준은 1입니다. 충돌이 발생할 수 있으므로 로깅 수준을 3 이상으로 늘리지 마세요.