| How
can I detect if a (TWAIN) device is on-line?
The
official TWAIN way to ask if the device is "on-line"
is to open the device and query the capability CAP_DEVICEONLINE.
This was introduced in revision 1.6 of the TWAIN standard.
Unfortunately...
You will find few devices that implement this correctly. So
the truthful answer is: There is no good general way.
Still,
if you are working with a specific device or family of devices,
it is worth trying. Use TWAIN_OpenDefaultSource or TWAIN_OpenSource
to open the device (remembering to check for success) - then
try calling
TWAIN_GetCapBool(CAP_DEVICEONLINE,
2)
This
will attempt to read the value of this capability. This should
return
0
if the device claims to be off-line
1 if the device claims to be on-line
2 if the device doesn't know.
Most
probably, you will see an error dialog in the Open call, which
will then fail. And you can't ask the device if it is on-line,
until you get it open! Catch-22.
If
this doesn't work, you could do something tricky about asking
Windows directly about the USB device.
|