Tal vez estoy tomando la pregunta demasiado literalmente, pero utilizando la API TWAIN, no es posible verificar si un dispositivo está enchufado, es decir, conectado y encendido. El estándar TWAIN define una capacidad para este propósito llamada CAP_DEVICEONLINE, pero esta característica está tan mal concebida y tan pocos controladores la implementan correctamente que es inútil en la práctica.
Lo más cerca que puede obtener es esto: Abra el dispositivo (MSG_OPENDS): Casi todos los controladores verifican si el dispositivo está listo cuando se abren y muestran un cuadro de diálogo de error al usuario. No existe un mecanismo TWAIN para suprimir o detectar este cuadro de diálogo Algunos controladores permitirán al usuario corregir el problema y continuar, en cuyo caso usted (su aplicación) nunca sabrá que hubo un problema. Algunos controladores permitirán que el usuario cancele, en cuyo caso la operación MSG_OPENDS fallará, probablemente devuelva TWRC_CANCEL pero quizás TWRC_FAILURE
Algunos controladores TWAIN se abrirán sin error aunque el dispositivo esté fuera de línea. Tal controlador puede devolver FALSE a una consulta de CAP_DEVICEONLINE. Es probable que ese controlador realice la verificación en línea del dispositivo cuando habilita el dispositivo con MSG_ENABLEDS, y luego, si el dispositivo no está en línea, obtiene el diálogo de error para el usuario, y así sucesivamente.
Aside e IMPO: WIA es "más moderno" pero también mucho menos completo para el escaneo que TWAIN, y en mi experiencia inutilizable para el escaneo de múltiples páginas desde un alimentador de documentos. Los diseñadores y mantenedores de WIA parecen no entender o preocuparse por los escáneres que no sean de gama baja para consumidores de gama baja. Es bueno para las cámaras.
+1 para explicar las cosas –