Desafiar um scanner desconectado com o WSD Challenger
Importante
A funcionalidade do WSD Challenger foi preterida e toda a documentação relacionada ao WSD Challenger será arquivada na documentação de versões anteriores.
Um driver de verificador de serviços Web pode desafiar um verificador desconectado para restabelecer a comunicação com o dispositivo quando o scanner voltar a ficar online. Para desafiar um scanner desconectado, o driver usa a DLL do WSD Challenger (WSDCHNGR.DLL) fornecida com o Windows Vista. O Serviço de Aquisição de Imagens do Windows (WIA) também usa WSDCHNGR.DLL para monitorar ativamente todos os dispositivos de scanner WSDScan e permitir que os drivers respondam a um desafio após uma falha de comunicação do dispositivo.
O desafio para uma classe de dispositivos é iniciado pela função WSDCHNGRChallengeDeviceClass WSD Challenge. Um driver WIA normalmente não precisa chamar essa função diretamente porque o serviço WIA a chama para todos os dispositivos WIA.
Como um driver WIA é descarregado logo após o dispositivo compatível ser desconectado, o próprio driver não pode manter WSDCHNGR.DLL carregado. Portanto, o driver não pode continuar monitorando o WSD desafiador e não pode se reconectar ao dispositivo quando ele voltar a ficar online. Em vez disso, os drivers WIA instalados usando o driverWSDScan.sys modo kernel podem usar o serviço WIA para desafiar a classe de dispositivo e permitir que o desafio do monitoramento continue após o descarregamento do driver.
Normalmente, um driver WIA que está usando WSDScan.sys usa apenas as seguintes funções do WSD Challenger:
WSDCHNGRInitialize
Inicializa a interface do WSD Challenger que o cliente do driver WIA usa. Chame essa função quando o driver for carregado.
WSDCHNGRShutdown
Desliga a interface do WSD Challenger que o cliente do driver WIA usa. Chame essa função quando o driver for descarregado.
Quando esse desligamento acontece, se o dispositivo for um dispositivo da classe WSDScan, o serviço WIA continuará a executar o monitoramento de desafios do WSD para o dispositivo depois que o driver tiver sido descarregado e encerrado sua interface do Desafio de serviços Web.
WSDCHNGRRegisterDeviceToChallenge
Registra o dispositivo a ser desafiado. Chame essa função depois que o driver encontrar qualquer possível falha de comunicação. O mesmo dispositivo pode ser registrado para um desafio mais de uma vez. WSDCHNGRRegisterDeviceToChallenge retornará S_OK se o primeiro dispositivo for registrado com êxito. Essa função retorna S_FALSE quando é chamada para um dispositivo que já está registrado para ser desafiado.
Os exemplos de código a seguir mostram como usar essas funções do WSD Challenge para inicializar o WSD Challenger e como registrar o dispositivo de scanner para desafios após possíveis falhas de comunicação:
Exemplo de macro para filtrar códigos de erro
Exemplo de código para desafiar um dispositivo potencialmente desconectado
Exemplo de código para implementar métodos auxiliares
Para obter mais informações sobre as definições e variáveis usadas nesses exemplos, consulte Definições e variáveis usadas nos exemplos.