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


Метод IPrintCoreUI2::WhyEd (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

Указатель на буфер, предоставленный вызывающим объектом, содержащий ключевое слово единой функции, интересующее вызывающего объекта.

[in] pszOptionKeyword

Указатель на предоставленный вызывающей буфер, содержащий ключевое слово option.

[out] pmszReasonList

Указатель на предоставленный вызывающим буфером, который получает список пар ключевых слов компонента и параметра, которые помещает ограничения на указанный компонент или параметр. Этот список находится в MULTI_SZ формате с каждым элементом в списке, разделенным следующим символом NULL. Список завершается двумя пустыми символами.

Задайте для этого параметра значение null просто запрашивать размер (*pcbNeed) списка причин без заполнения списка причин.

[in] cbSize

Указывает размер буфера в байтах, на который указывает pmszReasonList.

[out] pcbNeeded

Указатель на расположение памяти, которое получает фактический размер в байтах списка причин.

Возвращаемое значение

Метод должен возвращать одно из следующих значений.

Возвращаемый код Описание
S_OK
Метод выполнен успешно.
E_OUTOFMEMORY
Значение в cbSize было меньше количества байтов, записываемых в выходной буфер (буфер, на который указывает pmszReasonList).

Метод был вызван с pmszReasonList значением NULL.

E_NOTIMPL
Метод не поддерживается.
E_INVALIDARG
Параметр poemuiobj указывает на недопустимый объект контекста.

Ключевое слово компонента или ключевое слово option не распознано.

Прилипание функции (см. замена страниц листа свойств Driver-Supplied) не совпадает с указанным в текущем контексте.

E_FAIL
Сбой метода

Замечания

Этот метод поддерживается только для подключаемых модулей пользовательского интерфейса Windows XP Pscript5, которые полностью заменяют стандартные страницы пользовательского интерфейса драйвера ядра и поддерживаются только во время подключаемых модулей пользовательского интерфейса IPrintOemUI::D ocumentPropertySheets и IPrintOemUI::D evicePropertySheets и их подпрограммы обратного вызова листа свойств. Дополнительные сведения см. в замене страниц листа свойств Driver-Supplied.

Когда пользователь пользовательского интерфейса OEM пытается выбрать элемент, ограниченный, вызывающий объект может использовать этот метод для отображения сообщения, объясняющего, почему элемент ограничен. Когда этот метод возвращается, pmszReasonList указывает на список одной или нескольких пар функций и параметров, которые отображаются в текущих параметрах драйвера, но конфликтуют с выбранными ключевыми словами компонента или параметра. Если не было конфликтов, метод должен возвращать S_OK, pmszReasonList должен быть заполнен пустой строкой ASCII, содержащей только пустой символ, и *pcbNeeded должно иметь значение 1.

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

Требования

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

См. также

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