dynarithmic / twain_library

Dynarithmic TWAIN Library, Version 5.x
Apache License 2.0
60 stars 25 forks source link

HP-7000 S3 Twain Driver Issues (64-bit) #44

Open dynarithmic opened 1 year ago

dynarithmic commented 1 year ago

There is an ongoing ticket concerning the HP-7000 S3 scanner driver for 64-bit applications (there are no issues with the 32-bit driver).

Basically, the 64-bit HP-7000 S3 scanner driver has the following issues:

1) Does not correctly determine the state of the paper feeder (whether paper is loaded, whether the feeder is enabled, etc.) 2) Does not return a valid bitmap when scanning in native mode.

There was another issue with the scanning process being "stuck", but this has been corrected in an upcoming version of DTWAIN. However, the issues outlined above can only be addressed by HP.

For issue 1), it is recommended that 64-bit applications that access the HP 7000 S3 avoid the following functions to determine the status of the paper feeder:

This issue was detected by running a very simple DTWAIN C++ application, as well as running the TWACKER program (TWACKER is a program that was authored by the Twain Working Group, so it does not share any code with the DTWAIN library).

For issue 2), the application accessing the scanner should avoid these functions, due to an invalid bitmap handle being returned from the HP scanner:

Instead, the application should use the following functions to acquire images:

When HP addresses these issues, this ticket will be closed. There is no time frame on when HP will address the issues outlined.

dynarithmic commented 1 year ago

After further analysis, the feeder state functions for the HP 64-bit driver relies on the MSG_GETCURRENT capability operation instead of the traditional MSG_GET operation that existed for the TWAIN_32.DLL Data Source Manager. For this change, updated DTWAIN DLL's will be issued shortly.

The two outstanding issues are now:

1) Invalid bitmaps being returned on native transfers, and 2) The HP driver will throw exceptions on opening and closing the HP source if certain HP-specific XML files are not present.

For 1), please use the DTWAIN_AcquireBuffered(Ex) and DTWAIN_AcquireFile(Ex) functions (using the DTWAIN_USEBUFFERED flag setting).