Partilhar via


Adicionar suporte ao alimentador de documentos

Importante

Este artigo contém informações que se aplicam a sistemas operacionais Windows obsoletos.

Um alimentador de documentos é uma unidade anexada ou incorporada a um scanner que alimenta automaticamente documentos em papel em uma posição a ser verificada. Para um verificador com um alimentador de documentos, a funcionalidade é exposta e controlada por meio da adição das propriedades contidas na lista a seguir. Para Windows Me e Windows XP, as seguintes propriedades estão localizadas no item raiz:

Para Windows Me e Windows XP, as seguintes propriedades opcionais do alimentador de documentos estão localizadas no item filho:

Se um dispositivo tiver um flatbed, um alimentador de documentos e um duplexer, o driver relatará a propriedade WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES como FEED | FLAT | DUP. Verifique se os valores válidos para WIA_DPS_DOCUMENT_HANDLING_SELECT estão definidos corretamente.

Por exemplo, suponha que um aplicativo pretenda executar uma verificação duplex de três páginas do alimentador de documentos. Para fazer isso, o aplicativo define a propriedade WIA_DPS_DOCUMENT_HANDLING_SELECT como (FEEDER | DUPLEX) e define a propriedade WIA_DPS_PAGES como 3. Se o aplicativo pretende verificar a frente da página primeiro, ele deve definir a propriedade WIA_DPS_DOCUMENT_HANDLING_SELECT como FEEDER | DUPLEX | FRONT_FIRST. Depois que isso for feito, o aplicativo deverá navegar até o item filho do qual deve solicitar uma transferência de dados. O minidriver relata a frente da primeira página no alimentador como página um, a parte de trás dessa página como página dois e a frente da segunda página no alimentador como página três.

É importante lembrar que, se o dispositivo tiver um alimentador de documentos, ele deverá dar suporte às propriedades do alimentador de documentos.

Adquirir dados de um alimentador de documentos

Há algumas alterações que devem ser feitas na implementação do método IWiaMiniDrv::d rvAcquireItemData quando o verificador adquire imagens de um alimentador de documentos.

  1. Um aplicativo lê a propriedade WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES para determinar se o verificador dá suporte à verificação usando o alimentador de documentos.

  2. Um aplicativo lê a propriedade WIA_DPS_DOCUMENT_HANDLING_SELECT para determinar se o scanner está configurado para verificar usando o alimentador de documentos.

  3. Um aplicativo determina se há papel no alimentador de documentos lendo WIA_DPS_DOCUMENT_HANDLING_STATUS. Se não houver papel no alimentador, defina o WIA_DPS_DOCUMENT_HANDLING_STATUS como o código de status adequado e retorne WIA_ERROR_PAPER_EMPTY de IWiaMiniDrv::d rvAcquireItemData imediatamente após a aquisição.

  4. Verifique a propriedade WIA_DPS_PAGES para determinar o comportamento de verificação. Se essa propriedade for zero, examine todas as páginas até que o alimentador esteja vazio. Se for positivo, verifique apenas o número de páginas indicadas pelo valor contido na propriedade WIA_DPS_PAGES.

  5. Examine o número solicitado de páginas controlando um loop, verificando continuamente e enviando dados (uma página por vez) para o aplicativo WIA chamando o método IWiaMiniDrvCallBack::MiniDrvCallback . O exemplo de código a seguir mostra como isso pode funcionar:

    for(int x=1; x=Pagecount; x++)
    {
        \\ Tell scanner to scan an image.
        \\ Receive image data from scanner.
        \\ Send the just-scanned image to the registered application.
    }
    
  6. Se WIA_IPA_TYMED estiver definido como TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK, uma mensagem extra (IT_MSG_NEW_PAGE) deverá ser enviada depois que uma página for verificada e antes que a próxima seja verificada. Isso é feito chamando a função de utilitário de serviço WIA wiasSendEndOfPage .

O número de páginas retornadas por um driver do alimentador de documentos depende da configuração da propriedade WIA_DPS_PAGES.

Se WIA_DPS_PAGES for zero

  1. Se o verificador não conseguir verificar a primeira página, retorne um código de erro imediatamente. Isso inclui congestionamentos de papel e quando o scanner fica sem papel.

  2. Se o verificador examinar com êxito a primeira página e puder continuar a verificação, mas ficar sem papel, retorne o código de êxito WIA_STATUS_END_OF_MEDIA. Isso sinaliza ao aplicativo que a transferência foi bem-sucedida, mas o scanner ficou sem papel. Alguns aplicativos respondem a WIA_ERROR_PAPER_EMPTY da mesma maneira que WIA_STATUS_END_OF_MEDIA.

  3. Se o verificador examinar com êxito a primeira página e puder continuar a verificação, mas encontrar um erro que não resulte em perda de dados, retorne WIA_STATUS_END_OF_MEDIA. Isso permite que o aplicativo se recupere e salve todas as páginas verificadas antes que o erro ocorra. Todas as verificações subsequentes devem retornar um código de erro imediatamente até que o verificador tenha se recuperado corretamente da falha.

  4. Se o verificador examinar com êxito a primeira página e puder continuar a verificação, mas encontrar um erro que resulte em perda de dados, retorne um código de erro imediatamente.

Se WIA_DPS_PAGES for positivo

  1. Todas as regras para as quais WIA_DPS_PAGES é zero se aplicam.

  2. Se o scanner ficar sem papel antes que o número solicitado de páginas seja verificado, retorne WIA_STATUS_END_OF_MEDIA. Isso permite que o aplicativo feche a sessão de verificação, preservando assim o número de páginas já verificadas com êxito. Alguns aplicativos respondem a WIA_ERROR_PAPER_EMPTY da mesma maneira que WIA_STATUS_END_OF_MEDIA.