Partilhar via


Visão geral das transferências de dados da camada de compatibilidade WIA

Sem a camada de compatibilidade de transferência, um driver WIA do Windows Vista teria que implementar TYMED e estilos de transferência de dados baseados em fluxo para poder executar transferências de dados de aplicativos herdados e do Windows Vista. Da mesma forma, uma aplicação WIA do Windows Vista teria que implementar ambos os estilos de transferência (com diferentes implementações de callbacks) para poder realizar transferências de dados a partir de drivers herdados e do Windows Vista. Com a camada de compatibilidade WIA, o tipo de driver é transparente para um aplicativo WIA e um driver WIA do Windows Vista não precisa lidar com nenhum código de transferência herdado.

Existem dois casos de transferência em que é necessária uma camada de compatibilidade, cada um dos quais pode ser dividido em duas subcategorias:

  1. Aplicação legada a transferir dados de um controlador do Windows Vista:

    1. Transferência de arquivos: O aplicativo chama IWiaDataTransfer::idtGetBandedData.
    2. Transferência de retorno de chamada: O aplicativo chama IWiaDataTransfer::idtGetData.
  2. Um aplicativo do Windows Vista transferindo dados de um driver herdado:

    1. Transferência de arquivos: A camada de compatibilidade inicia a transferência de arquivos com o driver herdado.
    2. Transferência de callback: A camada de compatibilidade inicia uma transferência de callback com o driver legado.

A primeira etapa para determinar se a camada de compatibilidade deve ser usada é determinar se um driver WIA é um driver do Windows Vista ou um driver herdado. O serviço WIA determinará isso examinando o número de versão que um driver retorna de IStiUSD::GetCapabilities. Um driver herdado retorna STI_VERSION para o número da versão, enquanto um driver do Windows Vista deve retornar STI_VERSION_3. Esse número de versão será exposto ao proxy WIA COM (e a um aplicativo WIA) na propriedade Windows Vista, WIA_DIP_STI_DRIVER_VERSION.

A próxima etapa para determinar se deve usar a camada de compatibilidade é determinar se um aplicativo é um aplicativo WIA do Windows Vista ou um aplicativo WIA herdado é simples: se o aplicativo chama IWiaDataTransfer::idtGetBandedData ou IWiaDataTransfer::idtGetData é um aplicativo WIA herdado, se o aplicativo chama IWiaTransfer::D ownload é um aplicativo WIA do Windows Vista.

Com o novo modelo de transferência de dados baseado em fluxo, o serviço WIA não distinguirá mais entre TYMED_CALLBACK e TYMED_FILE (ou TYMED_MULTIPAGE_CALLBACK e TYMED_MULTIPAGE_FILE). Em vez disso, haverá apenas TYMED_FILE e TYMED_MULTIPAGE_FILE. TYMED_MULTIPAGE_FILE é necessário para permitir que os drivers suportem digitalizações TIFF (ou PDF) de várias páginas. Para obter mais informações sobre as constantes TYMED, consulte Understanding TYMED.

WIA não suportará o formato de bitmap de memória WiaImgFmt_MEMORYBMP nos drivers do Windows Vista.

Os drivers do Windows Vista podem enviar mensagens de atualização para transferir dados em bandas, em vez de fazer com que o driver armazene em cache toda a imagem durante uma transferência. Esta forma de transferência é útil para transferir dados durante digitalizações onde não é imediatamente possível determinar o tamanho da imagem a ser transferida, por exemplo, uma digitalização com um scanner de alimentação contínua. Para transferir dados de imagem em bandas, o driver deve chamar IStream::Seek no fluxo passado para ele em IWiaTransferCallback::GetNextStream.

Para obter informações adicionais sobre TYMED e transferências baseadas em fluxo, consulte Transferências de dados.

As interfaces IWiaDataTransfer, IWiaTransfer e IStream são discutidas na documentação do SDK do Microsoft Windows.