Información general sobre las transferencias de datos de la capa de compatibilidad de WIA
Sin la capa de compatibilidad de transferencia, un controlador WIA de Windows Vista habría tenido que implementar estilos de transferencia de datos basados en secuencias y TYMED para poder realizar transferencias de datos desde aplicaciones heredadas y de Windows Vista. Del mismo modo, una aplicación WIA de Windows Vista habría tenido que implementar ambos estilos de transferencias (con diferentes implementaciones de devolución de llamada) para poder realizar transferencias de datos de controladores heredados y de Windows Vista. Con la capa de compatibilidad de WIA, el tipo de controlador es transparente para una aplicación WIA y un controlador WIA de Windows Vista no tiene que tratar con ningún código de transferencia heredado.
Hay dos casos de transferencia en los que se necesita una capa de compatibilidad, cada una de las cuales puede dividirse más en dos subcategorías:
Aplicación heredada que transfiere datos desde un controlador de Windows Vista:
- Transferencia de archivos: la aplicación llama a IWiaDataTransfer::idtGetBandedData.
- Transferencia de devolución de llamada: la aplicación llama a IWiaDataTransfer::idtGetData.
Aplicación de Windows Vista que transfiere datos desde un controlador heredado:
- Transferencia de archivos: la capa de compatibilidad inicia la transferencia de archivos con el controlador heredado.
- Transferencia de devolución de llamada: la capa de compatibilidad inicia una transferencia de devolución de llamada con el controlador heredado.
El primer paso para determinar si se debe usar la capa de compatibilidad es determinar si un controlador WIA es un controlador de Windows Vista o un controlador heredado. El servicio WIA lo determinará examinando el número de versión que devuelve un controlador de IStiUSD::GetCapabilities. Un controlador heredado devuelve STI_VERSION para el número de versión, mientras que un controlador de Windows Vista debe devolver STI_VERSION_3. Este número de versión se expondrá al proxy COM de WIA (y una aplicación WIA) en la propiedad Windows Vista, WIA_DIP_STI_DRIVER_VERSION.
El siguiente paso para determinar si usar la capa de compatibilidad es determinar si una aplicación es una aplicación WIA de Windows Vista o una aplicación WIA heredada es sencilla: si la aplicación llama a IWiaDataTransfer::idtGetBandedData o IWiaDataTransfer::idtGetData es una aplicación WIA heredada, si la aplicación llama a IWiaTransfer::D ownload es una aplicación WIA de Windows Vista.
Con el nuevo modelo de transferencia de datos basado en secuencias, el servicio WIA ya no distinguirá entre TYMED_CALLBACK y TYMED_FILE (o TYMED_MULTIPAGE_CALLBACK y TYMED_MULTIPAGE_FILE). En su lugar, solo habrá TYMED_FILE y TYMED_MULTIPAGE_FILE. TYMED_MULTIPAGE_FILE es necesario para permitir que los controladores admitan exámenes TIFF (o PDF) de varias páginas. Para obtener más información sobre las constantes TYMED, consulte Descripción de TYMED.
WIA no admitirá el formato de mapa de bits de memoria WiaImgFmt_MEMORYBMP en los controladores de Windows Vista.
Los controladores de Windows Vista pueden enviar mensajes de actualización para transferir datos en bandas en lugar de tener la memoria caché del controlador toda la imagen durante una transferencia. Esta forma de transferencia es útil para transferir datos durante los exámenes en los que no es posible determinar inmediatamente el tamaño de la imagen que se transfiere, por ejemplo, un examen con un escáner de fuente de desplazamiento. Para transferir datos de imagen en bandas, el controlador debe llamar a IStream::Seek en la secuencia que se le pasa en IWiaTransferCallback::GetNextStream.
Para obtener más información sobre TYMED y transferencias basadas en flujos, consulte Transferencias de datos.
Las interfaces IWiaDataTransfer, IWiaTransfer e IStream se describen en la documentación del SDK de Microsoft Windows.