Обработка устанавливаемых компонентов и параметров
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Некоторые компоненты или параметры принтера могут быть установлены. Например, принтер может принять необязательный канал конверта, который может быть подключен или не подключен в данный момент. Этот канал конверта должен быть описан в файле GPD двумя способами:
В качестве параметра функции InputBin.
Как устанавливаемая функция (даже если это действительно вариант), которая позволяет пользователю указать, установлена ли она на самом деле.
Во-первых, чтобы указать веб-канал конверта вместе с автоматическим каналом, в качестве параметров функции InputBin можно использовать следующие записи GPD.
*Feature: InputBin
{
*Name: "Input Bin"
*Option: AUTO
{
*Name: "Automatic Feeder"
*Command: CmdSelect {Command Attributes}
}
*Option: ENVFEED
{
*Name: "Envelope Feeder"
*Command: CmdSelect {Command Attributes}
}
}
Чтобы установить канал конверта, требуются дополнительные записи GPD, как показано ниже.
*InstalledOptionName: "Installed"
*NotInstalledOptionName: "Not installed"
*Feature: InputBin
{
*Name: "Input Bin"
*Option: AUTO
{
*Name: "Automatic Feeder"
*Command: CmdSelect {Command Attributes}
}
*Option: ENVFEED
{
*Name: "Envelope Feeder"
*Command: CmdSelect {Command Attributes}
*Installable?: TRUE
*InstallableFeatureName: "Optional Envelope Feeder"
}
}
В записи *Option для веб-канала конверта добавлены два атрибута:
*Installable? атрибут указывает, что параметр можно установить.
Атрибут *InstallableFeatureName указывает текстовую строку, отображаемую Unidrv, чтобы пользователь смог указать, установлен ли параметр.
Если параметр *Installable? имеет значение TRUE для компонента или параметра, Unidrv создает дополнительную функцию для отображения листа свойств. (Обратите внимание, что даже если устанавливаемый элемент является параметром, Unidrv создает для него представление компонентов на листе свойств.) Эта функция, синтезируемая Юнидрвом, определяется строкой, предоставленной *InstallableFeatureName. Эта функция предоставляет два параметра: "Установлено" и "Не установлено" и позволяет пользователю выбрать один из этих вариантов. Строки "Установленные" и "Не установлены" указываются с атрибутами *InstalledOptionName и *NotInstalledOptionName, чтобы их можно было изменить, если другой текст более подходящий.
Таким образом, в нашем примере лист свойств будет включать функцию InputBin, помеченную ячейку ввода, которая включает два варианта, помеченный автоматический веб-канал и веб-канал конверта. На листе свойств также будет добавлена дополнительная функция, помеченная как необязательный веб-канал конверта, с двумя параметрами, помеченными как установленные и не установленные. Пользователь может выбрать только веб-канал конверта в области входных двоичных данных, если сначала выбран параметр "Установить " в разделе "Необязательный канал конверта".
Иногда необходимо указать, что определенные параметры установки нельзя установить одновременно или что не удается выбрать определенный неиндестеблируемый параметр, если установлен другой параметр установки. Для обработки этих ситуаций используйте записи GPD, которые указывают ограничения параметров.
Невозможно использовать *Installable? атрибут с необязательными функциями, требующими записи *DisabledFeatures. Для этих функций необходимо явно указать необязательную функцию с параметрами "Установленные" и "Не установлены". Например, предположим, что принтер имеет необязательный дуплексный блок. Если дуплексная единица не установлена, необходимо отключить функцию дуплексирования (см . стандартные функции). Необходимо определить функцию "Необязательный блок дуплексирования" с параметрами "Установленные" и "Не установлен". В записи "Не установлено" *Option вы включили запись *DisabledFeatures для функции Duplex. Можно использовать следующие записи GPD:
*Feature: DuplexUnit
{
*ConflictPriority: 3 *% Make priority higher than Duplex feature
*Name: "Optional Duplexing Unit"
*Option: Installed
{
*Name: "Installed"
}
*Option: NotInstalled
{
*Name: "Not Installed"
*DisabledFeatures: LIST(Duplex)
*Constraints: LIST (Duplex.LongEdge, Duplex.ShortEdge)
}
}
Не забудьте также указать все соответствующие ограничения параметров, как показано ниже.