Regole di sintassi generali per i file INF
Un file INF è un file di testo organizzato in sezioni denominate. Alcune sezioni hanno nomi definiti dal sistema e alcune sezioni hanno nomi determinati dal writer del file INF.
Ogni sezione contiene voci specifiche della sezione interpretate dai componenti di installazione del dispositivo. Alcune voci iniziano con una parola chiave predefinita. Queste voci sono chiamate direttive.
Alcune voci di file INF sono fondamentalmente puntatori da una sezione a un'altra, per uno scopo specifico. Ad esempio, una direttiva INF AddReg identifica una sezione contenente voci che indicano a Windows di modificare il Registro di sistema. Queste voci includono talvolta argomenti aggiuntivi (obbligatori o facoltativi) per Windows da interpretare durante l'installazione.
Altre voci di file INF non puntano ad altre sezioni, ma forniscono informazioni usate da Windows durante l'installazione, ad esempio nomi di file, valori del Registro di sistema, informazioni sulla configurazione hardware, flag e così via. Ad esempio, una direttiva INF DriverVer fornisce informazioni sulla versione del driver.
Quando Windows inizia un'installazione, cerca prima di tutto una sezione INF Version per verificare la validità del file INF. Avvia quindi l'installazione trovando una sezione INF Manufacturer. Questa sezione contiene direttive per le sezioni MODELLI INF, che a sua volta forniscono direttive che portano a varie sezioni INF DDInstall, in base all'ID hardware del dispositivo installato.
Le regole di sintassi seguenti regolano il contenuto obbligatorio e facoltativo dei file INF, il formato dei nomi di sezione usando token di stringa e formato di riga, continuazione e commenti.
Distinzione tra maiuscole e minuscole
- I nomi delle sezioni, le voci e le direttive sono senza distinzione tra maiuscole e minuscole. Ad esempio, la versione, LA VERSIONE e La versione sono specifiche del nome di sezione altrettanto valide all'interno di un file INF.
Contenuto obbligatorio e facoltativo
Il set di sezioni richieste e facoltative, voci e direttive in qualsiasi particolare file INF dipende dal tipo di dispositivo/driver o componente da installare.
Il set di sezioni, voci specifiche della sezione e direttive necessarie per installare qualsiasi dispositivo specifico e i relativi driver dipendono anche in qualche modo dal programma di installazione della classe corrispondente, se presente. Per altre informazioni sul modo in cui i programmi di installazione della classe forniti dal sistema gestiscono i file INF specifici del tipo di dispositivo, vedere la documentazione specifica del tipo di dispositivo in WDK.
All'interno delle definizioni di sintassi, le voci facoltative sono delimitate da parentesi quadre non delimitate ([,]). D'altra parte, le parentesi grassetto ([, ]) sono necessari elementi della voce in cui sono contenuti. Nell'esempio seguente sono necessarie le parentesi quadre intorno a Version , mentre le parentesi quadre intorno al=nome della classe indicano che questa voce è facoltativa.
[Version] Signature="signature-name" [Class=class-name] ...
Nomi di sezione
Le sezioni possono essere specificate in qualsiasi ordine. La maggior parte delle sezioni dell'elenco di file INF in un determinato ordine, per convenzione, ma Windows trova le sezioni in base al nome, non in base al percorso all'interno del file INF.
Ogni sezione di un file INF inizia con il nome della sezione racchiuso tra parentesi quadre ([ ]). Il nome della sezione può essere definito dal sistema o definito dal writer INF.
Ad esempio, [Produttore] specifica l'inizio della sezione Produttore denominata dal sistema, mentre [Std.Mfg] rappresenta un determinato nome della sezione Modelli definiti dal writer INF.
Un nome di sezione ha una lunghezza massima di 255 caratteri in Windows 2000 e versioni successive di Windows.
Ogni sezione termina all'inizio di un nuovo [nome-sezione] o al segno finale del file.
Se più sezioni di un file INF hanno lo stesso nome, il sistema unisce le voci e le direttive in una singola sezione.
A meno che non sia racchiuso tra virgolette doppie ("), un nome di sezione definito dal writer INF deve essere una stringa univoca a-INF senza virgolette di caratteri esplicitamente visibili, esclusi determinati caratteri con significati specifici di INF. In particolare, un nome di sezione non quotato a cui fa riferimento una voce o una direttiva di sezione non può avere spazi iniziali o finali, un carattere linefeed, un carattere restituito o qualsiasi carattere di controllo invisibile e non deve contenere schede. Inoltre, non può contenere una delle parentesi quadre ([ ]) caratteri, una percentuale singola (%) , un punto e virgola (;) o qualsiasi virgolette doppie interne (") e non può avere una barra\ rovesciata () come ultimo carattere.
Ad esempio, Std.Mfg e Std_Mfg sono nomi di sezione univoci e validi quando si fa riferimento a una voce o una direttiva file INF, ma Std; Mfg (con il punto e virgola interno) non è valido a meno che non sia racchiuso tra virgolette doppie (").
Specificando un nome di sezione definito da INF-writer come "stringa con virgolette" viene eseguito l'override della maggior parte delle restrizioni descritte in precedenza sui caratteri nei nomi di sezione a cui si fa riferimento. Tale nome di sezione delimitato può contenere quasi tutti i caratteri esplicitamente o implicitamente visibili, tranne la parentesi di chiusura (]) purché la sezione corrispondente nel file INF corrisponda esattamente a questa"stringa virgolette".
Ad esempio, ";; Std Mfg " è un riferimento al nome di sezione valido se la dichiarazione di sezione corrispondente nel file INF corrisponde esattamente al nome all'interno delle virgolette doppie rispetto ai caratteri di spazio e punto e virgola come [;; Std Mfg ].
Uso dei token di stringa
Molti valori in un file INF, inclusi i nomi di sezione definiti dal writer INF, possono essere espressi come token di chiave stringa della %maschera strkey%. Nella sezione Stringhe INF del file INF ogni chiave di stringa deve essere associata a un valore stringa costituito da una sequenza di caratteri esplicitamente visibili. Se necessario, il codice di installazione converte il valore stringa in Unicode.
Per altre informazioni su come definire % token strkey% e i rispettivi valori, vedere la descrizione della sezione Stringhe INF.
Formato riga, continuazione e commenti
Ogni voce e direttiva in una sezione termina con un carattere restituito o linefeed. Pertanto, l'editor di testo usato per creare un file INF non deve inserire caratteri restituiti o linefeed dopo alcuni caratteri arbitrari, determinati dall'editor.
Il carattere della barra rovesciata (\) può essere usato come continuatore esplicito di riga in una voce o una direttiva. Tuttavia, i caratteri barra rovesciata vengono usati anche nelle specifiche del percorso. Per assicurarsi che un carattere di barra rovesciata visualizzato in una specifica del percorso non venga interpretato erroneamente come continuatore di riga, usare la strategia seguente:
Per una direttiva che si estende su due righe, una delle quali è una voce contenente una barra rovesciata, usare virgolette per delimitare la voce contenente la barra rovesciata.
CopyFiles = "SomeDirectory\"\ ,SomeFile
Evitare di usare il carattere barra rovesciata nel modo illustrato nell'esempio seguente. Windows ignora la prima barra rovesciata e interpreta la seconda barra rovesciata come continuatore di riga.
CopyFiles = SomeDirectory\\ ,SomeFile
La sintassi seguente è valida ed è equivalente a
CopyFiles = "SomeDirectory\",SomeFile ; comment
.CopyFiles = "SomeDirectory\"\ ; comment ,SomeFile
Poiché il testo dopo un punto e virgola viene ignorato,
CopyFiles = "SomeDirectory\" ; comment ,SomeFile
non funziona.
I commenti iniziano con un carattere di punto e virgola (;). Durante l'analisi e l'interpretazione di un file INF, il sistema presuppone che il processo di installazione non abbia alcuna rilevanza:
- Qualsiasi carattere che segue un punto e virgola nella stessa riga, a meno che il punto e virgola non venga visualizzato all'interno di un token di tipo "stringa virgolette" o %strkey%
- Qualsiasi riga vuota che contiene nulla, ad eccezione di un carattere linefeed o restituito
Le virgole separano i valori forniti nelle voci e nelle direttive della sezione.
Una voce o una direttiva file INF può omettere un valore facoltativo al centro di un elenco di valori, ma le virgole devono rimanere. I file INF possono omettere virgole finali.
Si consideri ad esempio la sintassi per una voce SourceDisksFiles :
Filename=diskid[,[subdir][,size]]
Una voce che omette il valore sottodir , ma specifica il valore di dimensione deve specificare i delimitatori di virgole per entrambi i valori, come illustrato nell'esempio seguente:
Filename=diskid,dimensioni
Una voce in un file INF che omette i due valori facoltativi può avere questo formato:
Filename=diskid
Per includere un carattere percentuale (%) nei valori forniti nelle voci e nelle direttive della sezione, eseguire l'escape del carattere percentuale con un altro carattere percentuale.
Si consideri ad esempio questa istruzione in una sezione [add-registry-section] :
HKR,,EventMessageFile,0x00020000,"%SystemRoot%%\System32\IoLogMsg.dll"
Il valore del Registro di sistema verrà impostato con il valore seguente:
%SystemRoot%\System32\IoLogMsg.dll
Per includere un carattere di virgolette doppie (") nei valori forniti nelle voci e nelle direttive della sezione, evitare il carattere di virgolette doppie con un altro carattere di virgolette doppie. Si noti che la stringa deve trovarsi all'interno di una stringa "virgolette".
Si consideri ad esempio questa istruzione in una sezione [add-registry-section] :
HKR, esempio,"Visualizzare una stringa "esempio""
Il valore del Registro di sistema verrà impostato con il valore seguente:
Visualizzare una stringa "esempio"
Limiti di dimensioni INF
La lunghezza massima, in caratteri, di un campo di file INF, prima della sostituzione della stringa e dell'inclusione di un carattere NULL terminante, è 4096.
Dopo la sostituzione di stringhe, la lunghezza massima, in caratteri, di una stringa di file INF è 4096, che include un carattere NULL terminante.
Tuttavia, tenere presente che Plug and Play (PnP) può imporre un limite più restrittivo per determinati campi di file INF che riconosce o usa, ad esempio la descrizione del dispositivo, il provider di driver e il produttore del dispositivo.