Возможно, я принимаю вопрос слишком буквально, но, используя TWAIN API, невозможно проверить, подключено ли устройство, то есть подключено и включено. Стандарт TWAIN действительно определяет для этой цели возможность, называемую CAP_DEVICEONLINE, но эта функция настолько плохо продумана, и лишь немногие драйверы реализуют ее правильно, что на практике она бесполезна.
Самое близкое, что вы можете получить, это: Открыть устройство (MSG_OPENDS): Почти все драйверы будут проверять готовность устройства, когда они открыты, и отображать диалоговое окно с ошибкой для пользователя. Нет механизма TWAIN для подавления или обнаружения этого диалогового окна. Некоторые драйверы позволяют пользователю исправить проблему и продолжить, и в этом случае вы (ваше приложение) никогда не узнаете, что возникла проблема. Некоторые драйверы позволяют пользователю отменять, и в этом случае операция MSG_OPENDS завершится неудачно, возможно, вернув TWRC_CANCEL, но, возможно, TWRC_FAILURE
Несколько драйверов TWAIN откроются без ошибок, даже если устройство находится в автономном режиме. Такой драйвер может вернуть FALSE на запрос CAP_DEVICEONLINE. Такой драйвер, вероятно, выполнит проверку устройства в режиме онлайн, когда вы включите устройство с помощью MSG_ENABLEDS, а затем, если устройство не подключено, вы получите диалоговое окно с сообщением об ошибке и т. Д., Как указано выше.
Кроме того, и IMPO: WIA «более современна», но также гораздо менее полна для сканирования, чем TWAIN, и, по моему опыту, непригодна для многостраничного сканирования из устройства подачи документов. Дизайнеры и сопровождающие WIA, похоже, не понимают и не заботятся о сканерах, за исключением недорогих потребительских планшетов. Это хорошо для камер.