Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La capa de compatibilidad permite que una aplicación de Windows Vista llame a IWiaTransfer::Download (según se describe en la documentación de Microsoft Windows SDK) en un controlador heredado. La capa de compatibilidad tiene que implementar código de transferencia de carpetas, así como conversiones de formato. La capa de compatibilidad implementa código especial para las transferencias del alimentador para asegurarse de que siempre es posible transferir varias páginas desde un controlador heredado. Una aplicación de Windows Vista siempre debe poder solicitar varias páginas durante un escaneo desde el alimentador, incluso con una transferencia "TYMED_FILE". En el diagrama siguiente se muestra un controlador heredado con una aplicación de Windows Vista.
El objeto de devolución de llamada heredado dentro del servicio WIA convierte los mensajes y datos de transferencia heredados en mensajes de transferencia de Windows Vista y escribe los datos en el flujo proporcionado.
Una aplicación de Windows Vista solo espera TYMED_FILE y TYMED_MULTIPAGE_FILE, por lo que la capa de compatibilidad es responsable de garantizar que TYMED_CALLBACK y TYMED_MULTIPAGE_CALLBACK no se expongan a una aplicación de Windows Vista desde un controlador heredado.
La manera más sencilla de implementar esta parte de la capa de compatibilidad ha sido llamar siempre al controlador heredado con TYMED_FILE y TYMED_MULTIPAGE_FILE configurados. El inconveniente de esto es que el controlador siempre tendría que haber escaneado toda la imagen antes de que los datos pudieran volver a escribirse en la secuencia de la aplicación. Por lo tanto, la capa de compatibilidad utiliza TYMED_CALLBACK cuando una aplicación de Windows Vista solicita un escaneo del formato WiaImgFmt_BMP (con la propiedad WIA_IPA_FORMAT establecida en WiaImgFmt_BMP). Esto permite que la capa de compatibilidad escriba los datos de nuevo, banda por banda.
Sin embargo, un controlador heredado no admite WiaImgFmt_BMP, pero WiaImgFmt_MEMORYBMP para TYMED_CALLBACK. Por lo tanto, el objeto de devolución de llamada de conversión también tiene que crear el encabezado de archivo BMP y volver a escribir este encabezado de archivo en la aplicación. A veces esto es fácil, como cuando el encabezado de archivo BMP se puede construir directamente a partir del encabezado de información de BMP. Sin embargo, hay casos en los que el alto del encabezado de información BMP se establece en 0. En este caso, la capa de compatibilidad de WIA debe esperar hasta que se hayan transferido todos los datos para poder escribir el encabezado de archivo BMP y actualizar el encabezado de información BMP.
La razón de que las transferencias TYMED, aparte de únicamente TYMED_CALLBACK, se efectúen a partir de un controlador heredado es que los formatos multipágina generalmente solo son compatibles con TYMED_MULTIPAGE_FILE, y los controladores normalmente admiten más formatos para TYMED_FILE que para TYMED_CALLBACK.
Durante una transferencia TYMED_FILE, la capa de compatibilidad espera hasta que la transferencia finalice antes de escribir los datos de nuevo en el flujo de la aplicación. Esto se hace asignando el archivo a la memoria y volviendo a escribir toda la información desde la memoria mediante una sola solicitud de escritura.
Durante una transferencia de TYMED_CALLBACK, la capa de compatibilidad vuelve a escribir en el flujo de la aplicación cada vez que recibe un mensaje de transferencia IT_MSG_DATA del controlador heredado.
La capa de compatibilidad también contiene un código especial para las transferencias feeder. Este código garantiza que la capa de compatibilidad pueda transferir varias páginas desde el ADF, incluso cuando TYMED no es TYMED_MULTIPAGE_FILE. La manera en que esto se hace es permitir que la capa de compatibilidad llame al controlador varias veces, solicitando solo una página cada vez. Esta solución garantiza que cada controlador heredado pueda controlar las transferencias de varias páginas desde el alimentador cuando se invoque mediante una aplicación de Windows Vista.
Un controlador heredado puede enviar mensajes "fuera de banda" durante las transferencias (por ejemplo, para obtener una vista previa). Estos mensajes se omitirán ya que no encajan en el modelo de transferencia basado en secuencias.
Para obtener más información sobre las constantes TYMED, consulte Descripción de TYMED.