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
that's 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