Como usar GetOptionAttribute
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. 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 Plataformade impressão moderna e o Guia de design do aplicativo de suporte de 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;