添加文档馈送器支持
重要
本文包含适用于过时 Windows 操作系统的信息。
文档馈送器是附加到扫描仪或内置于扫描仪的一个单元,可在要扫描的位置自动馈送纸张文档。 对于具有文档馈送器的扫描仪,通过添加以下列表中包含的属性来公开和控制该功能。 对于 Windows Me 和 Windows XP,以下属性位于根项上:
对于 Windows Me 和 Windows XP,以下可选文档馈送器属性位于子项上:
如果设备具有平板、文档馈送器和双面打印器,驱动程序会将 WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES 属性报告为 FEED | FLAT | DUP
。 确保正确设置WIA_DPS_DOCUMENT_HANDLING_SELECT的有效值。
例如,假设应用程序打算从文档馈送器执行三页双工扫描。 为此,应用程序将 WIA_DPS_DOCUMENT_HANDLING_SELECT 属性设置为 (FEEDER |双工) ,并将 WIA_DPS_PAGES 属性设置为 3。 如果应用程序打算首先扫描页面的前面,则应将 WIA_DPS_DOCUMENT_HANDLING_SELECT 属性设置为 FEEDER | DUPLEX | FRONT_FIRST
。 完成此操作后,应用程序应导航到应从中请求数据传输的子项。 微型驱动程序将送纸器中第一页的前面报告为第一页,该页的背面报告为第二页,第二页的前面报告为第三页。
请务必记住,如果设备具有文档馈送器,它必须支持文档馈送器属性。
从文档馈送器获取数据
当扫描程序从文档馈送器获取图像时, 必须在 IWiaMiniDrv::d rvAcquireItemData 方法的实现中进行一些更改。
应用程序读取 WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES 属性以确定扫描程序是否支持使用文档馈送器进行扫描。
应用程序读取 WIA_DPS_DOCUMENT_HANDLING_SELECT 属性,以确定扫描程序是否配置为使用文档馈送器进行扫描。
应用程序通过读取WIA_DPS_DOCUMENT_HANDLING_STATUS来确定文档馈送器中是否有纸张。 如果送纸器中没有纸张,请将WIA_DPS_DOCUMENT_HANDLING_STATUS设置为正确的状态代码,并在获取后立即从 IWiaMiniDrv::d rvAcquireItemData 返回WIA_ERROR_PAPER_EMPTY。
检查 WIA_DPS_PAGES 属性以确定扫描行为。 如果此属性为零,请扫描所有页面,直到馈送器为空。 如果为正值,则仅扫描 WIA_DPS_PAGES 属性中包含的值所指示的页数。
通过控制循环、持续扫描,并通过调用 IWiaMiniDrvCallBack::MiniDrvCallback 方法) 向 WIA 应用程序发送 (一次一页的数据来扫描请求的页数。 以下代码示例演示了其工作原理:
for(int x=1; x=Pagecount; x++) { \\ Tell scanner to scan an image. \\ Receive image data from scanner. \\ Send the just-scanned image to the registered application. }
如果 WIA_IPA_TYMED 设置为TYMED_CALLBACK或TYMED_MULTIPAGE_CALLBACK,则必须在扫描一个页面之后和扫描下一个页面之前发送额外的邮件 (IT_MSG_NEW_PAGE) 。 这是通过调用 wiasSendEndOfPage WIA 服务实用工具函数来完成的。
文档馈送器驱动程序返回的页数取决于 WIA_DPS_PAGES 属性的设置。
如果WIA_DPS_PAGES为零
如果扫描程序无法扫描第一页,请立即返回错误代码。 这包括卡纸以及扫描仪用完纸张时。
如果扫描程序成功扫描第一页,并且能够继续扫描但纸张不足,则返回成功代码WIA_STATUS_END_OF_MEDIA。 这向应用程序发出信号,表明传输成功,但扫描仪已用完纸张。 某些应用程序以与WIA_STATUS_END_OF_MEDIA相同的方式响应WIA_ERROR_PAPER_EMPTY。
如果扫描程序成功扫描第一页并能够继续扫描,但遇到不会导致数据丢失的错误,则返回WIA_STATUS_END_OF_MEDIA。 这样,应用程序就可以恢复并保存错误发生前扫描的任何页面。 任何后续扫描都应立即返回错误代码,直到扫描程序从故障中正确恢复为止。
如果扫描程序成功扫描第一页并能够继续扫描,但遇到导致数据丢失的错误,请立即返回错误代码。
如果WIA_DPS_PAGES为正值
WIA_DPS_PAGES为零的所有规则都适用。
如果扫描程序在扫描请求的页数之前用完纸张,请返回WIA_STATUS_END_OF_MEDIA。 这样,应用程序就可以关闭扫描会话,从而保留已成功扫描的页数。 某些应用程序对WIA_ERROR_PAPER_EMPTY的响应方式与WIA_STATUS_END_OF_MEDIA的方式相同。