IPrintCoreUI2::WhyConstrained 方法 (prcomoem.h)

该方法 IPrintCoreUI2::WhyConstrained 确定指定功能/选项选择受到约束的原因。

语法

HRESULT WhyConstrained(
  [in]  POEMUIOBJ poemuiobj,
  [in]  DWORD     dwFlags,
  [in]  PCSTR     pszFeatureKeyword,
  [in]  PCSTR     pszOptionKeyword,
  [out] PZZSTR    pmszReasonList,
  [in]  DWORD     cbSize,
  [out] PDWORD    pcbNeeded
);

参数

[in] poemuiobj

指向当前上下文( OEMUIOBJ 结构)的指针。

[in] dwFlags

保留,必须设置为零。

[in] pszFeatureKeyword

指向调用方提供的缓冲区的指针,该缓冲区包含对调用方感兴趣的单个功能关键字。

[in] pszOptionKeyword

指向包含选项关键字的调用方提供的缓冲区的指针。

[out] pmszReasonList

指向调用方提供的缓冲区的指针,该缓冲区接收将约束置于指定功能/选项上的特征/选项对的列表。 此列表采用MULTI_SZ格式,列表中的每一项均以 null 字符分隔。 列表以两个 null 字符结尾。

将此参数设置为 NULL ,只需查询原因列表的大小 (*ーNeeded) ,而无需填写列表。

[in] cbSize

指定 pmszReasonList 指向的缓冲区的大小(以字节为单位)。

[out] pcbNeeded

指向接收原因列表的实际大小(以字节为单位)的内存位置的指针。

返回值

该方法必须返回以下值之一。

返回代码 说明
S_OK
方法成功。
E_OUTOFMEMORY
cbSize 中的值小于写入输出缓冲区的字节数, (pmszReasonList) 指向的缓冲区。

使用 pmszReasonList 设置为 NULL 调用该方法。

E_NOTIMPL
不支持该方法。
E_INVALIDARG
poemuiobj 参数指向无效的上下文对象。

无法识别功能关键字或选项关键字。

功能粘性 (请参阅 替换Driver-Supplied属性表页) 与当前上下文中指定的项不匹配。

E_FAIL
方法失败

注解

此方法仅支持完全替换核心驱动程序标准 UI 页的 Windows XP Pscript5 UI 插件,并且仅在 UI 插件的 IPrintOemUI::D ocumentPropertySheetsIPrintOemUI::D evicePropertySheets 函数及其属性表回调例程期间才支持此方法。 有关详细信息 ,请参阅替换Driver-Supplied属性表页

当 OEM UI 的用户尝试选择受约束的项时,调用方可以使用此方法显示一条消息,说明项目受约束的原因。 此方法返回时, pmszReasonList 指向当前驱动程序设置中显示的一个或多个功能/选项对的列表,但与所选功能/选项关键字冲突。 如果没有冲突,则该方法应返回S_OK, pmszReasonList 应填充一个仅包含 null 字符的空 ASCII 字符串,并且 *azureNeeded 应设置为 1。

若要减少对每个数据访问进行两次调用的需求,请传递固定大小的输出缓冲区 (1 KB,例如) ,然后检查函数返回值。 如果该方法返回S_OK,则缓冲区已包含感兴趣的数据。 如果该方法返回E_OUTOFMEMORY,则 *ーNeeded 中的值是保存感兴趣的数据的缓冲区大小。 然后,调用方应分配一个较大大小的缓冲区,并继续对方法的第二次调用。

要求

   
目标平台 桌面
Header prcomoem.h (包括 Prcomoem.h)

另请参阅

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