Partilhar via


Diretivas de pré-processador

Importante

A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), 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 Guia de design do aplicativo de suporte de impressão v1 e v2.

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.

Diretiva de Pré-processador Definição
* Definir: SymbolName Define um símbolo.
* Undefine: 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 estiver definido, as entradas do arquivo GPD entre esta diretiva e a próxima diretiva *Ifdef**, *Elseifdef, *Else, ou *Endif serão processadas pelo analisador GPD.
* Elseifdef : SymbolName Se o símbolo especificado estiver definido e o símbolo especificado pela diretiva *Ifdef ou *Elseifdef anterior estiver indefinido, as entradas do arquivo GPD entre esta diretiva e a próxima diretiva *Ifdef, *Elseifdef, *Else, ou *Endif serão processadas pelo analisador GPD.
* Senão: Se o símbolo especificado pela diretiva *Ifdef ou *Elseifdef anterior estiver indefinido, as entradas do arquivo GPD entre esta 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 ficheiros GPD num Minidriver.
* SetPPPrefix : PrefixString Altera o prefixo adicionado às diretivas do pré-processador. Para obter mais informações, consulte a seção Alterando o prefixo da diretiva do pré-processador .

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

* Ifdef: Symbol1Seção do arquivo GPD

* Elseifdef: Symbol2 seção do arquivo GPD

* Elseifdef: seção do arquivo GPD Symbol3

* Elseifdef: seção do arquivo GPD Symbol4

...

* Senão: seção de arquivo GPD

* Endif:

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

Todos os símbolos definidos usando *Define permanecem definidos até explicitamente indefinidos usando *Undefine.

A diretiva *Include permite especificar o nome de um arquivo GPD adicional. Para obter mais informações, consulte Usando vários ficheiros GPD num Minidriver.

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

Alterando o prefixo da diretiva do 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 precede 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 procurar 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 o restaura para *.

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

O principal objetivo desse recurso é permitir que arquivos GPD escritos para futuras versões 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 podem incluir entradas de arquivo GPD que entram em conflito com as diretivas de pré-processador prefixadas por asterisco suportadas pelo Windows 2000. Ao alterar o prefixo, um arquivo GPD escrito para a futura versão do sistema operacional também pode ser usado com o Windows 2000. Um exemplo pode ser construído da seguinte forma:

*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. As palavras-chave reconhecidas pelo analisador devem ser sempre precedidas de 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 Ambiente é o Windows 2000.
WINNT_40 Pré-processadores GPD para Windows XP, Windows 2000 e Windows NT 4.0 Ambiente é o 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 ficheiros GPD compatíveis com o Windows NT 4.0, Windows 2000 e Windows XP. Se, por exemplo, o Windows XP suportar uma funcionalidade de impressora que não é suportada pelo Windows 2000, essa capacidade pode ser especificada numa secção de ficheiro GPD limitada pelas diretivas *Ifdef: WINNT_51 e *Endif .