다음을 통해 공유


WSD 챌린저를 사용하여 연결이 끊긴 스캐너에 도전

중요

WSD 챌린저 기능은 더 이상 사용되지 않으며 모든 WSD 챌린저 관련 설명서는 이전 버전 설명서에 보관됩니다.

웹 서비스 스캐너 드라이버는 스캐너가 다시 온라인 상태가 되면 연결이 끊긴 스캐너에 이의를 제기하여 디바이스와의 통신을 다시 설정할 수 있습니다. 연결이 끊긴 스캐너에 도전하기 위해 드라이버는 Windows Vista와 함께 제공되는 WSD 챌린저 DLL(WSDCHNGR.DLL)을 사용합니다. WIA(Windows 이미지 획득) 서비스는 또한WSDCHNGR.DLL 사용하여 모든 WSDScan 스캐너 디바이스를 적극적으로 모니터링하고 드라이버가 디바이스 통신 실패 후 문제에 대응할 수 있도록 합니다.

디바이스 클래스에 대한 챌린지는 WSDCHNGRChallengeDeviceClass WSD Challenge 함수에 의해 시작됩니다. WIA 드라이버는 일반적으로 WIA 서비스가 모든 WIA 디바이스에 대해 호출하기 때문에 이 함수를 직접 호출할 필요가 없습니다.

WIA 드라이버가 지원하는 디바이스의 연결이 끊긴 직후에 언로드되므로 드라이버 자체는 WSDCHNGR.DLL 로드할 수 없습니다. 따라서 드라이버는 WSD를 계속 모니터링할 수 없으며 다시 온라인 상태가 되면 디바이스에 다시 연결할 수 없습니다. 대신 ,WSDScan.sys 커널 모드 드라이버를 사용하여 설치된 WIA 드라이버는 WIA 서비스를 사용하여 디바이스 클래스에 도전하고 드라이버가 언로드된 후에도 모니터링을 계속하기 어려울 수 있습니다.

일반적으로 WSDScan.sys 사용하는 WIA 드라이버는 다음 WSD 챌린저 함수만 사용합니다.

WSDCHNGRInitialize
WIA 드라이버 클라이언트에서 사용하는 WSD 챌린저 인터페이스를 초기화합니다. 드라이버가 로드될 때 이 함수를 호출합니다.

WSDCHNGRShutdown
WIA 드라이버 클라이언트에서 사용하는 WSD 챌린저 인터페이스를 종료합니다. 드라이버가 언로드될 때 이 함수를 호출합니다.

이 종료가 발생하면 디바이스가 WSDScan 클래스 디바이스인 경우 WIA 서비스는 드라이버가 언로드되고 웹 서비스 Challenge 인터페이스를 종료한 후에도 디바이스에 대한 WSD 챌린지 모니터링을 계속 실행합니다.

WSDCHNGRRegisterDeviceToChallenge
챌린지할 디바이스를 등록합니다. 드라이버에서 잠재적인 통신 오류가 발생한 후 이 함수를 호출합니다. 동일한 디바이스를 두 번 이상 챌린지에 등록할 수 있습니다. WSDCHNGRRegisterDeviceToChallenge 는 첫 번째 디바이스가 성공적으로 등록되면 S_OK 반환합니다. 이 함수는 이미 등록된 디바이스에 대해 이의를 제기할 때 S_FALSE 반환합니다.

다음 코드 예제에서는 이러한 WSD Challenge 함수를 사용하여 WSD 챌린저를 초기화하는 방법과 잠재적인 통신 오류 후 어려움을 해결하기 위해 스캐너 디바이스를 등록하는 방법을 보여 줍니다.

오류 코드를 필터링하는 매크로 예제

연결이 끊어질 수 있는 디바이스에 도전하기 위한 코드 예제

도우미 메서드 구현을 위한 코드 예제

이러한 예제에서 사용되는 정의 및 변수에 대한 자세한 내용은 예제에서 사용되는 정의 및 변수를 참조하세요.