Sezione Stringhe INF

Un file INF deve avere almeno una sezione Strings per definire ogni token %strkey% specificato altrove in tale INF.

[Strings] | 
[Strings.LanguageID] ...
 
strkey1 = ["]some string["]
strkey2 = "    string-with-leading-or-trailing-whitespace     "  | 
          "very-long-multiline-string" | 
          "string-with-semicolon" | 
          "string-ending-in-backslash" |
          ""double-quoted-string-value""
 ...

Voci

strkey1, strkey2, ...
Ogni chiave stringa in un file INF deve specificare un nome univoco costituito da lettere, cifre e/o altri caratteri esplicitamente visibili. Un carattere % all'interno di tale token strkey deve essere espresso come %%.

alcune stringhe | "alcune stringhe"
Specifica una stringa, facoltativamente delimitata usando virgolette doppie ("), che contiene lettere, cifre, punteggiatura e eventualmente anche determinati caratteri implicitamente visibili, in particolare spazio interno e/o caratteri di tabulazione. Tuttavia, una stringa senza virgolette non può contenere virgolette doppie interne ("), punto e virgola (;), linefeed, restituito o qualsiasi carattere di controllo invisibile e non può avere una barra rovesciata () come carattere finale.

"* string-with-leading-or-trailing-whitespace* " |

"molto-long-multiline-string" |

"string-with-punto e virgola" |

"string-end-in-backslash" |

