映射不需更改的 WIA 属性 - 特殊案例
兼容性层可能失败的情况如下:
缺少/损坏与所需 Windows Vista 属性相关的 Windows XP 属性可能会使兼容性层不可用。 在这些情况下,当前会话将失败;由于 Windows XP 和 Windows Vista 驱动程序与应用程序之间的项结构和属性存在差异, (应用程序的 COM 代理在此类情况下) 无法正常工作,因此无法继续选项。 WIA_DPS_DOCUMENT_HANDLING_SELECT和WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES属性是一种特殊情况:如果 Windows XP 驱动程序不支持它们,则只会为 Windows Vista 应用程序转换 FLATBED 项
除非设置了特定上下文,否则某些依赖于特定上下文 (FLATBED、FEEDER 或属性上下文) 的 Windows XP 根属性可能不可用,或者这些属性可能具有每个上下文的不同有效值和当前值。 WIA_DPS_DOCUMENT_HANDLING_SELECT将用于设置正确的 FEEDER/FLATBED 上下文;如有必要,它将设置为 FEEDER (加双工,) 或 FLATBED 在 Windows XP 驱动程序的根项上。 在所有其他情况下,应通过适当的 属性设置上下文。 当 Windows XP 设备同时支持 FEEDER 和 FLATBED,并且所有根属性都可以转换为 Windows Vista 中的 FLATBED 和 FEEDER 项时也是如此。
对于从/转换为唯一 Windows XP 属性的重复 Windows Vista 属性,WIA 服务必须决定如何处理同一属性设置为不同 Windows Vista 项目中的不同值的情况。 解决方案是在每次更改上下文时重新初始化所有 Windows XP A-AIT 项属性。 这样,可以从 Windows XP 应用程序为 Windows Vista 驱动程序的 FEEDER 和 FLATBED 项协商单独的属性集。
例如,如果 Windows Vista 驱动程序未实现 FEEDER 或 FLATBED 项 (,则驱动程序可能仅实现 film/TPA (透明度适配器) 和/或存储项) ,则兼容性层将不可用。 假设始终可以为 Windows Vista 电影/TPA 和/或存储项创建通用 Windows XP 子项是不安全的。 此外,如果 Windows Vista 驱动程序同时实现胶片/TPA 和存储项,则可能会出现更多复杂情况。 因此,兼容性层不适用于不实现至少 FLATBED 或 FEEDER 项的 Windows Vista 驱动程序。
如果 Windows XP 驱动程序未实现正确的 Windows XP 项结构 (根扫描项和子扫描项) ,例如,如果驱动程序部分实现对新 Windows Vista 项结构的支持,但无法提供对 Windows Vista 映像传输的完全支持,则将禁用属性/项兼容性层,并且当前会话将失败。