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 estilos de transferência de dados TYMED e baseados em fluxo para poder executar transferências de dados de aplicativos herdados e do Windows Vista. De maneira semelhante, um aplicativo WIA do Windows Vista teria que implementar ambos os estilos de transferências (com diferentes implementações de retorno de chamada) para poder executar transferências de dados 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.

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

  1. Aplicativo herdado transferindo dados de um driver 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 retorno de chamada: a camada de compatibilidade inicia uma transferência de retorno de chamada com o driver herdado.

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 observando o número da 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 do Windows Vista, WIA_DIP_STI_DRIVER_VERSION.

A próxima etapa para determinar se a camada de compatibilidade deve ser usada é determinar se um aplicativo WIA do Windows Vista ou um aplicativo WIA herdado é simples: se o aplicativo chamar IWiaDataTransfer::idtGetBandedData ou IWiaDataTransfer::idtGetData, é um aplicativo WIA herdado, se o aplicativo chamar IWiaTransfer::Download, é um aplicativo WIA do Windows Vista.

Com o novo modelo de transferência de dados baseado em fluxo, o serviço WIA não fará mais distinção 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 sejam compatíveis com varreduras TIFF (ou PDF) de várias páginas. Para obter mais informações sobre as constantes TYMED, consulte Noções básicas sobre TYMED.

O WIA não oferecerá suporte ao 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 armazenar a imagem inteira em cache no driver durante uma transferência. Essa forma de transferência é útil para transferir dados durante varreduras onde não é possível determinar imediatamente o tamanho da imagem que está sendo transferida, por exemplo, uma varredura com um scanner de alimentação de rolagem. 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.