Compartilhar via


Como usar GetOptionAttribute

Importante

Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte o Guia de design do aplicativo de suporte à impressão.

Esta função é compatível apenas com recursos de PPD (PostScript Printer Driver). Se um determinado atributo não estiver disponível, GetOptionAttribute retornará E_INVALIDARG.

Parâmetros de saída para atributos de opção gerais

Na tabela a seguir, o parâmetro pdwDataType obtém valores do tipo enumerado EATTRIBUTE_DATATYPE.

Atributo de opção geral Parâmetros de saída
DisplayName pdwDataType: kADT_UNICODE

pbData: cadeia de caracteres Unicode terminada em nulo da cadeia de caracteres de tradução do nome da palavra-chave da opção

pcbNeeded: contagem de bytes da cadeia de caracteres Unicode apontada por pbData (incluindo o terminador nulo)

Esse atributo de opção está disponível para qualquer opção que EnumOptions possa retornar em um recurso PPD.
Invocação pdwDataType: kADT_BINARY

pbData: matriz de bytes para InvocationValue da opção

pcbNeeded: contagem de bytes dos dados binários apontados por pbData

Esse atributo de opção está disponível para qualquer opção que EnumOptions possa retornar em um recurso PPD. Se InvocationValue da opção estiver vazio, a função definirá pdwDataType como acima, definirá pcbNeeded = 0 e retornará S_OK.
OrderDependencyValue pdwDataType: kADT_LONG

pbData: a ordem relativa especificada pela palavra-chave OrderDependency ou NonUIOrderDependency do PPD para essa opção. Observe que o primeiro parâmetro dessas palavras-chave é um número real que é convertido em LONG e retornado.

pcbNeeded: sizeof(LONG)

Esse atributo de opção está disponível somente para uma opção que tenha uma entrada OrderDependency ou *NonUIOrderDependency no PPD e a entrada não omite optionKeyword.
OrderDependencySection pdwDataType: kADT_ASCII

pbData: cadeia de caracteres ASCII terminada em nulo que contém um dos seguintes nomes de seção: "ExitServer" "Prolog" "DocumentSetup" "PageSetup" "JCLSetup" "AnySetup"

pcbNeeded: contagem de bytes da cadeia de caracteres ASCII apontada por pbData (incluindo o terminador nulo)

Esse atributo de opção está disponível somente para uma opção que tenha uma entrada OrderDependency ou NonUIOrderDependency no PPD e a entrada não omite optionKeyword.

Parâmetros de saída para atributos de opção específicos

Além dos atributos de opção gerais descritos anteriormente, os atributos de opção listados nas tabelas a seguir podem ter limitações quando estiverem disponíveis. Alguns atributos estão disponíveis para todas as opções de um recurso do PPD específico, enquanto outros estão disponíveis apenas para opções específicas de seu recurso do PPD. Tais limitações são listadas para cada atributo de opção.

Palavra-chave Atributo de opção Parâmetros de saída
InputSlot
RequiresPageRegion pdwDataType: kADT_BOOL

pbData: TRUE se o código de invocação PageRegion deve ser enviado com o código de invocação InputSlot e FALSE caso contrário. Isso é baseado na palavra-chave RequiresPageRegion do PPD. Se a palavra-chave for omitida para essa opção de slot de entrada, TRUE será retornado para esse atributo.

pcbNeeded: sizeof(BOOL)

Esse atributo de opção está disponível para qualquer opção do recurso "InputSlot" do PPD, exceto para a opção gerada pelo driver "*UseFormTrayTable".
OutputBin
OutputOrderReversed pdwDataType: kADT_BOOL

pbData: TRUE se a ordem de saída do binOption for "Reverse" e FALSE se a ordem de saída for "Normal". Isso é baseado nas palavras-chave DefaultOutputOrder e ageStackOrder do PPD.

pcbNeeded: sizeof(BOOL)

Esse atributo de opção está disponível para qualquer opção do recurso "OutputBin" do PPD.
PageSize
ImageableArea pdwDataType: kADT_RECT

pbData: uma caixa delimitadora da área de imagem da opção PageSize, conforme especificado pela palavra-chave ImageableArea do PPD, é retornada em uma estrutura RECT, cujos membros esquerdo e inferior contêm os valores llx e lly, e cujos membros direito e superior contêm os valores urx e ury. Todos os valores estão em mícrons. Os valores llx e lly do PPD são arredondados para cima para o número inteiro mais próximo antes de serem convertidos em mícrons. Os valores urx e ury do PPD são arredondados para baixo para o número inteiro mais próximo antes de serem convertidos em mícrons.

