前方提到TWAIN的三大组成元素或者砖头(数据源控制DSM,数据源DS,应用程序APP)通过TWAIN协议做交流。而事实上的交流其实仅仅通过两个出入口(Entry Point)就实现了。这两个口子分别是**DSM_Entry**
和**DS_Entry**
。正如下图所示,两个出入口分别位于APP与DSM之间和DSM与DS之间。而APP与DS是不直接交互的。
TWAIN交互的最终目的是让APP拿到DS栅格化 / 扫描得到的图像及其它相关数据。而如前文所说,APP和DS是不直接交互的。所有的交互都通过DSM进行。
TWAIN语言定义了约140个操作,所有操作都由APP通过上面说的第一个入口DSM_Entry发起。每个操作都必须有以下几个内容
- 描述性的结构体,用以指明APP本身的身份
- 描述性的结构体,用以指明操作的对象(DSM或DS)
- 包含操作内容的变量组合(一般包含三个变量,称为Triplet,或三联体),这个变量组合的内容为
- 数值,指明操作类型(Data Group)
- 数值,指明操作数据类型(Data Argument Group)
- 数值,操作数据本身(Message ID)
- 指针,