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)

另请参阅

IPrintCoreHelperUni

IPrintCoreHelperUni::GetOption