pcbNeeded: sizeof(RECT)

Esse atributo de opção está disponível para qualquer opção do recurso "PageSize" do PPD, exceto a opção "CustomPageSize".
PaperDimension pdwDataType: kADT_SIZE

pbData: a dimensão física da opção PageSize, conforme especificado pela palavra-chave PaperDimension do PPD, é retornada em uma estrutura SIZE, cujo membro cx contém o valor de largura e cujo membro cy contém o valor de altura. Todos os valores estão em mícrons.

pcbNeeded: sizeof(SIZE)

Esse atributo de opção está disponível para qualquer opção do recurso "PageSize" do PPD, exceto a opção "CustomPageSize".
PageSize: CustomPageSize
HWMargins pdwDataType: kADT_RECT

pbData: os quatro valores especificados pela palavra-chave HWMargins do PPD são retornados em uma estrutura RECT. Todos os valores estão em mícrons.

pcbNeeded: sizeof(RECT)

Esse atributo de opção está disponível apenas para a opção "CustomPageSize" do recurso "PageSize" do PPD.
MaxMediaHeight pdwDataType: kADT_DWORD

pbData: o valor especificado pela palavra-chave *MaxMediaHeight do PPD, em mícrons.

pcbNeeded: sizeof(DWORD)

Esse atributo de opção está disponível apenas para a opção "CustomPageSize" do recurso "PageSize" do PPD.
MaxMediaWidth pdwDataType: kADT_DWORD

pbData: o valor especificado pela palavra-chave MaxMediaWidth do PPD, em mícrons.

pcbNeeded: sizeof(DWORD)

Esse atributo de opção está disponível apenas para a opção "CustomPageSize" do recurso "PageSize" do PPD.
ParamCustomPageSize pdwDataType: kADT_CUSTOMSIZEPARAMS

pbData: uma matriz de elementos CUSTOMPARAM_MAX, onde cada elemento é uma estrutura CUSTOMSIZEPARAM. Cada elemento dessa matriz armazena valores especificados na entrada paramOption da palavra-chave ParamCustomPageSize do PPD. Para paramOption diferente de "Orientation", os valores de lMinVal e lMaxVal estão em mícrons. Para "Orientation", os valores de lMinVal e lMaxVal estão no intervalo de [0, 3].

pcbNeeded: sizeof(CUSTOMSIZEPARAM) * CUSTOMPARAM_MAX

Esse atributo de opção está disponível apenas para a opção "CustomPageSize" do recurso "PageSize" do PPD.

Para obter mais informações, consulte a seguinte observação sobre ParamCustomPageSize.
InstalledMemory
VMOption pdwDataType: kADT_DWORD

pbData: o valor especificado pela palavra-chave VMOption do PPD ou 0 se o PPD não especificar a palavra-chave VMOption para essa opção.

pcbNeeded: sizeof(DWORD)

Esse atributo de opção está disponível para qualquer opção do recurso "InstalledMemory" do PPD.
FCacheSize pdwDataType: kADT_DWORD

pbData: o valor especificado pela palavra-chave FCacheSize do PPD ou 0 se o PPD não especificar a palavra-chave FCacheSize para essa opção.

pcbNeeded: sizeof(DWORD)

Esse atributo de opção está disponível para qualquer opção do recurso "InstalledMemory" do PPD.

Observação sobre ParamCustomPageSize

Aqui está um código de exemplo que mostra como obter os valores de ordem, mín. e máx. originais do arquivo PPD da entrada "ParamCustomPageSize Width". A constante CUSTOMPARAM_WIDTH, definida em printoem.h, indica o deslocamento da estrutura CUSTOMSIZEPARAM que contém as informações relacionadas à entrada Width. Essa estrutura é uma das estruturas CUSTOMPARAM_MAX CUSTOMSIZEPARAM que formam uma matriz de tais estruturas. O cabeçalho printoem.h define um conjunto de constantes chamado CUSTOMPARAM_XXX listando os deslocamentos das estruturas nessa matriz (Width, Height, WidthOffset, HeightOffset e 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;