IPrintCorePS2::GetOptions 方法 (prcomoem.h)
方法IPrintCorePS2::GetOptions
以功能/选项关键字 (keyword) 对列表的格式检索驱动程序的当前功能设置。
语法
HRESULT GetOptions(
[in] PDEVOBJ pdevobj,
[in] DWORD dwFlags,
[in] PCZZSTR pmszFeaturesRequested,
[in] DWORD cbIn,
[out] PZZSTR pmszFeatureOptionBuf,
[in] DWORD cbSize,
[out] PDWORD pcbNeeded
);
参数
[in] pdevobj
指向 DEVOBJ 结构的指针。
[in] dwFlags
为保留,并且必须设置为零。
[in] pmszFeaturesRequested
指向调用方提供的缓冲区的指针,其中包含MULTI_SZ格式 (功能关键字列表) 请求其设置。 将此参数设置为 NULL 以获取所有功能的设置。
[in] cbIn
指定 pmszFeaturesRequested 指向的缓冲区的大小(以字节为单位)。 大小包括最后一个MULTI_SZ null 字符。
[out] pmszFeatureOptionBuf
指向调用方提供的缓冲区的指针,该缓冲区接收功能/选项列表,关键字 (keyword) () 从驱动程序设置获取MULTI_SZ格式。 每个特征/选项关键字 (keyword) 对都包含特征关键字 (keyword) 名称、null 字符、选项关键字 (keyword) 名称以及另一个 null 字符。 列表以两个 NULL 字符结尾。
[in] cbSize
指定 pmszFeatureOptionBuf 指向的缓冲区的大小(以字节为单位)。
[out] pcbNeeded
指向接收所请求数据的实际大小(以字节为单位)的内存位置的指针。
返回值
方法必须返回以下值之一。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
cbSize 中的值小于要写入输出缓冲区的字节数, (pmszFeatureOptionBuf) 指向的缓冲区。
调用 方法时 ,pmszFeatureOptionBuf 设置为 NULL。 |
|
提供了 pmszFeaturesRequested) 指向的缓冲区 (输入缓冲区,但其内容不是MULTI_SZ格式。
pdevobj 参数指向无效的驱动程序上下文对象。 |
|
不支持该方法。 |
|
方法失败。 |
注解
此方法同时支持 文档粘滞 和 打印机粘滞 功能。 仅当核心驱动程序完成其 DrvEnablePDEV 处理(设置所有选项设置)后,才支持它。 不支持时调用 IPrintCorePS2::GetOptions
,应会导致它返回E_NOTIMPL。 例如,当核心驱动程序调用呈现插件的 IPrintOemPS::EnablePDEV 方法时,驱动程序仍会占用其 DrvEnablePDEV 处理,因此,如果插件在插件的 IPrintOemPS::D evMode 方法中调用IPrintCorePS2::GetOptions
插件,则插件将接收E_NOTIMPL返回值。 但是,由于插件的 IPrintOemPS::EnablePDEV 方法是在核心驱动程序完成其 DrvEnablePDEV 处理后调用的,因此插件能够在其 IPrintOemPS::EnablePDEV 方法中成功调用IPrintCorePS2::GetOptions
。
如果无法识别请求的功能关键字 (keyword) ,或者识别该功能,但当前没有选项,则忽略该功能,并且特征/选项关键字 (keyword) 对不会放置在输出缓冲区中。
若要减少对每个数据访问进行两次调用的需求,请将固定大小的输出缓冲区 (1 KB(例如) ),然后检查函数返回值。 如果方法返回S_OK,则缓冲区已包含相关数据。 如果方法返回E_OUTOFMEMORY,则 *E_OUTOFMEMORY 中的值是保存所需数据的缓冲区大小。 然后,调用方应分配一个更大的缓冲区,并继续对 方法进行第二次调用。
任何 Pscript5 呈现插件都支持此方法。
有关详细信息,请参阅 使用 GetOptions 和 SetOptions。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | prcomoem.h (包括 Prcomoem.h) |