Cancelación del controlador de errores de WIA de cuadros de diálogo modeless
Gran parte de la complejidad del controlador de errores gira en torno a cómo se controlan la cancelación y el descarte de los cuadros de diálogo de modelos.
En concreto, el código de proxy WIA garantiza que un controlador de errores de nivel inferior (es decir, un controlador distinto del controlador de errores de la aplicación) tenga la oportunidad de comunicar una solicitud de cancelación desde un cuadro de diálogo de modelado al controlador; esto garantiza que un controlador de nivel inferior tenga la oportunidad de descartar su cuadro de diálogo modeless.
Para permitir que un controlador de errores cancele una operación de transferencia de datos desde un cuadro de diálogo modelado, un controlador debe seguir enviando mensajes WIA_TRANSFER_MSG_DEVICE_STATUS con el mismo código hrErrorStatus , posiblemente actualizando el parámetro lPercentComplete para permitir que una interfaz de usuario del controlador de errores muestre el progreso. Por ejemplo, si un controlador puede dar una estimación del tiempo que tarda realmente el "calentamiento", puede enviar un número de mensajes de dispositivo con hrErrorStatus establecido en WIA_STATUS_WARMING_UP. Esto permitirá al controlador de errores mostrar un cuadro de diálogo de progreso, así como dar al usuario la oportunidad de cancelar la transferencia desde este cuadro de diálogo. El parámetro lPercentComplete pasado a IWiaErrorHandler::ReportStatus es exactamente el mismo parámetro lPercentComplete que el controlador establece en el método IWiaTransferCallback::WiaTransferParams . Para obtener un ejemplo de esto, consulta el controlador de monstruos WIA extendido en el CD de WDK.
Para permitir que un controlador de errores descarte un cuadro de diálogo de modelos, Microsoft introdujo el código de estado del dispositivo WIA_STATUS_CLEAR. El proxy WIA envía este mensaje al controlador de errores que muestra actualmente una interfaz de usuario modelada cuando el proxy WIA recibe un mensaje de dispositivo diferente del que se muestra actualmente. El proxy también envía el mensaje WIA_STATUS_CLEAR cuando:
El controlador envía el mensaje de WIA_TRANSFER_MESSAGE_STATUS,
durante las llamadas al método IWiaTransferCallback::GetNextStream
al final de la secuencia o transferencia (si actualmente hay un controlador de errores que muestra una interfaz de usuario de modelado).
Los controladores no deben enviar el mensaje WIA_STATUS_CLEAR ellos mismos.
La interfaz IWiaTransferCallback se describe en la documentación de Microsoft Windows SDK.