WIA on TWAIN
Version 1.0
December 4, 2009
Table of Contents
1. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
Whats Provided . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Known Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
2. Creating WIA on TWAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Using the WIA on TWAIN Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
What the Wizard Generates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
Projects Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
WIA on TWAIN Guide
Table of Contents
ii
WIA on TWAIN Guide
1
Installation
Chapter Contents
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
Whats Provided . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Known Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Requirements
Installing the SDK
Visual Studio 2008
Administrative privileges to the Program Files directory
Minimum System Requirements
Intel Pentium 1.3GHz processor or AMD equivalent
512MB or RAM
TWAIN Data Source
It has to be TWAIN 1.9 compliant
It has to support MSG_ENABLEDS with ShowUI parameter equal to FALSE. It does not
allow TWAIN DS to interact with the user (no message boxes), because it runs in the
LOCAL SERVICE account
CAP_INDICATORS has to support FALSE
CAP_XFERCOUNT has to support 1. It is required by WIA compatibility layer if
Application is 1.0 (most common case)
ICAP_PIXELTYPE has to support at least one of TWPT_BW, TWPT_GRAY or TWPT_RGB
If TWAIN DS uses COM objects in its "main thread" they must be Both model.
It needs 32bit TWAIN DS for 32 bit OSs and 64 bit TWAIN DS for 64 bit OSs
WIA on TWAIN Guide
1-1
Chapter 1
WIA UI extension requires TWAIN DS to support MSG_ENABLEDSUIONLY. WIA driver
still can be used with default WIA UI
WIA UI extension requires TWAIN DS to support MSG_GET/MSG_SET for
DAT_CUSTOMDSDATA. WIA driver still can be used with default WIA UI
Whats Provided
The following items are installed on the computer.
Template files for the Wizard
TWAIN DSM (2.1)
Sample TWAIN DS
WIA driver for Sample DS
Source code project for "WIA driver for Sample DS"
Using WIA on TWAIN - this is document
Shortcuts
Known Limitations
The following list are the known limitations of WIA on TWAIN version 1.0
1-2
Sample implementation does not include an installer.
Sample implementation does not include a UI.
WIA on TWAIN Guide
2
Creating WIA on TWAIN
Chapter Contents
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Using the WIA on TWAIN Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
What the Wizard Generates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
Projects Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
Getting Started
1.
Launch Visual Studio 2008
2.
Go to File > New > Project
3.
Select the Project Type: TWAIN Working Group projects
4.
Select the Template: WIAonTWAINWizard
Figure 2-1
WIA on TWAIN Guide
2-1
Chapter 2
5.
Change the information in the fields Name, Location, Solution, and Solution Name as
needed for the new project.
6.
Click on OK to launch the WIA on TWAIN Wizard.
Using the WIA on TWAIN Wizard
The WIA on TWAIN wizard collects information for creating a WIA driver, INF file, and merge
module.
1.
In the General Settings window, change the data in each field to match your product
information.
Manufacture name - Scanner manufacturer
Product description - Description of the WIA driver
Product version - Version in format #.#.#.#
WIA driver name - Vame of the WIA driver file
Legal copyright - The companys legal copyright statement
TWAIN driver Manufacturer - must be the same as TW_IDENTITY.Manufacturer
reported by TWAIN DS
TWAIN driver Product Name - must be the same as TW_IDENTITY.ProductName
reported by TWAIN DS
TWAIN driver Version - must be the same as TW_IDENTITY.[Link] and
TW_IDENTITY.[Link] reported by TWAIN DS
Figure 2-2
2-2
WIA on TWAIN Guide
2.
Click Next > to proceed to the INF File Settings window. Or, click the INF File Settings link
on the left side of the window.
3.
Input the file name and hardware information for the INF file in the fields.
INF file name The name of output INF file
CAT file name - The name of output CAT file
USB scanner VID USB Vendor ID of the scanner (if it has a USB interface)
USB scanner PID USB Product ID of the scanner (if it has a USB interface)
SCSI Vendor SCSI Vendor name of the scanner (if it has a SCSI interface)
SCSI Product - SCSI Product name of the scanner (if it has a SCSI interface)
Figure 2-3
4.
Click Finish to complete the wizard.
What the Wizard Generates
The WIA on TWAIN Wizard generates a driver package and five projects - WIA driver, WIA UI
Extension, Merge Module, and two Installers (32 and 64 bit).
Driver package includes - INF file, CAT file, WIA driver and WIA UI extension DLLs (32 and 64
bit). The following indicates whether the generated data is specified by the user or the wizard.
INF file
[MANUFACTURE_NAME] User input in the Wizard
[TWAIN_DS_PRODUCT] User input in the Wizard
WIA on TWAIN Guide
2-3
Chapter 2
[WIA_DRIVER] User input in the Wizard
[WIA_DRIVER_UI] User input in the Wizard
[WIA_GUID] - Generated by the Wizard
[WIA_UI_GUID] - Generated by the Wizard
[LEGAL_COPYRIGHT] User input in the Wizard
[VERSION] User input in the Wizard
[INF_NAME] User input in the Wizard
[CAT_NAME] User input in the Wizard
[DATE] - Generated by the Wizard
[VID] User input in the Wizard
[PID] User input in the Wizard
[SCSI_ID] User input in the Wizard
[INSTALLATION_MEDIA_NAME] - Generated by the Wizard
WIA driver and WIA UI Extension
[MANUFACTURE_NAME] - User input in the Wizard
[PRODUCT_DESCRIPTION] User input in the Wizard
[PRODUCT_VERSION] User input in the Wizard
[WIA_DRIVER] User input in the Wizard
[WIA_DRIVER_UI] User input in the Wizard
[WIA_GUID] - Generated by the Wizard
[WIA_UI_GUID] - Generated by the Wizard
[LEGAL_COPYRIGHT] -User input in the Wizard
[TWAIN_DS_ MANUFACTURE] User input in the Wizard
[TWAIN_DS_PRODUCT] User input in the Wizard
[TWAIN_DS_VER_MAJOR] User input in the Wizard
[TWAIN_DS_VER_MINOR] User input in the Wizard
Merge module and Installers
2-4
[MANIFACTURE_NAME] User input in the Wizard
[PRODUCT_DESCRIPTION] User input in the Wizard
[PRODUCT_VERSION] User input in the Wizard
[PRODUCT_CODE] - Generated by the Wizard
[UPGRADE_CODE] - Generated by the Wizard
WIA on TWAIN Guide
Projects Description
WIA UI extension
It generates a WIA driver for a specific TWAIN DS. It works as a WIA 1.0 driver on
Windows XP and as a WIA 2.0 driver on the latest versions of Windows.
The WIA driver acts as a TWAIN application and loads TWAIN DSM (2.1). It recognize TWAIN
DS by TW_IDENTITY.Manufacturer, TW_IDENTITY.ProductName and
TW_IDENTITY.Version. If the TWAIN DS is common for the whole family of scanners then
TW_IDENTITY. ProductFamily has to be used instead of TW_IDENTITY.ProductName.
The WIA driver supports BMP file format only. And, it gets images from TWAIN DS using
Native transfer. It can be extended to support more file formats, and to use Memory and File
transfers from TWAIN DS. It is not possible to transfer files directly from TWAIN DS to a WIA
application. It has to store the file locally and copy its contents into the IStream. See http://
[Link]/en-us/library/[Link] for details.
The WIA driver supports the minimum number of WIA properties required for passing a
WINQUAL test, and required to work with most common WIA applications. The WIA driver
maps WIA properties to TWAIN capabilities using tables. TWAIN capabilities are listed
according to the "TWAIN Capability Ordering", located at [Link] Adding
new TWAIN capabilities to these tables has to follow this order. Because the WIA compatibility
layer transfers very few properties from WIA 1.0 application to WIA 2.0 driver, it is
recommended to do a test before adding new WIA properties to the driver.
WIA UI extension
It generates the WIA UI extension for specific TWAIN DS.
It acts differently for different WIA applications. If the Application is WIA 1.0, then it adds a
property page in the Advanced Properties dialog box of a standard WIA UI. If the Application is
WIA 2.0 it replaces the whole UI (because adding a property page is not possible) and then does
the image transfer. It may show the default WIA UI by pressing "Default UI" button.
WIA UI extension communicates with TWAIN DS using the same method as the WIA driver.
WIA UI extension is based on profiles. It creates/changes/deletes profiles based on
CUSTOMDSDATA received from TWAIN DS.
WIA driver uses custom properties to specify full path to a file, which WIA UI extension uses to
store a selected profile. If no profile is selected then the file is empty.
WIA on TWAIN Guide
2-5
Chapter 2
WIA UI shares few source files related to TWAIN DS with WIA driver.
Figure 2-4 - default WIA 1.0 UI dialog
Figure 2-5 - default WIA 2.0 UI dialog
2-6
WIA on TWAIN Guide
WIA 1.0 UI extension
WIA 2.0 UI extension
Figure 2-6
Figure 2-7
Property page added by WIA UI extension
(displays when you click "Adjust the quality
of the scanned picture" on default WIA UI
Dialog)
NewClick to open the prompt for a new profile name. This launches the TWAIN DS UI
and the new profile will be stored after closing the TWAIN DS UI.
EditSelect the profile you want to edit from the Profiles list and then click Edit. The
profile will load, set CUSTOMDSDATA, and then display the TWAIN DS UI. The edited
profile will be stored after closing the TWAIN DS UI.
DeleteSelect the profile you want to delete from the Profiles list then click Delete. The
profile will be deleted from the profile directory.
ScanClicking the Scan button (WIA 2.0 application only) will do an image transfer from
WIA driver to WIA application.
Default UIClicking the Default UI button (WIA 2.0 application only) will display the
default WIA UI.
Merge Module
It generates the Merge Module used by installers. The Merge Module includes the driver
package - INF file, CAT file, WIA driver and WIA UI extension DLLs (32 and 64 bit).
The INF file is based on the assumption that the TWAIN driver communicates with the scanner
via [Link] and/or [Link]. If the TWAIN DS uses third party drivers, then the
INF file has to be manually modified.
This project module applies transformation on a generated Merge Module to add an INF file
component ID to MsiDriverPackages table. If the INF file is deleted by the project and then
added again, the component ID will be different and transformation will not work. It will be
required to generate new transformation or do it manually
WIA on TWAIN Guide
2-7
Chapter 2
32 bit Installer
It generates an installer file for 32 bit OS. It includes the driver package merge module, DIFx
merge module (32 bit), and TWAIN DSM merge module (32 bit version). It is recommended 32
bit version of TWIAN DS be added.
64 bit Installer
It generates an installer file for 64 bit OS. It includes the driver package merge module, DIFx
merge module (64 bit), and TWAIN DSM merge modules (32 and 64 bit versions). It is
recommended both 32 and 64 bit versions of TWIAN DS be added.
2-8
WIA on TWAIN Guide