Why GetScanners method of ICoreScanner finished with status 103



I have  Motorola_CoreScanner_Driver_(64bit)_v2.05.0004 and Motorola_Scanner_SDK_(64bit)_v2.04.0012 installed on my computer.


As you may know  in  Program Files\Motorola Scanner\Scanner SDK\Scanner SDK\Sample Applications\bin there are two SampleSDK applications, one written in C++ second in C# - issue applies to both of them.


consider a scenario:


- scanner is pluged in to USB port (mine is LS 2208)

- start ScannerSDK application ( no matter which one C++ or C#)

- press 'Discover Scanners' button


in the Log I get folowing output


1. OPEN SCANNERS - Command Success.

2. REGISTER_FOR_ALL_EVENTS - Command Success.

3. GET_SCANNERS - Command Failed. Error:103


when then (having application still running) I plug out the scanner and plug it in again it is detected and added to 'Select Scanner' combo box.


2 new entries come up in the Log:


4. Scanner Detached Event Fired

5. Scanner Attached Event Fired


Any consecutive click on 'Discover Scanners' button ends with:


6. OPEN SCANNERS - Command Failed. Error:200  (this one is understandable, as it is already open)

7. REGISTER_FOR_ALL_EVENTS - Command Success.

8. GET_SCANNERS - Command Failed. Error:103 (I always get error 103)


I installed 32bit version on my old 32bit laptop - same issue


After compiling SampleSDK app and quick round of debugging I found the issue lays in bolded line.


long CScannerCommands::cmdDiscover(BSTR * outXml,long *Status)



    SHORT NumScan=0;


    SAFEARRAYBOUND bound[1];

    bound[0].lLbound = 0;

    bound[0].cElements = 255;

    pSA = SafeArrayCreate(VT_I2, 1, bound);


    hr = ScannerInterface->GetScanners(&NumScan,pSA,outXml,Status);


    return hr;



GetScanners always returns 103 in Status.


According to CoreScanner developers guide 103 is described as Invalid buffer pointer ( ERROR_INVALID_BUFFER_POINTER).

Floowing this hint I changed VT_I2 in line pSA = SafeArrayCreate(VT_I2, 1, bound);  to VT_I4, VT_I8, VT_INT with same result - always getting 103


I came to the conclusion that there might be a bug in ICoreScanner COM component.


Is there a solution or workaround to this issue?

I need to have GetScanners function working, forcing user of my app to plug out and in the scanner to make it detected is not an option.