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


Метод 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, значение в *pcbNeeded — это размер буфера, необходимый для хранения интересующих данных. Затем вызывающий объект должен выделить буфер большего размера и продолжить второй вызов метода .

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

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть prcomoem.h (включая Prcomoem.h)

См. также раздел

DEVOBJ

DrvEnablePDEV

IPrintCorePS2

IPrintOemPS::D evMode

IPrintOemPS::EnablePDEV