Compartilhar via


Diretivas do pré-processador

Importante

Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft, juntamente com aplicativos de suporte de impressão (PSA), para personalizar a experiência de impressão em 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 de impressão.

Os arquivos GPD podem conter diretivas de pré-processador, que podem ser usadas para controlar a análise condicional de seções dentro do arquivo GPD. A tabela a seguir descreve as diretivas de pré-processador que podem ser usadas em arquivos GPD.

PreprocessorDirective Definição
*Definir: SymbolName Define um símbolo.
*Indefinir: SymbolName Remove um símbolo definido anteriormente.
*Ifdef: SymbolName Indica o início de um bloco de entradas de arquivo GPD.

Se o símbolo especificado for definido, as entradas de arquivo GPD entre essa diretiva e a próxima diretiva *Ifdef**, *Elseifdef, *Else ou *Endif serão processadas pelo analisador GPD.
*Elseifdef : SymbolName Se o símbolo especificado for definido e o símbolo especificado pela diretiva *Ifdef ou *Elseifdef anterior for indefinido, as entradas de arquivo GPD entre essa diretiva e a próxima diretiva *Ifdef, *Elseifdef, *Else ou *Endif serão processadas pelo analisador GPD.
*Caso contrário: Se o símbolo especificado pela diretiva *Ifdef ou *Elseifdef anterior for indefinido, as entradas de arquivo GPD entre essa diretiva e a próxima diretiva *Ifdef ou *Endif serão processadas pelo analisador GPD.
*Endif: Indica o fim de um bloco de entradas de arquivo GPD.
*Incluir: "FileName" Especifica o nome de um arquivo GPD adicional. Para obter mais informações, consulte Usando vários arquivos GPD em um minidriver.
*SetPPPrefix : PrefixString Altera a cadeia de caracteres de prefixo predefinida para diretivas de pré-processador. Para obter mais informações, consulte a seção Alterando o prefixo da diretiva de pré-processador .

Diretivas de pré-processador condicional podem ser aninhadas. Em cada nível de aninhamento, a sequência para usar diretivas de pré-processador condicional é a seguinte:

*Ifdef: seção de arquivo GPD Symbol1

*Elseifdef: seção arquivo GPD Symbol2

*Elseifdef: seção arquivo GPD Symbol3

*Elseifdef: seção arquivo GPD Symbol4

...

*Caso contrário: seção arquivo GPD

*Endif:

Para cada diretiva *Ifdef usada, *Endif é necessário. As diretivas *Elseifdef e *Else são opcionais. Cada seção de arquivo GPD pode conter entradas de arquivo GPD e, opcionalmente, uma sequência aninhada de diretivas de pré-processador condicional.

Todos os símbolos definidos usando *Definir permanecem definidos até que seja explicitamente indefinido usando *Undefine.

A diretiva *Include permite que você especifique o nome de um arquivo GPD adicional. Para obter mais informações, consulte Usando vários arquivos GPD em um minidriver.

Observe que a entrada *IgnoreBlock GPD não afeta as diretivas de pré-processador, pois o pré-processador é executado antes do analisador GPD.

Alterando o prefixo da diretiva de pré-processador

A diretiva *SetPPPrefix permite alterar o prefixo usado com diretivas de pré-processador. Ou seja, você pode usar essa diretiva para substituir o caractere asterisco (*) que anexa as diretivas de pré-processador por outro caractere ou cadeia de caracteres.

Por exemplo, se o arquivo GPD contiver a seguinte diretiva:

*SetPPPrefix: #SpecialPrefix#

em seguida, o pré-processador para de pesquisar diretivas de pré-processador que começam com * e, em vez disso, procura diretivas começando com #SpecialPrefix#. A sequência a seguir altera temporariamente o prefixo do pré-processador para #SpecialPrefix#e, em seguida, restaura-o para *.

*SetPPPrefix: #SpecialPrefix#
#SpecialPrefix#Ifdef: WINNT_50
#SpecialPrefix#Include: "ExtraGPD.gpd"
#SpecialPrefix#Endif:
#SpecialPrefix#SetPPPrefix: *

A principal finalidade desse recurso é permitir que arquivos GPD gravados para versões futuras do sistema operacional sejam compatíveis com o Windows 2000. Por exemplo, suponha que os arquivos GPD para uma versão futura do sistema operacional possam incluir entradas de arquivo GPD que entram em conflito com as diretivas de pré-processador prefixadas por asterisco compatíveis com o Windows 2000. Ao alterar o prefixo, um arquivo GPD gravado para a versão futura do sistema operacional também pode ser usado com o Windows 2000. Um exemplo pode ser construído da seguinte maneira:

*Ifdef: WINNT_70
    *SetPPPrefix: #SpecialPrefix#
    *% Do special, OS-specific processing of
    *% GPD file entries that might conflict with
    *% asterisk-prefixed preprocessor directives.
    #SpecialPrefix#SetPPPrefix: *
*Endif:

Observe que essa técnica altera apenas o prefixo que o pré-processador procura. Palavras-chave reconhecidas pelo analisador sempre devem ser precedidas por um asterisco.

Símbolos predefinidos do pré-processador

A Microsoft define os seguintes símbolos de pré-processador.

Símbolo Onde definido Definição
WINNT_51 Pré-processador GPD para Windows XP O ambiente é o Windows XP.
WINNT_50 Pré-processador GPD para Windows XP e Windows 2000 O ambiente é o Windows 2000.
WINNT_40 Pré-processadores GPD para Windows XP, Windows 2000 e Windows NT 4.0 O ambiente é Windows NT 4.0.
PARSER_VER_1.0 Pré-processadores GPD para Windows NT 4.0, Windows 2000 e Windows XP Analisador gpd versão 1.0

Os símbolos WINNT_40, WINNT_50 e WINNT_51 são úteis para criar arquivos GPD compatíveis com Windows NT 4.0, Windows 2000 e Windows XP. Se, por exemplo, o Windows XP der suporte a uma funcionalidade de impressora que não é compatível com o Windows 2000, essa funcionalidade poderá ser especificada em uma seção de arquivo GPD associada por *Ifdef: diretivas WINNT_51 e *Endif .