Compartilhar via


Cancelamento do manipulador de erros wia de caixas de diálogo modeless

Grande parte da complexidade no manipulador de erros gira em torno de como o cancelamento e a demissão das caixas de diálogo de modelagem são tratados.

Em particular, o código proxy WIA garante que um manipulador de erros de nível inferior (em outras palavras, um manipulador diferente do manipulador de erros do aplicativo) tenha a chance de comunicar uma solicitação de cancelamento de volta de uma caixa de diálogo de modelagem para o driver; isso garante que um manipulador de nível inferior tenha a chance de ignorar sua caixa de diálogo de modelagem.

Para permitir que um manipulador de erros cancele uma operação de transferência de dados de uma caixa de diálogo de modelagem, um driver deve continuar enviando mensagens WIA_TRANSFER_MSG_DEVICE_STATUS com o mesmo código hrErrorStatus , possivelmente atualizando o parâmetro lPercentComplete para permitir que uma interface do usuário do manipulador de erros mostre progresso. Por exemplo, se um driver puder fornecer uma estimativa de quanto tempo o "aquecimento" realmente leva, ele poderá enviar várias mensagens de dispositivo com hrErrorStatus definido como WIA_STATUS_WARMING_UP. Isso permitirá que o manipulador de erros mostre uma caixa de diálogo de progresso, bem como dê ao usuário a chance de cancelar a transferência dessa caixa de diálogo. O parâmetro lPercentComplete passado para IWiaErrorHandler::ReportStatus é exatamente o mesmo parâmetro lPercentComplete que o driver define no método IWiaTransferCallback::WiaTransferParams . Para obter um exemplo disso, consulte o Driver Monstruoso wia estendido na CD do WDK.

Para permitir que um manipulador de erros ignore uma caixa de diálogo de modelagem, a Microsoft introduziu o dispositivo status código WIA_STATUS_CLEAR. Essa mensagem é enviada pelo proxy WIA para o manipulador de erros que está exibindo atualmente uma interface do usuário de modelagem quando o proxy WIA recebe uma mensagem de dispositivo diferente daquela que está sendo exibida no momento. O proxy também envia a mensagem WIA_STATUS_CLEAR quando:

O driver envia a mensagem WIA_TRANSFER_MESSAGE_STATUS,

durante chamadas para o método IWiaTransferCallback::GetNextStream

no final do fluxo/transferência (se houver atualmente um manipulador de erros exibindo uma interface do usuário de modelagem).

Os drivers não devem enviar a mensagem WIA_STATUS_CLEAR por conta própria.

A interface IWiaTransferCallback é descrita na documentação do SDK do Microsoft Windows.