Condividi tramite


Direttive per il preprocessore

Importante

La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.

Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.

I file GPD possono contenere direttive del preprocessore, che possono essere usate per controllare l'analisi condizionale delle sezioni all'interno del file GPD. Nella tabella seguente vengono descritte le direttive del preprocessore che possono essere usate nei file GPD.

PreprocessoreDirective Definizione
*Definisci: SymbolName Definisce un simbolo.
*Undefine: SymbolName Rimuove un simbolo definito in precedenza.
*Ifdef: SymbolName Indica l'inizio di un blocco di voci di file GPD.

Se il simbolo specificato è definito, le voci del file GPD tra questa direttiva e la successiva direttiva *Ifdef**, *Elseifdef, *Else o *Endif vengono elaborate dal parser GPD.
*Elseifdef : SymbolName Se il simbolo specificato è definito e il simbolo specificato dalla direttiva *Ifdef o *Elseifdef precedente non è definito, le voci del file GPD tra questa direttiva e la successiva direttiva *Ifdef, *Elseifdef, *Elseif o *Endif vengono elaborate dal parser GPD.
*Else: Se il simbolo specificato dalla direttiva *Ifdef o *Elseifdef precedente non è definito, le voci del file GPD tra questa direttiva e la successiva direttiva *Ifdef o *Endif vengono elaborate dal parser GPD.
*Endif: Indica la fine di un blocco di voci di file GPD.
*Include: "FileName" Specifica il nome di un file GPD aggiuntivo. Per altre informazioni, vedere Uso di più file GPD in un minidriver.
*SetPPPrefix : PrefixString Modifica la stringa del prefisso anteporta alle direttive del preprocessore. Per altre informazioni, vedere la sezione Modifica del prefisso della direttiva del preprocessore.

Le direttive del preprocessore condizionale possono essere annidate. A ogni livello di annidamento, la sequenza per l'uso delle direttive del preprocessore condizionale è la seguente:

*Ifdef: sezione File GPD Symbol1

*Elseifdef: sezione File GPD Symbol2

*Elseifdef: sezione Del file GPD Symbol3

*Elseifdef: sezione File GPD Symbol4

...

*Else: sezione file GPD

*Endif:

Per ogni direttiva *Ifdef usata, *Endif è obbligatorio. Le direttive *Elseifdef e *Else sono facoltative. Ogni sezione del file GPD può contenere voci di file GPD e, facoltativamente, una sequenza annidata di direttive del preprocessore condizionale.

Tutti i simboli definiti con *Define rimangono definiti fino a quando non vengono definiti in modo esplicito usando *Undefine.

La direttiva *Include consente di specificare il nome di un file GPD aggiuntivo. Per altre informazioni, vedere Uso di più file GPD in un minidriver.

Si noti che la voce *IgnoreBlock GPD non influisce sulle direttive del preprocessore, perché il preprocessore viene eseguito prima del parser GPD.

Modifica del prefisso della direttiva del preprocessore

La direttiva *SetPPPrefix consente di modificare il prefisso usato con le direttive del preprocessore. Ovvero, è possibile usare questa direttiva per sostituire il carattere asterisco (*) che antepone le direttive del preprocessore con un altro carattere o stringa.

Ad esempio, se il file GPD contiene la direttiva seguente:

*SetPPPrefix: #SpecialPrefix#

il preprocessore interrompe quindi la ricerca di direttive del preprocessore che iniziano con * e cerca invece le direttive che iniziano con #SpecialPrefix#. La sequenza seguente modifica temporaneamente il prefisso del preprocessore in #SpecialPrefix#, quindi lo ripristina in *.

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

Lo scopo principale di questa funzionalità è consentire ai file GPD scritti per le versioni future del sistema operativo di essere compatibili con Windows 2000. Si supponga, ad esempio, che i file GPD per una versione futura del sistema operativo possano includere voci di file GPD in conflitto con le direttive del preprocessore con prefisso asterisco supportate da Windows 2000. Modificando il prefisso, è anche possibile usare un file GPD scritto per la versione futura del sistema operativo con Windows 2000. Un esempio può essere costruito come segue:

*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:

Si noti che questa tecnica modifica solo il prefisso che il preprocessore cerca. Le parole chiave riconosciute dal parser devono essere sempre precedute da un asterisco.

Simboli predefiniti del preprocessore

Microsoft definisce i simboli del preprocessore seguenti.

Simbolo Dove definito Definizione
WINNT_51 Preprocessore GPD per Windows XP L'ambiente è Windows XP.
WINNT_50 Preprocessore GPD per Windows XP e Windows 2000 Environment è Windows 2000.
WINNT_40 Preprocessori GPD per Windows XP, Windows 2000 e Windows NT 4.0 Environment è Windows NT 4.0.
PARSER_VER_1.0 Preprocessori GPD per Windows NT 4.0, Windows 2000 e Windows XP Parser GPD versione 1.0

I simboli WINNT_40, WINNT_50 e WINNT_51 sono utili per la creazione di file GPD compatibili con Windows NT 4.0, Windows 2000 e Windows XP. Se, ad esempio, Windows XP supporta una funzionalità della stampante non supportata da Windows 2000, tale funzionalità può essere specificata all'interno di una sezione del file GPD associata da *Ifdef: WINNT_51 e *Direttive Endif .