在多页传输过程中的驱动程序行为

驱动程序不必直接支持文件夹获取。 如果驱动程序不支持它,WIA 服务将以递归方式遍视项树,并在WIA_IPA_ITEM_FLAGS 属性中设置了 WiaItemTypeTransfer 位的所有项上调用 IWiaMiniDrv::d rvAcquireItemData

直接支持文件夹获取的驱动程序必须公开文件夹项上的 WIA_IPS_TRANSFER_CAPABILITIES 属性。 此属性是一个标志属性,应设置WIA_TRANSFER_ACQUIRE_CHILDREN_CAPABLE位,以指示它直接支持文件夹获取功能。 此支持意味着驱动程序本身将遍转树来传输相关项,WIA 服务只需在文件夹上调用 IWiaMiniDrv::d rvAcquireItemData 。 驱动程序可以通过测试 WIA_TRANSFER_ACQUIRE_CHILDREN 位的 lFlags 参数来区分普通传输请求和文件夹获取请求。

驱动程序直接支持文件夹获取的main原因之一是效率。 与让 WIA 服务对每个项调用转移相比,驱动程序传输多个项的效率要高得多。

这种情况的一个很好的示例是在多区域扫描期间。 当在扫描仪的平板上检测到多个区域 ((如单独的图片) ),它们可以表示为“平板”项的子级。 下图显示了这种情况的示例。

说明用于多区域扫描的项树的示意图。

如果对“Flatbed”的每个子项调用单独的传输,驱动程序将执行三次单独的扫描,这可能很耗时。 但是,如果在“Flatbed”上请求获取文件夹,驱动程序将执行一次扫描,将其分解,并将三个单独的区域交回 (这通常) 更快。

注意 我们建议只有更复杂的驱动程序直接支持文件夹获取,因为驱动程序负责遍视项目树并采取适当的操作。