--- /dev/null
+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