IPrintCoreHelperUni::SetOptions 方法 (prcomoem.h)
IPrintCoreHelperUni::SetOptions 方法同时设置多个功能选项对。
语法
HRESULT SetOptions(
[in, optional] IN PDEVMODE pDevmode,
[in] IN DWORD cbSize,
[in] IN BOOL bResolveConflicts,
[in] IN const PRINT_FEATURE_OPTION [] pFOPairs,
[in] IN DWORD cPairs,
[out] OUT PDWORD pcPairsWritten,
[out] OUT PDWORD pdwResult
);
参数
[in, optional] pDevmode
指向 DEVMODEW 结构的指针。 如果提供此指针, IPrintCoreHelperUni::SetOptions 应使用 pDevmode 指向的 DEVMODEW 结构,而不是默认或当前的 DEVMODEW 结构。 如果从插件提供程序或 IPrintOemPS::D evMode 调用此方法,则此参数是必需的。 在大多数其他情况下, 参数应为 NULL。 当核心驱动程序将 pDevmode 设置为 NULL 时,它会修改其内部状态,而不是传入的 DEVMODEW 结构的状态。 在完全替换 UI 等操作期间,这是必需的,其中 DDI 返回的 DEVMODEW 结构(如 DrvDocumentPropertySheets)由核心驱动程序的 UI 模块提供服务。
[in] cbSize
pDevmode 参数指向的 DEVMODEW 结构的大小(以字节为单位)。
[in] bResolveConflicts
一个布尔值,指示 IPrintCoreHelperUni::SetOptions 是否应解决由配置文件的 GPD 视图中的一个或多个约束引起的冲突,以及 Unidrv 或打印处理器实现的功能的约束。 如果 为 TRUE,此方法应尝试解决冲突。 如果 为 FALSE,则此方法不应尝试解决冲突。
[in] pFOPairs
一个由PRINT_FEATURE_OPTION元素构成的数组,其中每个元素都包含一个功能选项对。 每个功能选项对都列出了一个功能以及要为该功能选择的选项。 所有设置都按顺序应用。 不允许重复项,但数组中稍后出现的设置 (即,在较高的索引处) 替代数组中较早出现的设置。
[in] cPairs
pFOPairs 参数指向的功能选项对的数目。
[out] pcPairsWritten
指向变量的指针,该变量接收在 IPrintCoreHelperUni::SetOptions 返回或失败之前成功保存的功能选项对数。 如果此方法成功返回, 则 pcPairsWritten 将具有与 cPairs 相同的值。 如果方法失败, 则 pcPairsWritten 可以具有从零到 cPairs 值的任何值。 此参数是可选的,可以为 NULL。
[out] pdwResult
指向接收冲突解决状态的变量的指针。 状态可以是以下值之一。
值 | 说明 |
---|---|
SETOPTIONS_RESULT_NO_CONFLICT | 相对于新设置,未违反配置文件的 GPD 视图中指定的约束。 |
SETOPTIONS_RESULT_CONFLICT_RESOLVED | 至少违反了在配置文件的 GPD 视图中指定的一个约束,并且调用方请求该方法应解决冲突。 此值会导致更改设置,并解决冲突。 |
SETOPTIONS_RESULT_CONFLICT_NOT_RESOLVED | 至少违反了配置文件的 GPD 视图中指定的一个约束,并且调用方请求该方法不应解决冲突。 设置不会更改,冲突仍然存在。 |
返回值
IPrintCoreHelperUni::SetOptions 应返回以下值之一。
返回代码 | 说明 |
---|---|
S_OK | 操作成功。 |
E_INVALIDARG | 一个或多个参数无效,或者不支持该功能。 |
E_OUTOFMEMORY | 无法分配结果数组的内存。 |
对于其他故障,该方法应返回标准 COM 错误代码。
注解
IPrintCoreHelperUni::SetOptions 可用于同时进行多个设置更改,并在设置所有选定选项后解析约束。 对选项的更改按顺序应用,从 pFOPairs 数组的开头开始,因此,如果同一功能在此数组中出现两次,将仅选择该功能的最后一个选项。 除非 bResolveConflicts 参数为 TRUE,否则不会提交对选项的更改。
在大多数情况下, bResolveConflicts 参数应设置为 TRUE。 如果要提示用户解决冲突,请将此参数设置为 FALSE 。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | prcomoem.h (包括 Prcomoem.h) |