Использование 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;