Why can't WIA see my scanner?

Dhaust picture Dhaust · Mar 10, 2010 · Viewed 14.1k times · Source

I'm trying to use WIA (Microsoft Windows Image Acquisition Library v2.0) to build a C# 3.5 WinForms app in VS2008 running on a Vista rig to aquire images from a scanner.

I know there are plenty of SDKs out there that do this (Accusoft, ByteScout, Knowledge Lake, etc) but we wanted some control over the UI (or lack of) and the ability to customize the processing and handling of the images, which is why we're trying the WIA angle.

However, I have been unable to get WIA to 'see' my scanner.

The 'Microsoft Windows Image Acquisition Library v2.0' dll has been referenced in the VS project and I have included 'using WIA;' at the top of the page.

Here is the section of code:

//Choose Scanner
CommonDialogClass class1 = new CommonDialogClass();
Device d = class1.ShowSelectDevice(WiaDeviceType.UnspecifiedDeviceType, true, false);
if (d != null)
{
    this.DeviceID = d.DeviceID;
}
else
{
    //no scanner chosen
    return;
}

Complies fine but line 2 (Device d = ...) kicks the following error when run:
Exception from HRESULT: 0x80210015

From what I can tell, this usually means your device is unplugged/not turned on or the device is not WIA compatible.
But the scanner in question shows up in Control Panel/Scanners and Cameras (means it's WIA compatible) and works when accessed via Photoshop (means it's turned on).

I have plugged in other devices (Digital SLR) and the above code can 'see' them, so the code is working.

Does anyone have any suggestions as to what is going wrong and how to fix it?

Update 1:
I have tried a couple of different scanners (Canon 5000F, Benq 5250C), but same problem.

Update 2:
I have been unable to find definitive proof of this, but I'm thinking that the scanners I have been testing with, or maybe most scanners :( , are not WIA compatible/supported. I'm am now looking into using TWAIN, but would still love to hear of anyone who has had some success with WIA.

Update 3: Ended up ditching WIA and using a .NET Twain SDK (EZTwain). All sorted now. Thanks to everyone for thier input.

Answer

Ali Bahrami picture Ali Bahrami · Nov 24, 2016

I think your scanner doesn't support WIA. I recommend to use TWAIN which is supported by most vendors.

I recommend to use NTWAIN library:

Nuget Pakcage: https://www.nuget.org/packages/NTwain/

Source Code: https://bitbucket.org/soukoku/ntwain