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


Использование GetOptionAttribute

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Эта функция поддерживается только для функций драйвера принтера PostScript (PPD). Если определенный атрибут недоступен, GetOptionAttribute возвращает E_INVALIDARG.

Выходные параметры для общих атрибутов параметров

В следующей таблице параметр pdwDataType принимает значения перечисленного типа EATTRIBUTE_DATATYPE.

Общий атрибут параметра Выходные параметры
Отображаемое имя pdwDataType: kADT_UNICODE

pbData: строка юникода, завершаемая null, в строке перевода имени ключевого слова параметра

pcbNeed: число байтов строки Юникода, на которую указывает pbData (включая терминатор NULL)

Этот атрибут параметра доступен любому параметру, который EnumOptions может возвращать функцию PPD.
Вызов pdwDataType: kADT_BINARY

pbData: массив байтов для параметра InvocationValue

pcbNeed: число байтов двоичных данных, на которые указывает pbData

Этот атрибут параметра доступен любому параметру, который EnumOptions может возвращать функцию PPD. Если параметр InvocationValue пуст, функция задает pdwDataType, как описано выше, задайте pcbNeed = 0, а затем верните S_OK.
OrderDependencyValue pdwDataType: kADT_LONG

pbData: относительный порядок, заданный ключевым словом OrderDependency или NonUIOrderDependency для этого параметра. Обратите внимание, что первый параметр этих ключевых слов — это реальное число, которое преобразуется в LONG и возвращается.

pcbNeed: sizeof(LONG)

Этот атрибут параметра доступен только для параметра, имеющего запись OrderDependency или*NonUIOrderDependency в PPD, и запись не пропускает параметрKeyword.
OrderDependencySection pdwDataType: kADT_ASCII

pbData: строка ASCII с пустым завершением, содержащая одно из следующих имен разделов: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup"

pcbNeed: число байтов строки ASCII, на которую указывает pbData (включая терминатор NULL)

Этот атрибут параметра доступен только для параметра, имеющего запись OrderDependency или NonUIOrderDependency в PPD, и запись не пропускает параметрKeyword.

Выходные параметры для определенных атрибутов параметров

Помимо общих атрибутов параметров, описанных ранее, атрибуты параметров, перечисленные в следующих таблицах, могут иметь ограничения, когда они доступны. Некоторые атрибуты доступны для всех параметров определенной функции PPD, а другие доступны только для определенных вариантов их функции PPD. Все такие ограничения перечислены для каждого атрибута параметра.

Ключевое слово Атрибут Option Выходные параметры
InputSlot
ТребуетсяPageRegion pdwDataType: kADT_BOOL

pbData: TRUE, если код вызова PageRegion должен быть отправлен с кодом вызова InputSlot и false. Это основано на ключевом слове RequiresPageRegion PPD. Если ключевое слово опущено для этого входного слота, значение TRUE возвращается для этого атрибута.

pcbNeed: sizeof(BOOL)

Этот атрибут параметра доступен для любого параметра функции PPD InputSlot, за исключением параметра"*UseFormTrayTable".
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: TRUE, если выходной порядок binOption имеет значение "Обратный" и FALSE, если выходной порядок равен "Обычный". Это основано на ключевых словах DefaultOutputOrder и ageStackOrder ppD.

pcbNeed: sizeof(BOOL)

Этот атрибут параметра доступен любому параметру функции PPD OutputBin.
PageSize
ImageableArea pdwDataType: kADT_RECT

pbData: ограничивающий прямоугольник области изображения параметра PageSize, как указано ключевым словом ImageableArea PPD, возвращается в структуре RECT, слева и нижней части которых содержат значения llx и lly, а также правые и верхние члены содержат значения urx и ury. Все значения находятся в микронах. Llx PPD и lly значения округляются до ближайшего целого числа перед преобразованием в микроны. Значения urx и ury PPD округляются до ближайшего целого числа, прежде чем преобразовываться в микроны.

pcbNeed: sizeof(RECT)

