IPrintCorePS2::GetOptions 方法(prcomoem.h)

IPrintCorePS2::GetOptions 方法以功能/选项关键字对列表的格式检索驱动程序的当前功能设置。

语法

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

指向调用方提供的缓冲区的指针,该缓冲区接收从驱动程序设置获取的功能/选项关键字对列表(MULTI_SZ格式)。 每个功能/选项关键字对都包含功能关键字名称、null 字符、选项关键字名称和另一个 null 字符。 该列表以两个 NULL 字符结尾。

[in] cbSize

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

[out] pcbNeeded

指向接收所请求数据的实际大小(以字节为单位)的内存位置的指针。

返回值

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

返回代码 描述
S_OK
方法成功。
E_OUTOFMEMORY
cbSize 中的值小于要写入输出缓冲区的字节数(pmszFeatureOptionBuf指向的缓冲区)。

该方法是在将 pmszFeatureOptionBuf 设置为 NULL时调用的。

E_INVALIDARG
输入缓冲区(pmszFeaturesRequested指向的缓冲区)已提供,但其内容不采用MULTI_SZ格式。

pdevobj 参数指向无效的驱动程序上下文对象。

E_NOTIMPL
不支持该方法。
E_FAIL
方法失败。

言论

此方法支持 文档粘滞打印机粘滞 功能。 仅在核心驱动程序完成其 DrvEnablePDEV 处理后才支持它,这将设置所有选项设置。 不支持 IPrintCorePS2::GetOptions 的调用应导致返回E_NOTIMPL。 例如,当核心驱动程序调用呈现插件的 IPrintOemPS::EnablePDEV 方法时, 驱动程序仍占用其 DrvEnablePDEV 处理,因此,如果插件调用插件 IPrintCorePS2::GetOptions 插件的 IPrintOemPS::D evMode 方法,插件将接收E_NOTIMPL返回值。 但是,由于核心驱动程序完成其 DrvEnablePDEV 处理后调用插件的 IPrintOemPS::EnablePDEV 方法,插件能够在其 IPrintOemPS::EnablePDEV 方法内成功调用 IPrintCorePS2::GetOptions

如果无法识别请求的功能关键字,或识别该功能,但当前没有选项选择,则忽略该功能,并且功能/选项关键字对不会放置在输出缓冲区中。

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

任何 Pscript5 呈现插件都支持此方法。

有关详细信息,请参阅 使用 GetOptions 和 SetOptions

要求

要求 价值
目标平台 桌面
标头 prcomoem.h (include Prcomoem.h)

另请参阅

DEVOBJ

DrvEnablePDEV

IPrintCorePS2

IPrintOemPS::D evMode

IPrintOemPS::EnablePDEV