Diretivas do pré-processador
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.
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 |
---|---|
*Define: 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 for definido, as entradas do 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 for 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. |
*Else: | Se o símbolo especificado pela diretiva *Ifdef ou *Elseifdef anterior for indefinido, as entradas do 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. |
*Include: "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 anexada a diretivas de pré-processador. Para obter mais informações, consulte a seção Alterando o prefixo da diretiva do pré-processador. |
As diretivas de pré-processador condicionais podem ser aninhadas. Em cada nível de aninhamento, a sequência para usar diretivas de pré-processador condicionais é a seguinte:
*Ifdef: Seção do arquivo GPD Symbol1
*Elseifdef: Seção de arquivo GPD Symbol2
*Elseifdef: Seção de arquivo GPD Symbol3
*Elseifdef: Seção de arquivo GPD Symbol4
...
*Else: seção de 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 condicionais.
Todos os símbolos definidos usando *Define permanecem definidos até que explicitamente não sejam definidos usando *Undefine.
A diretiva *Include permite especificar 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 GPD *IgnoreBlock não afeta as diretivas do 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 precede as diretivas do pré-processador por outro caractere ou cadeia de caracteres.
Por exemplo, se o arquivo GPD contiver a seguinte política:
*SetPPPrefix: #SpecialPrefix#
Em seguida, o pré-processador para de procurar diretivas de pré-processador que começam com * e, em vez disso, procura diretivas que começam 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 objetivo principal desse recurso é permitir que os arquivos GPD gravados para versões futuras do sistema operacional sejam compatíveis com o Windows 2000. Por exemplo, suponha que os arquivos GPD de uma versão futura do sistema operacional possam incluir entradas de arquivo GPD que entrem em conflito com as diretivas de pré-processador prefixadas com asterisco com suporte no 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 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 sempre ser precedidas por um asterisco.
Símbolos de pré-processador pré-definidos
A Microsoft define os seguintes símbolos de pré-processador.
Símbolo | Where Defined | 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 é 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 oferecer suporte a um recurso de impressora que não é suportado pelo Windows 2000, esse recurso poderá ser especificado em uma seção de arquivo GPD limitada pelas diretivas *Ifdef: WINNT_51 e *Endif.