Creación de componentes de Device-Specific para las API de adquisición de imágenes
Las API de adquisición de imágenes, como TWAIN, normalmente requieren componentes específicos del dispositivo, como orígenes de datos de TWAIN. Estos componentes específicos del dispositivo deben usar la interfaz COM IStillImage y la interfaz COM de IStiDevice para comunicarse con controladores de dispositivos de imagen en modo de usuario y el monitor de eventos.
Las API de adquisición de imágenes pueden llamar a IStillImage::GetDeviceValue e IStillImage::SetDeviceValue para leer y escribir entradas del Registro para dispositivos de imagen fija. Por ejemplo, el nombre de cada origen de datos TWAIN del dispositivo de imagen todavía se almacena en el registro.
Dado que la API de TWAIN no permite que una aplicación especifique el dispositivo activo al llamar a un origen de datos, el origen de datos normalmente llamará a IStillImage::GetDeviceList para obtener una lista de todos los dispositivos de imagen todavía y, a continuación, buscará la lista para encontrar el dispositivo correcto, normalmente basado en los nombres de fabricante y modelo. Los nombres de texto del fabricante y del modelo se obtienen del archivo de información de configuración (INF). Dado que TWAIN tiene un límite de 32 caracteres para los nombres de origen de datos y porque WIA anexa "WIA-" a cadenas para construir los nombres compatibles, el texto del archivo INF no debe tener más de 28 caracteres. De lo contrario, es posible que las aplicaciones compatibles con TWAIN que realicen una comparación en toda la cadena, y no solo los primeros 32 caracteres, no puedan encontrar automáticamente el dispositivo que provocó el inicio de la aplicación.
Para acceder a un dispositivo, el software de adquisición de imágenes llama a IStillImage::CreateDevice para crear una instancia del objeto COM que define la interfaz IStiDevice . La interfaz IStiDevice proporciona varios métodos para realizar operaciones de E/S del dispositivo. Al crear la instancia de objeto, el software de adquisición de imágenes debe especificar los modos de transferencia de "datos".
El software de adquisición de imágenes puede llamar a IStiDevice::Subscribe para solicitar al monitor de eventos que entregue la notificación de los eventos de dispositivo de imagen todavía. Una vez recibida la notificación, se puede llamar a IStiDevice::GetLastNotificationData para determinar el tipo de evento. Se debe llamar a IStiDevice::UnSubscribe cuando ya no se necesiten notificaciones.
Cuando el software de adquisición de imágenes haya terminado de usar la interfaz IStiDevice , debe llamar a IStiDevice::Release.