WIA 应用程序枚举扫描程序项树中的顶级项,以确定扫描程序支持的功能。 然后,应用程序使用顶级项作为扫描源。 例如,平板扫描仪项用于从平板进行扫描,而自动送纸器项用于从文档送纸器进行扫描。
电影物品的编程和扫描行为几乎与平板物品的编程和扫描行为相同。
应用程序在配置扫描仪的胶片项目时,通常会执行以下操作,但不一定按照该顺序进行:
枚举顶级 WIA 项,搜索使用 WiaItemTypeProgrammableDataSource 项标志标记的 WIA 项以及 WIA_CATEGORY_FILM WIA_IPA_ITEM_CATEGORY设置。
读取 WIA_IPS_FILM_SCAN_MODE 的有效值,检查底片扫描设置。 此设置将指示正图像或负图像(即摄影底片)扫描支持。
通过设置WIA_IPS_FILM_SCAN_MODE属性来选择正或负光源。
使用 WIA_IPS_LAMP 属性(如果支持)读取扫描仪灯当前的设置,如果需要,则打开灯。
读取 WIA_IPA_TYMED 和 WIA_IPA_FORMAT的有效值。
通过设置WIA_IPA_FORMAT属性选择数据的最终格式。
选择映像设置,例如 WIA_IPA_DEPTH、 WIA_IPA_DATATYPE和 WIA_IPA_BITS_PER_CHANNEL。
通过设置 WIA_IPA_TYMED 属性选择单个或多页文件传输(如果受支持)。
枚举子项以查找现有帧。
读取 WIA_IPS_SUPPORTS_CHILD_ITEM_CREATION 项,以确定扫描程序是否支持创建新帧。
调整现有电影项帧或创建新帧(具体取决于帧创建支持)。
读取WIA_IPS_SUPPORTS_CHILD_ITEM_CREATION属性以确定电影扫描仪项目是否支持特殊文件夹获取功能。
执行以下操作之一:
- 使用 WIA 胶片扫描仪设备来传输数据,而不是通过文件夹获取功能。 完整电影扫描区域将作为单个图像返回。
- 使用 WIA 电影扫描仪项目(使用文件夹获取功能)传输数据。 仅 WIA 胶片扫描仪的子项(即帧)被传输到应用程序。
- 导航到每个帧项并传输该 WIA 项。
当驱动程序使用扫描仪的电影扫描单元进行扫描时,通常会执行以下操作:
调用 IWiaMiniDrv::drvValidateItemProperties 和 IWiaMiniDrv::drvReadItemProperties。 WIA 驱动程序应在应用程序的属性设置阶段验证任何属性设置。
调用 IWiaMiniDrv::drvWriteItemProperties。 传入的 WIA 项上下文属于电影扫描仪项目或电影扫描项目帧,以便驱动程序知道应用程序打算使用扫描仪的电影扫描单元进行扫描。 一些扫描仪使用他们的平板来扫描胶片。 扫描仪必须根据WIA_IPS_FILM_SCAN_MODE属性进行配置,以确保适当的照明和胶片扫描的范围调整。
调用 IWiaMiniDrv::drvAcquireItemData。 传入的 WIA 项上下文属于胶片扫描仪项目或胶片扫描项目框架。 驱动程序可以轻松确定应用程序打算使用电影扫描单元进行扫描。
使用当前胶片项属性(包括任何子帧属性)对设备进行编程,并从胶片扫描单元扫描。 如果 WIA 驱动程序不在电影扫描模式下,它会尝试切换到此模式进行扫描。 应用程序只能在负光和正光之间切换。 使用胶片扫描仪进行扫描是应用程序与驱动程序之间的协定。它们同意使用扫描仪的胶片扫描功能进行数据传输。
驱动程序应将“胶片扫描仪”项目的 WIA 属性作为设置,应用于扫描仪的胶片扫描部分,以便在扫描前进行设置。 WIA 应用程序必须始终信任 WIA 驱动程序返回的数据的标头。 例如,扫描仪已确定其无法扫描指定的图像宽度,并且需要将值向上取整。 驱动程序应使用更新的宽度信息更新图像标头,以便应用程序具有正确的数据。 WIA 驱动程序应始终使用从设备返回的实际数据信息更新 WIA 属性集。