Requirements to be a TWAIN-Compliant Source
Requirements
TWAIN-compliant Sources must support the following:
Operations
----------
DG_CONTROL / DAT_CAPABILITY / MSG_GET
DG_CONTROL / DAT_CAPABILITY / MSG_GETCURRENT
DG_CONTROL / DAT_CAPABILITY / MSG_GETDEFAULT
DG_CONTROL / DAT_CAPABILITY / MSG_RESET
DG_CONTROL / DAT_CAPABILITY / MSG_SET
DG_CONTROL / DAT_EVENT / MSG_PROCESSEVENT
DG_CONTROL / DAT_IDENTITY / MSG_GET
DG_CONTROL / DAT_IDENTITY / MSG_OPENDS
DG_CONTROL / DAT_IDENTITY / MSG_CLOSEDS
DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER
DG_CONTROL / DAT_PENDINGXFERS / MSG_GET
DG_CONTROL / DAT_PENDINGXFERS / MSG_RESET
DG_CONTROL / DAT_SETUPMEMXFER / MSG_GET
DG_CONTROL / DAT_STATUS / MSG_GET
DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS
DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS
DG_CONTROL / DAT_XFERGROUP / MSG_GET
DG_IMAGE / DAT_IMAGEINFO / MSG_GET
DG_IMAGE / DAT_IMAGELAYOUT / MSG_GET
DG_IMAGE / DAT_IMAGELAYOUT / MSG_GETDEFAULT
DG_IMAGE / DAT_IMAGELAYOUT / MSG_RESET
DG_IMAGE / DAT_IMAGELAYOUT / MSG_SET
DG_IMAGE / DAT_IMAGEMEMXFER / MSG_GET
DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET

Capabilities
------------
Every Source must support all five DG_CONTROL / DAT_CAPABILITY operations on:
CAP_XFERCOUNT
Every Source must support DG_CONTROL / DAT_CAPABILITY MSG_GET on:
CAP_SUPPORTEDCAPS
CAP_UICONTROLLABLE
Sources that supply image information must support DG_CONTROL / DAT_CAPABILITY /
MSG_GET, MSG_GETCURRENT, MSG_GETDEFAULT on:
ICAP_COMPRESSION
ICAP_PLANARCHUNKY
ICAP_PHYSICALHEIGHT
ICAP_PHYSICALWIDTH
ICAP_PIXELFLAVOR
Sources that supply image information must support DG_CONTROL / DAT_CAPABILITY /
MSG_GET, MSG_GETCURRENT, MSG_GETDEFAULT, MSG_RESET and MSG_SET on:
ICAP_BITDEPTH
ICAP_BITORDER
ICAP_PIXELTYPE
ICAP_UNITS
ICAP_XFERMECH
ICAP_XRESOLUTION
ICAP_YRESOLUTION
All Sources must implement the advertised features supported by their devices. They must
make these features available to applications via the TWAIN protocol. For example, a Source
thats connected to a device that has an ADF must support DG_CONTROL /
DAT_CAPABILITY / MSG_GET, MSG_GETCURRENT, MSG_GETDEFAULT on:
CAP_FEEDERENABLED
CAP_FEEDERLOADED
and DG_CONTROL / DAT_CAPABILITY / MSG_GET, MSG_GETCURRENT,
MSG_GETDEFAULT, MSG_RESET and MSG_SET on:
CAP_AUTOFEED
If the ADF also supports ejecting and rewinding of pages then the Source should also support
DG_CONTROL / DAT_CAPABILITY / MSG_GET, MSG_GETCURRENT,
MSG_GETDEFAULT, MSG_RESET and MSG_SET on:
CAP_CLEARPAGE
CAP_REWINDPAGE


*******************************************************************************

From Application to Source Manager (Control Information)

Data Group		Data Argument Type	Message
DG_CONTROL		DAT_IDENTITY 		MSG_CLOSEDS
						MSG_GETDEFAULT
						MSG_GETFIRST
						MSG_GETNEXT
						MSG_OPENDS
						MSG_USERSELECT
