为图像采集 API 创建特定于设备的组件

图像获取 API(如 TWAIN)通常需要特定于设备的组件,例如 TWAIN 数据源。 这些特定于设备的组件应使用 IStillImage COM 接口IStiDevice COM 接口 来与用户模式静态图像设备驱动程序和事件监视器进行通信。

映像获取 API 可以调用 IStillImage::GetDeviceValueIStillImage::SetDeviceValue 来读取和写入 静态图像设备的注册表项。 例如,每个静态映像设备的 TWAIN 数据源的名称存储在注册表中。

由于 TWAIN API 不允许应用程序在调用数据源时指定活动设备,因此数据源通常会调用 IStillImage::GetDeviceList 以获取所有静止图像设备的列表,然后搜索列表以查找正确的设备,通常基于制造商和型号名称。 制造商和型号文本名称是从 INF) 文件的安装信息 (获取的。 由于 TWAIN 对数据源名称有 32 个字符的限制,并且 WIA 将“WIA-”追加到字符串以构造兼容名称,因此 INF 文件中的文本不应超过 28 个字符。 否则,对整个字符串(而不仅仅是前 32 个字符)执行比较的 TWAIN 兼容应用程序可能无法自动找到导致应用程序启动的设备。

为了访问设备,映像获取软件调用 IStillImage::CreateDevice 来创建定义 IStiDevice 接口的 COM 对象的实例。 IStiDevice 接口提供了几种用于执行设备 I/O 操作的方法。 创建对象实例时,图像获取软件应指定“数据” 传输模式

图像获取软件可以调用 IStiDevice::Subscribe 以请求事件监视器传递 静态图像设备事件的通知。 收到通知后,可以调用 IStiDevice::GetLastNotificationData 来确定事件类型。 当不再需要通知时,应调用 IStiDevice::UnSubscribe

当映像获取软件使用 完 IStiDevice 接口时,它必须调用 IStiDevice::Release