Поделиться через


Метод 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.

[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. Тем не менее, поскольку метод IPrintOemPS::EnablePDEV вызывается после того, как основной драйвер завершает обработку DrvEnablePDEV, подключаемый модуль может успешно вызывать IPrintCorePS2::GetOptions в рамках метода IPrintOemPS::EnablePDEV.

Если запрошенное ключевое слово функции не распознано или компонент распознается, но в настоящее время для него не выбран вариант, функция игнорируется, а пара ключевых слов компонента и параметра не помещается в выходной буфер.

Чтобы уменьшить потребность в двух вызовах для доступа к данным, передайте метод выходной буфер фиксированного размера (например, 1 КБ), а затем проверьте возвращаемое значение функции. Если метод возвращает S_OK, буфер уже содержит интересующие данные. Если метод возвращает E_OUTOFMEMORY, значение в *pcbNeed — это размер буфера, необходимый для хранения интересующих данных. Затем вызывающий объект должен выделить буфер этого большего размера и продолжить второй вызов метода.

Этот метод поддерживается для любого подключаемого модуля отрисовки Pscript5.

Дополнительные сведения см. в разделе Using GetOptions and SetOptions.

Требования

Требование Ценность
целевая платформа Настольный
заголовка prcomoem.h (include Prcomoem.h)

См. также

DEVOBJ

DrvEnablePDEV

IPrintCorePS2

IPrintOemPS::D evMode

IPrintOemPS::EnablePDEV