DG_CONTROL		DAT_PARENT		MSG_CLOSEDSM
						MSG_OPENDSM
DG_CONTROL		DAT_STATUS		MSG_GET

From Application to Source (Control Information)
Data Group		Data Argument Type 	Message
DG_CONTROL		DAT_CAPABILITY		MSG_GET
						MSG_GETCURRENT
						MSG_GETDEFAULT
						MSG_QUERYSUPPORT
						MSG_RESET
						MSG_SET
DG_CONTROL		DAT_CUSTOMDSDATA	MSG_GET
						MSG_SET
DG_CONTROL		DAT_FILESYSTEM		MSG_AUTOMATICCAPTURE
						DIRECTORY
						MSG_CHANGEDIRECTORY
						MSG_COPY
						MSG_CREATEDIRECTORY
						MSG_DELETE
						MSG_FORMATMEDIA
						MSG_GETCLOSE
						MSG_GETFIRSTFILE
						MSG_GETINFO
						MSG_GETNEXTFILE
						MSG_RENAME
DG_CONTROL		DAT_EVENT		MSG_PROCESSEVENT
DG_CONTROL		DAT_PASSTHRU		MSG_PASSTHRU
DG_CONTROL		DAT_PENDINGXFERS	MSG_ENDXFER
						MSG_GET
						MSG_RESET
						MSG_STOPFEEDER
DG_CONTROL		DAT_SETUPFILEXFER	MSG_GET
						MSG_GETDEFAULT
						MSG_RESET
						MSG_SET
DG_CONTROL		DAT_SETUPFILEXFER2	MSG_GET
						MSG_GETDEFAULT
						MSG_RESET
						MSG_SET
DG_CONTROL		DAT_SETUPMEMXFER	MSG_GET
DG_CONTROL		DAT_STATUS		MSG_GET
DG_CONTROL		DAT_USERINTERFACE	MSG_DISABLEDS
						MSG_ENABLEDS
						MSG_ENABLEDSUIONLY
DG_CONTROL		DAT_XFERGROUP		MSG_GET
						MSG_SET

From Application to Source (Image Information)
Data Group		Data Argument Type	Message
DG_IMAGE		DAT_CIECOLOR		MSG_GET
DG_IMAGE		DAT_EXTIMAGEINFO	MSG_GET
DG_IMAGE		DAT_GRAYRESPONSE	MSG_RESET
						MSG_SET
DG_IMAGE		DAT_IMAGEFILEXFER	MSG_GET
DG_IMAGE		DAT_IMAGEINFO		MSG_GET
DG_IMAGE		DAT_IMAGELAYOUT		MSG_GET
						MSG_GETDEFAULT
						MSG_RESET
						MSG_SET
DG_IMAGE		DAT_IMAGEMEMXFER	MSG_GET
DG_IMAGE		DAT_IMAGENATIVEXFER	MSG_GET
DG_IMAGE		DAT_JPEGCOMPRESSION	MSG_GET
						MSG_GETDEFAULT
						MSG_RESET
						MSG_SET
DG_IMAGE		DAT_PALETTE8		MSG_GET
						MSG_GETDEFAULT
						MSG_RESET
						MSG_SET
DG_IMAGE		DAT_RGBRESPONSE		MSG_RESET
						MSG_SET

From Application to Source (Audio Information)
Data Group		Data Argument Type	Message
DG_AUDIO		DAT_AUDIOFILEXFER	MSG_GET
DG_AUDIO		DAT_AUDIOINFO		MSG_GET
DG_AUDIO		DAT_AUDIONATIVEXFER	MSG_GET

From Source Manager to Source (Control Information)
Data Group		Data Argument Type	Message
DG_CONTROL		DAT_IDENTITY		MSG_CLOSEDS
						MSG_GET
						MSG_OPENDS

From Source to Application (Control Information via the Source Manager)
(Used by Windows Sources only)
Data Group		Data Argument Type	Message
DG_CONTROL		DAT_NULL		MSG_CLOSEDSOK
						MSG_CLOSEDSREQ
						MSG_DEVICEEVENT
						MSG_XFERREADY