""double-quoted-string-value""
Il valore specificato per un token %strkey% deve essere racchiuso tra virgolette doppie (") se soddisfa uno dei criteri seguenti:

  • Se una stringa specificata dispone di spazi vuoti iniziali o finali che devono essere mantenuti come parte del relativo valore, tale stringa deve essere racchiusa tra virgolette doppie per impedire che gli spazi vuoti iniziali e/o finali vengano eliminati dal parser INF.

  • Se una stringa lunga potrebbe contenere qualsiasi riga interna o caratteri restituiti a causa del wrapping della riga nell'editor di testo, deve essere racchiusa anche tra virgolette doppie per impedire il troncamento della stringa alla riga interna iniziale o restituita carattere.

  • Se tale stringa contiene un punto e virgola, deve essere racchiusa tra virgolette doppie per impedire che la stringa venga troncata al punto e virgola. Come già accennato nelle regole di sintassi generali per i file INF, il carattere punto e virgola inizia ogni commento nei file INF.

  • Se tale stringa termina in una barra rovesciata, deve essere racchiusa tra virgolette doppie per impedire che la stringa venga concatenata con la voce successiva. Come già accennato nelle regole di sintassi generali per i file INF, il carattere barra rovesciata () viene usato come continuatore di riga nei file INF.

  • Come una specifica stringa senza virgolette, tale stringa "virgolette" non può contenere virgolette doppie interne. Tuttavia, può essere specificato come valore stringa con virgolette doppie in modo esplicito usando una o più coppie aggiuntive di virgolette doppie ,ad esempio """alcune stringhe"").

    Il parser INF non elimina solo la coppia più esterna di virgolette doppie per qualsiasi "stringa con virgolette virgolette" in questa sezione, ma condensa anche ogni coppia sequenziale successiva di virgolette doppie in un singolo carattere di virgolette doppie.

    Ad esempio, """qualche stringa""" diventa anche "una stringa" quando viene analizzata.

Per riepilogare, qualsiasi stringa deve essere racchiusa in una coppia di caratteri di virgolette doppie (") se una delle seguenti è true:

  • La stringa contiene spazi vuoti iniziali o finali.
  • La stringa è così lunga che viene eseguito il wrapping della riga.
  • La stringa contiene un punto e virgola o un carattere barra rovesciata finale.
  • La stringa stessa è una stringa con virgolette.

Il parser INF di sistema elimina la coppia esterna di virgolette doppie delimitando tale stringa, insieme a qualsiasi carattere di spazio vuoto iniziale o finale all'esterno dei delimitatori di virgolette doppie.

Commenti

Poiché il parser INF di sistema esegue lo striping della coppia più esterna di virgolette doppie da qualsiasistringa "quoted string" definendo un token %strkey%, molti dei file INF di sistema definiscono tutti i token %strkey% come "stringa virgolette" per evitare la perdita involontaria di spazi vuoti iniziali e finali durante l'analisi INF. L'uso di "stringa virgolette" garantisce inoltre che, in particolare, i valori stringa lunghi che eseguano il wrapping tra righe e che le stringhe con barre rovesciate finali non possano essere concatenate alla riga successiva nel file INF.

Per creare un singolo file INF internazionale, un INF può avere un set di stringhe specifiche delle impostazioni locali. Sezioni LanguageID, come illustrato nell'istruzione di sintassi formale. L'estensione LanguageID è un valore esadecimale di 4 cifre (senza un valore "0x") iniziale definito come segue:

  • I 10 bit inferiori contengono l'ID della lingua primaria e i 6 bit successivi contengono l'ID di sottolanguage, come specificato dalla macro MAKELANGID definita in Winnt.h.
  • Gli ID lingua e sottolanguage devono corrispondere ai valori definiti dal sistema delle costanti Win32 LANG_XXX e SUBLANG_XXX definite in Winnt.h.

Ad esempio, un valore LanguageID pari a 0407 rappresenta un ID lingua primaria di LANG_GERMAN (07) con un ID di sottolanguage di SUBLANG_GERMAN (01) ad esempio nell'esempio seguente:

[Strings]              ; No language ID implies English
DiskName="My Excellent Software"
LocaleSubDir="English"

[Strings.0407]         ; 0407 is the language ID for German
DiskName="Meine ausgezeichnete Software"
LocaleSubDir="German"

Un file INF può contenere una sola sezione Stringhe, insieme a una stringa. Sezione LanguageID per ogni valore LanguageID.

Windows seleziona una singola sezione Strings usata per tradurre tutti i token %strkey% per l'installazione. A seconda delle impostazioni locali correnti di un determinato computer, Windows seleziona una sezione Strings nel modo seguente:

  1. Windows cerca prima di tutto . Valori LanguageID nell'INF corrispondenti alle impostazioni locali correnti assegnate al computer. Se viene trovata una corrispondenza esatta, Windows usa stringhe.Languageid Sezione INF per tradurre tutti i token %strkey% definiti all'interno di INF.

    È necessario duplicare tutti i token di stringa in tutte le stringhe.* sezioni, anche costanti numeriche/fisse che non devono essere localizzate.

  2. In caso contrario, Windows cerca una corrispondenza con il valore LANG_XXX con il valore di SUBLANG_NEUTRAL come SUBLANG_XXX. Se viene trovata una corrispondenza di questo tipo, Windows usa la sezione INF per tradurre tutti i token %strkey% definiti all'interno dell'INF.

  3. In caso contrario, Windows cerca una corrispondenza con il valore LANG_XXX e qualsiasi SUBLANG_XXX valido per lastessa famiglia LANG_ XXX. Se viene trovata una corrispondenza parziale di questo tipo, usare stringhe.Languageid Sezione INF per tradurre tutti i token %strkey% definiti all'interno di INF.

  4. In caso contrario, Windows usa la sezione Strings nondecorate per convertire tutti i token %strkey% definiti all'interno dell'INF.

Per convenzione, e per praticità nella creazione di un set di file INF per il mercato internazionale, le sezioni Strings sono l'ultima all'interno di tutti i file INF di sistema. Usando i token %strkey% per tutti i valori di stringa visibili dall'utente all'interno di un INF e posizionandoli nelle sezioni Stringhe per impostazioni locali, semplifica la traduzione di tali stringhe. Per altre informazioni sui file INF specifici delle impostazioni locali, vedere Creazione di file INF internazionali.

Anche se le sezioni Strings sono le ultime sezioni di ogni file INF, qualsiasi token %strkey% specificato definito in una sezione Strings può essere usato ripetutamente altrove in INF, in particolare, ovunque sia necessario il valore tradotto di tale token. Le funzioni SetupAPI espandono ogni token %strkey% nella stringa specificata e quindi utilizzano tale valore espanso per un'ulteriore elaborazione INF.

L'uso dei token %strkey% nei file INF non è limitato ai valori stringa visibili dall'utente. Questi token possono essere usati in qualsiasi modo pratico per il writer INF, purché ogni token sia definito all'interno di una sezione Strings . Ad esempio, quando si scrive un file INF che richiede la specifica di diversi GUID, potrebbe essere utile creare un token %strkey% per ogni GUID usando un nome significativo come sostituto per ogni valore GUID.

Se si specifica un set di %valori strkey% = "{GUID}" nella sezione Strings del file INF è necessario digitare ogni valore GUID esplicito una sola volta. In questo modo è possibile fornire una documentazione INF interna più leggibile rispetto all'uso di valori GUID espliciti nel file INF.

Tutti i token %strkey% devono essere definiti all'interno del file INF a cui fanno riferimento. Pertanto, per qualsiasi file INF con voci Include e Needs , è necessario che una sezione INF inclusa disponga di una propria sezione String per definire tutti i token %strkey% a cui fa riferimento in tale INF.

In una sezione stringhe INF, la lunghezza massima, in caratteri, di una stringa di sostituzione, incluso un carattere NULL terminante, è 4096 (Windows Vista e versioni successive di Windows) e 512 (Windows Server 2003, Windows XP e Windows 2000). Dopo la sostituzione della stringa, la lunghezza massima, in caratteri, di una stringa di file INF è 4096, incluso un carattere NULL terminante.

Esempio

Nell'esempio seguente viene illustrato un frammento di una sezione Strings da un dvd specifico delle impostazioni locali fornito dal sistema. Inf per le installazioni in paesi/aree geografiche in lingua inglese.

[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ... 

Nell'esempio seguente viene illustrata la concatenazione delle stringhe.

[OEM Windows System Component Verification]
OID = 1.3.6.1.4.1.311.10.3.7    ; WHQL OEM OID 
Notice = "%A% %B% %C% %D% %E%" 
[Strings]
A = "This certificate is used to sign untested drivers that have not passed the Windows Hardware Quality Labs (WHQL) testing process."
B = "This certificate and drivers signed with this certificate are intended for use in test environments only, and are not intended for use in any other context."
C = "Vendors who distribute this certificate or drivers signed with this certificate outside a test environment may be in violation of their driver signing agreement."
D = "Vendors who have their drivers signed with this certificate do so at their own risk." 
E = "In particular, Microsoft assumes no liability for any damages that may result from the distribution of this certificate or drivers signed with this certificate outside the test environment described in a vendor's driver signing agreement."

Vedi anche

DDInstall

DDInstall. CoInstaller

DDInstall. HW

DDInstall. Interfacce

DDInstall. Servizi

Produttore

InterfaceInstall32

Modelli

SourceDisksNames

Versione