Compartir a través de


Uso de GetOptionAttribute

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

Esta función solo se admite para las características del controlador de impresora PostScript (PPD). Si un atributo determinado no está disponible, GetOptionAttribute devuelve E_INVALIDARG.

Parámetros de salida para atributos de opción generales

En la tabla siguiente, el parámetro pdwDataType toma valores del tipo enumerado EATTRIBUTE_DATATYPE.

Atributo de opción general Parámetros de salida
DisplayName pdwDataType: kADT_UNICODE

pbData: cadena Unicode terminada en null de la cadena de traducción del nombre de palabra clave de opción

pcbNeeded: recuento de bytes de la cadena Unicode a la que apunta pbData (incluido el terminador null)

Este atributo de opción está disponible para cualquier opción que EnumOptions pueda devolver en una característica del PPD.
Invocación pdwDataType: kADT_BINARY

pbData: matriz de bytes para invocationValue de la opción

pcbNeeded: recuento de bytes de los datos binarios a los que apunta pbData

Este atributo de opción está disponible para cualquier opción que EnumOptions pueda devolver en una característica del PPD. Si InvocationValue de la opción está vacío, la función establece pdwDataType como antes, establece pcbNeeded = 0 y, a continuación, devuelve S_OK.
OrderDependencyValue pdwDataType: kADT_LONG

pbData: el orden relativo especificado por la palabra clave OrderDependency o NonUIOrderDependency del PPD para esta opción. Observe que el primer parámetro de estas palabras clave es un número real que se convierte en LONG y se devuelve.

pcbNeeded: sizeof(LONG)

Este atributo de opción solo está disponible para una opción que tiene una entrada OrderDependency o *NonUIOrderDependency en el PPD y la entrada no omite optionKeyword.
OrderDependencySection pdwDataType: kADT_ASCII

pbData: cadena ASCII terminada en null que contiene uno de los siguientes nombres de sección: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup"

pcbNeeded: recuento de bytes de la cadena ASCII a la que apunta pbData (incluido el terminador null)

Este atributo de opción solo está disponible para una opción que tiene una entrada OrderDependency o NonUIOrderDependency en el PPD y la entrada no omite optionKeyword.

Parámetros de salida para atributos de opción específicos

Además de los atributos de opción generales descritos anteriormente, los atributos de opción enumerados en las tablas siguientes pueden tener limitaciones cuando estén disponibles. Algunos atributos están disponibles para todas las opciones de una característica del PPD específica, mientras que otros solo están disponibles para opciones específicas de su característica del PPD. Se enumeran estas limitaciones para cada atributo de opción.

Palabra clave Atributo de opción Parámetros de salida
InputSlot
RequiresPageRegion pdwDataType: kADT_BOOL

pbData: TRUE si el código de invocación PageRegion debe enviarse con el código de invocación InputSlot y FALSE en caso contrario. Se basa en la palabra clave RequiresPageRegion del PPD. Si se omite la palabra clave para esta opción de ranura de entrada, se devuelve TRUE para este atributo.

pcbNeeded: sizeof(BOOL)

Este atributo de opción está disponible para cualquier opción de la característica "InputSlot" del PPD, excepto para la opción generada por el controlador "*UseFormTrayTable".
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: TRUE si el orden de salida de binOption es "Reverse" y FALSE si el orden de salida es "Normal". Se basa en las palabras clave DefaultOutputOrder y ageStackOrder del PPD.

pcbNeeded: sizeof(BOOL)

Este atributo de opción está disponible para cualquier opción de la característica "OutputBin" del PPD.
PageSize
ImageableArea pdwDataType: kADT_RECT

pbData: un rectángulo delimitador del área de imagen de la opción PageSize, tal como se especifica en la palabra clave ImageableArea del PPD, se devuelve en una estructura RECT, cuyos miembros izquierdo e inferior contienen los valores llx y lly, y cuyos miembros derecho y superior contienen los valores urx y ury. Todos los valores se expresan en micras. Los valores llx y lly del PPD se redondean al alza al entero más próximo antes de convertirlos en micras. Los valores urx y ury del PPD se redondean a la baja al entero más próximo antes de convertirlos en micras.

