前一篇中我们已经成功连接了DSM并找到了所有可用的DS。本文中我们试着连接其中一个DS并完成一次扫描。
第一步,选择并连接一个DS,将TWAIN状态由3转到4。
注:本文选用了测试用的DS - TWAIN2 FreeImage Software Scanner
前文提到每个DS的结构都是这样
typedef struct {
TW_UINT32 Id;
TW_VERSION Version;
TW_UINT16 ProtocolMajor;
TW_UINT16 ProtocolMinor;
TW_UINT32 SupportedGroups;
TW_STR32 Manufacturer;
TW_STR32 ProductFamily;
TW_STR32 ProductName;
} TW_IDENTITY, FAR * pTW_IDENTITY;
在用户根据ProductName选择了一个DS后,我们也就能拿到对应DS的那个结构体,这就代表着这个DS的身份,假设这个身份储存在变量m_pDataSource中。以下代码可以打开一个DS的连接
twrc = _DSM_Entry(
&m_MyInfo,
0,
DG_CONTROL,
DAT_IDENTITY,
MSG_OPENDS,
(TW_MEMREF) m_pDataSource);
这里,我们只要注意用的MSG是MSG_OPENDS即可。以上代码如果执行成功,即twrc为0,则TWAIN状态就是4了。
咱们再回顾一下TWAIN状态