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 (include Prcomoem.h)

另请参阅

IPrintCoreHelperUni

IPrintCoreHelperUni::GetOption