Метод 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
Указатель на расположение памяти, которое получает фактический размер в байтах списка причин.
Возвращаемое значение
Метод должен возвращать одно из следующих значений.
Возвращаемый код | Описание |
---|---|
|
Метод выполнен успешно. |
|
Значение в cbSize было меньше количества байтов, записываемых в выходной буфер (буфер, на который указывает pmszReasonList).
Метод был вызван с pmszReasonList значением NULL. |
|
Метод не поддерживается. |
|
Параметр poemuiobj указывает на недопустимый объект контекста.
Ключевое слово компонента или ключевое слово option не распознано. Прилипание функции (см. замена страниц листа свойств Driver-Supplied) не совпадает с указанным в текущем контексте. |
|
Сбой метода |
Замечания
Этот метод поддерживается только для подключаемых модулей пользовательского интерфейса 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::EnumConstrainedOptions
IPrintOemUI::D evicePropertySheets