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
指向调用方提供的缓冲区的指针,该缓冲区包含调用方感兴趣的单个功能关键字 (keyword) 。
[in] pszOptionKeyword
指向调用方提供的缓冲区的指针,该缓冲区包含选项关键字 (keyword) 。
[out] pmszReasonList
指向调用方提供的缓冲区的指针,该缓冲区接收对指定特征/选项施加约束关键字 (keyword) 对的列表。 此列表采用MULTI_SZ格式,列表中的每一项与下一个项分隔一个 null 字符。 列表以两个 null 字符结尾。
将此参数设置为 NULL ,只需查询原因列表的大小 (*) ,而无需填充列表。
[in] cbSize
指定 pmszReasonList 指向的缓冲区的大小(以字节为单位)。
[out] pcbNeeded
指向接收原因列表的实际大小(以字节为单位)的内存位置的指针。
返回值
方法必须返回以下值之一。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
cbSize 中的值小于要写入输出缓冲区 (pmszReasonList) 指向的缓冲区的字节数。
调用 方法时 ,pmszReasonList 设置为 NULL。 |
|
不支持该方法。 |
|
poemuiobj 参数指向无效的上下文对象。
无法识别功能关键字 (keyword) 或选项关键字 (keyword) 。 功能粘性 (请参阅 替换 Driver-Supplied 属性表页) 与当前上下文中指定的不匹配。 |
|
方法失败 |
注解
此方法仅支持完全取代核心驱动程序的标准 UI 页面的 Windows XP Pscript5 UI 插件,并且仅在 UI 插件的 IPrintOemUI::D ocumentPropertySheets 和 IPrintOemUI::D evicePropertySheets 函数及其属性表回调例程期间受支持。 有关详细信息 ,请参阅替换 Driver-Supplied 属性表页 。
当 OEM UI 的用户尝试选择受约束的项时,调用方可以使用此方法显示一条消息,说明项受约束的原因。 此方法返回时, pmszReasonList 指向当前驱动程序设置中显示的一个或多个功能/选项对的列表,但与所选功能/选项关键字冲突。 如果没有冲突,则该方法应返回 S_OK,pmszReasonList 应使用仅包含 null 字符的空 ASCII 字符串填充 pmszReasonList,并且 *印刷品Needed 应设置为 1。
若要减少对每个数据访问进行两次调用的需求,请将固定大小的输出缓冲区 (1 KB(例如) ),然后检查函数返回值。 如果方法返回S_OK,则缓冲区已包含相关数据。 如果方法返回E_OUTOFMEMORY,则 *E_OUTOFMEMORY 中的值是保存所需数据的缓冲区大小。 然后,调用方应分配一个更大的缓冲区,并继续对 方法进行第二次调用。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | prcomoem.h (包括 Prcomoem.h) |
另请参阅
IPrintCoreUI2::EnumConstrainedOptions
IPrintOemUI::D evicePropertySheets