pcbNeeded: sizeof(RECT)

Este atributo de opción está disponible para cualquier opción de la característica "PageSize" del PPD, excepto la opción "CustomPageSize".
PaperDimension pdwDataType: kADT_SIZE

pbData: la dimensión física de la opción PageSize, tal como se especifica en la palabra clave PaperDimension del PPD, se devuelve en una estructura SIZE, cuyo miembro cx contiene el valor de ancho y cuyo miembro cy contiene el valor de alto. Todos los valores se expresan en micras.

pcbNeeded: sizeof(SIZE)

Este atributo de opción está disponible para cualquier opción de la característica "PageSize" del PPD, excepto la opción "CustomPageSize".
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: los cuatro valores especificados por la palabra clave HWMargins del PPD se devuelven en una estructura RECT. Todos los valores se expresan en micras.

pcbNeeded: sizeof(RECT)

Este atributo de opción solo está disponible para la opción "CustomPageSize" de la característica "PageSize" del PPD.
MaxMediaHeight pdwDataType: kADT_DWORD

pbData: el valor especificado por la palabra clave *MaxMediaHeight del PPD, en micras.

pcbNeeded: sizeof(DWORD)

Este atributo de opción solo está disponible para la opción "CustomPageSize" de la característica "PageSize" del PPD.
MaxMediaWidth pdwDataType: kADT_DWORD

pbData: el valor especificado por la palabra clave MaxMediaWidth del PPD, en micras.

pcbNeeded: sizeof(DWORD)

Este atributo de opción solo está disponible para la opción "CustomPageSize" de la característica "PageSize" del PPD.
ParamCustomPageSize pdwDataType: kADT_CUSTOMSIZEPARAMS

pbData: matriz de elementos CUSTOMPARAM_MAX, donde cada elemento es una estructura CUSTOMSIZEPARAM. Cada elemento de esta matriz almacena los valores especificados en la entrada paramOption de la palabra clave ParamCustomPageSize del PPD. Para paramOption distinto de "Orientation", los valores de lMinVal e lMaxVal se expresan en micras. Para "Orientation", los valores de lMinVal e lMaxVal se encuentran en el intervalo de [0, 3].

pcbNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

Este atributo de opción solo está disponible para la opción "CustomPageSize" de la característica "PageSize" del PPD.

Para obtener más información, consulte la nota siguiente sobre ParamCustomPageSize.
InstalledMemory
VMOption pdwDataType: kADT_DWORD

pbData: el valor especificado por la palabra clave VMOption del PPD o 0 si el PPD no especifica la palabra clave VMOption para esta opción.

pcbNeeded: sizeof(DWORD)

Este atributo de opción está disponible para cualquier opción de la característica "InstalledMemory" del PPD.
FCacheSize pdwDataType: kADT_DWORD

pbData: el valor especificado por la palabra clave FCacheSize del PPD o 0 si el PPD no especifica la palabra clave FCacheSize para esta opción.

pcbNeeded: sizeof(DWORD)

Este atributo de opción está disponible para cualquier opción de la característica "InstalledMemory" del PPD.

Nota sobre ParamCustomPageSize

Este es un código de ejemplo que muestra cómo obtener los valores de orden original, mínimo y máximo del archivo del PPD de la entrada "ParamCustomPageSize Width". La constante CUSTOMPARAM_WIDTH, que se define en printoem.h, indica el desplazamiento de la estructura CUSTOMSIZEPARAM que contiene la información relacionada con la entrada Width. Esta estructura es una de las estructuras CUSTOMPARAM_MAX CUSTOMSIZEPARAM que forman una matriz de tales estructuras. El encabezado printoem.h define un conjunto de constantes denominadas CUSTOMPARAM_XXX que enumeran los desplazamientos de las estructuras de esta matriz (Width, Height, WidthOffset, HeightOffset y 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;