Этот атрибут параметра доступен любому параметру функции PPD PageSize, кроме параметра CustomPageSize.
PaperDimension pdwDataType: kADT_SIZE

pbData: физическое измерение параметра PageSize, указанное ключевым словом PaperDimension PPD, возвращается в структуре SIZE, элемент cx которого содержит значение ширины и элемент cy содержит значение высоты. Все значения находятся в микронах.

pcbNeed: sizeof(SIZE)

Этот атрибут параметра доступен для любого варианта функции PPD PageSize, кроме параметра CustomPageSize.
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: четыре значения, указанные ключевым словом HWMargins PPD, возвращаются в структуре RECT. Все значения находятся в микронах.

pcbNeed: sizeof(RECT)

Этот атрибут параметра доступен только для параметра CustomPageSize компонента PPD PageSize.
MaxMediaHeight pdwDataType: kADT_DWORD

pbData: значение, указанное ключевым словом PPD *MaxMediaHeight, в микронах.

pcbNeed: sizeof(DWORD)

Этот атрибут параметра доступен только для параметра CustomPageSize компонента PPD PageSize.
MaxMediaWidth pdwDataType: kADT_DWORD

pbData: значение, указанное ключевым словом MaxMediaWidth PPD в микронах.

pcbNeed: sizeof(DWORD)

Этот атрибут параметра доступен только для параметра CustomPageSize компонента PPD PageSize.
ParamCustomPageSize pdwDataType: kADT_CUSTOMSIZEPARAMS

pbData: массив элементов CUSTOMPARAM_MAX, где каждый элемент является структурой CUSTOMSIZEPARAM . Каждый элемент этого массива сохраняет значения, указанные в записи paramCustomPageSize ключевого слова ParamOption ppD. Для paramOption, отличных от ориентации, значения lMinVal и lMaxVal находятся в микронах. Для значений "Orientation", lMinVal и lMaxVal находятся в диапазоне [0, 3].

pcbNeed: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

Этот атрибут параметра доступен только для параметра CustomPageSize компонента PPD PageSize.

Дополнительные сведения см. в следующей заметке о ParamCustomPageSize.
InstalledMemory
VMOption pdwDataType: kADT_DWORD

pbData: значение, указанное ключевым словом VMOption PPD, или значение 0, если PPD не указывает ключевое слово VMOption для этого параметра.

pcbNeed: sizeof(DWORD)

Этот атрибут параметра доступен для любого параметра компонента PPD "InstalledMemory".
FCacheSize pdwDataType: kADT_DWORD

pbData: значение, указанное ключевым словом FCacheSize PPD или 0, если PPD не указывает ключевое слово FCacheSize для этого параметра.

pcbNeed: sizeof(DWORD)

Этот атрибут параметра доступен для любого параметра компонента PPD "InstalledMemory".

Примечание о ParamCustomPageSize

Ниже приведен пример кода, показывающий, как получить исходный порядок, мин и макс. значения параметра ParamCustomPageSize Width. Константа CUSTOMPARAM_WIDTH, определенная в printoem.h, указывает смещение структуры CUSTOMSIZEPARAM , содержащей сведения, связанные с записью Width. Эта структура является одной из CUSTOMPARAM_MAX структур CUSTOMSIZEPARAM, которые образуют массив таких структур. Заголовок printoem.h определяет набор констант с именем CUSTOMPARAM_XXX перечисление смещения структур в этом массиве (Width, Height, WidthOffset, HeightOffset и Orientation).

PCUSTOMSIZEPARAM  pCSParam;

pCSParam = (PCUSTOMSIZEPARAM)pbData + CUSTOMPARAM_WIDTH;

order = pCSParam->dwOrder;
// Convert lMinVal and lMaxVal from microns to points.
//   To convert microns to inches, divide by 25400.
//   To convert inches to points, multiply by 72.
min = pCSParam->lMinVal / 25400.0 * 72.0;
max = pCSParam->lMaxVal / 25400.0 * 72.0;