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


Метод IPrintCoreHelperUni::SetOptions (prcomoem.h)

Метод IPrintCoreHelperUni::SetOptions одновременно задает несколько пар функций и параметров.

Синтаксис

HRESULT SetOptions(
  [in, optional] IN PDEVMODE                      pDevmode,
  [in]           IN DWORD                         cbSize,
  [in]           IN BOOL                          bResolveConflicts,
  [in]           IN const PRINT_FEATURE_OPTION [] pFOPairs,
  [in]           IN DWORD                         cPairs,
  [out]          OUT PDWORD                       pcPairsWritten,
  [out]          OUT PDWORD                       pdwResult
);

Параметры

[in, optional] pDevmode

Указатель на структуру DEVMODEW . Если указан этот указатель, IPrintCoreHelperUni::SetOptions должен использовать структуру DEVMODEW, на которую указывает pDevmode , а не текущую структуру DEVMODEW по умолчанию или текущую. Если этот метод вызывается из поставщика подключаемого модуля или из IPrintOemPS::D evMode, этот параметр является обязательным. В большинстве других ситуаций параметр должен иметь значение NULL. Когда основной драйвер задает pDevmodeзначение NULL, он изменяет внутреннее состояние, а не внутреннее состояние переданной структуры DEVMODEW. Это необходимо во время таких операций, как полная замена пользовательского интерфейса, когда структура DEVMODEW, возвращаемая DDI, например DrvDocumentPropertySheets, обслуживается модулем пользовательского интерфейса основного драйвера.

[in] cbSize

Размер (в байтах) структуры DEVMODEW , на которую указывает параметр pDevmode .

[in] bResolveConflicts

Логическое значение, указывающее, должен ли IPrintCoreHelperUni::SetOptions разрешать конфликты, возникающие из-за одного или нескольких ограничений в представлении GPD файла конфигурации, а также ограничений для функциональных возможностей, реализованных Unidrv или процессором печати. Если задано значение TRUE, этот метод должен попытаться устранить конфликт. Если значение FALSE, этот метод не должен пытаться разрешить конфликты.

[in] pFOPairs

Массив элементов PRINT_FEATURE_OPTION , где каждый элемент содержит пару признаков и вариантов. В каждой паре "признак-параметр" перечисляются признаки и варианты, которые нужно выбрать для этой функции. Все параметры применяются последовательно. Дубликаты не запрещены, но параметры, которые отображаются позже в массиве (т. е. по более высокому индексу), переопределяют параметры, которые отображаются ранее в массиве.

[in] cPairs

Количество пар функций и параметров, на которые указывает параметр pFOPairs .

[out] pcPairsWritten

Указатель на переменную, получающую количество пар функций и вариантов, которые были успешно сохранены до возврата или сбоя IPrintCoreHelperUni::SetOptions . Если этот метод возвращает успешно, pcPairsWritten будет иметь то же значение, что и cPairs. Если метод завершается ошибкой, pcPairsWritten может иметь любое значение от нуля до значения cPairs. Этот параметр является необязательным и может иметь значение NULL.

[out] pdwResult

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

Значение Описание
SETOPTIONS_RESULT_NO_CONFLICT Не было нарушено никаких ограничений, указанных в представлении GPD файла конфигурации, относительно нового параметра.
SETOPTIONS_RESULT_CONFLICT_RESOLVED По крайней мере одно ограничение, указанное в представлении GPD файла конфигурации, было нарушено, и вызывающий объект запросил, чтобы метод разрешал конфликты. Это значение приводит к изменению параметров с разрешением конфликтов.
SETOPTIONS_RESULT_CONFLICT_NOT_RESOLVED По крайней мере одно ограничение, указанное в представлении GPD файла конфигурации, было нарушено, и вызывающий объект запросил, чтобы метод не разрешал конфликты. Параметры не изменяются, а конфликты сохраняются.

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

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

Код возврата Описание
S_OK Операция успешно выполнена.
E_INVALIDARG Один или несколько аргументов недопустимы или функция не поддерживается.
E_OUTOFMEMORY Не удалось выделить память для результирующих массивов.

Для других сбоев метод должен возвращать стандартный код ошибки COM.

Комментарии

IPrintCoreHelperUni::SetOptions можно использовать для одновременного изменения нескольких параметров и устранения ограничений после установки всех выбранных параметров. Изменения параметров применяются последовательно, начиная с начала массива pFOPairs , поэтому если один и тот же компонент отображается дважды в этом массиве, будет выбран только последний параметр для этой функции. Изменения параметров не фиксируются, если только параметр bResolveConflicts не имеет значение TRUE.

В большинстве сценариев параметру bResolveConflicts следует задать значение TRUE. Присвойте этому параметру значение FALSE , если вы хотите предложить пользователю разрешить конфликты.

Требования

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

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

IPrintCoreHelperUni

IPrintCoreHelperUni::GetOption