Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come creare un file INF per un driver di file system.
Per informazioni sull'installazione e la disinstallazione di un driver di file system tramite un file INF, seguire le linee guida fornite negli articoli seguenti per i driver di filtro del file system legacy:
Uso di un file INF per installare un driver di filtro del file system. È possibile usare il file INF da solo oppure con un file batch o applicazione di installazione in modalità utente.
Utilizzo di un file INF per disinstallare un driver di filtro del file system per informazioni di disinstallazione.
Informazioni sui file INF del sistema
I servizi installazione di Windows e Device Installer, noti collettivamente come SetupAPI, forniscono le funzioni che controllano l'installazione e il driver di Windows. I file INF controllano il processo di installazione. Per altre informazioni sui file INF, vedere Creare un file INF e Sezioni e direttive dei file INF.
Il file INF di un driver del file system fornisce istruzioni che SetupAPI usa per installarlo. Il file INF specifica i file che devono essere presenti per l'esecuzione del driver e le directory di origine e di destinazione per i file driver. Un file INF contiene anche informazioni di configurazione del driver archiviate in SetupAPI nel Registro di sistema, ad esempio il tipo di avvio del driver e il gruppo di ordini di carico.
È possibile creare un singolo file INF per installare il driver in più versioni del sistema operativo Windows. Per altre informazioni sulla creazione di un file INF, vedere Creazione di file INF per più piattaforme e sistemi operativi ecreazione di file INF internazionali.
A partire dalle versioni a 64 bit di Windows Vista, tutti i componenti in modalità kernel devono essere firmati per caricare ed eseguire. Questo requisito include driver non PnP (Plug and Play), ad esempio driver di file system, driver di filtro legacy e driver minifilter. Per informazioni generali su come firmare i driver, vedere Firma dei driver.
Per queste versioni del sistema operativo Windows, le informazioni seguenti sono rilevanti per i driver del file system.
I file INF per i driver non PnP, inclusi i driver del file system, non devono contenere sezioni [Manufacturer] o [Models].
Lo strumento da riga di comando SignTool , che si trova nella directory \bin\xx.x.xxxxx.x\SelfSign della directory di installazione di WDK, può essere usato per "incorporare" direttamente un file eseguibile SYS del driver. Per motivi di prestazioni, i driver di avvio devono contenere una firma incorporata.
Dato un file INF, lo strumento da riga di comando Inf2Cat può essere usato per creare un file di catalogo (cat) per un pacchetto driver.
Con i privilegi di amministratore, un driver non firmato può ancora essere installato nei sistemi basati su x64 a partire da Windows Vista. Tuttavia, il driver non verrà caricato (e quindi eseguito) perché non è firmato.
Per informazioni dettagliate sul processo di firma dei driver, incluso il processo di firma dei driver per le versioni a 64 bit di Windows Vista e versioni successive, vedere il documento Kernel-Mode Code Signing Walkthrough.
Tutti i componenti in modalità kernel, inclusi gli strumenti di sviluppo in modalità kernel personalizzati, devono essere firmati. Per altre informazioni, vedere Introduzione a Test-Signing).
I file INF non possono essere usati per leggere informazioni dal Registro di sistema o per avviare un'applicazione in modalità utente.
Sezioni in un file INF del driver del file system
Per creare il file INF del driver di file system, usare le seguenti informazioni come guida. È possibile usare lo strumento InfVerif per controllare la sintassi del file INF.
Un file INF per un driver di file system contiene in genere le sezioni seguenti.
Sezione Versione (obbligatorio)
La sezione Version specifica le informazioni sulla versione del driver, come illustrato nell'esempio seguente.
[Version]
Signature = "$WINDOWS NT$"
Provider = %Msft%
DriverVer = 08/28/2000,1.0.0.1
CatalogFile =
Nella tabella seguente vengono illustrati i valori che i driver di filtro del file system devono specificare nella sezione Version.
Ingresso | Valore |
---|---|
firma | "$WINDOWS NT$" |
Provider | Nel proprio file INF è necessario specificare un provider diverso da Microsoft. |
DriverVer | Consultare direttiva INF DriverVer |
CatalogFile | Vedere Uso di Inf2Cat per creare un file di catalogo |
Sezione DestinationDirs (facoltativa ma consigliata)
La sezione DestinationDirs specifica le directory in cui copiare i file del driver del file system.
In questa sezione e nella sezione ServiceInstall è possibile specificare directory di sistema note usando valori numerici definiti dal sistema. Per un elenco di questi valori, vedere sezione INF DestinationDirs. Nell'esempio seguente il valore "12" fa riferimento alla directory Drivers (%windir%\system32\drivers).
[DestinationDirs]
DefaultDestDir = 12
ExampleFileSystem.DriverFiles = 12
Sezione SourceDisksNames (obbligatorio)
La sezione SourceDisksNames specifica il supporto di distribuzione da utilizzare.
Nell'esempio seguente la sezione SourceDisksNames elenca un singolo supporto di distribuzione per il driver del file system. L'identificatore univoco per il supporto è 1. Il nome del supporto viene specificato dal token %Disk1%, definito nella sezione Stringhe del file INF.
[SourceDisksNames]
1 = %Disk1%
Sezione SourceDisksFiles (obbligatorio)
La sezione SourceDisksFiles specifica il percorso e i nomi dei file da copiare.
Nell'esempio seguente la sezione SourceDisksFiles elenca il file da copiare per il driver del file system e specifica che i file sono disponibili nel supporto il cui identificatore univoco è 1 (questo identificatore viene definito nella sezione SourceDisksNames del file INF).
[SourceDisksFiles]
examplefilesystem.sys = 1
Sezione DefaultInstall (obbligatorio)
Nella sezione DefaultInstall una direttiva CopyFiles copia i file del driver del file system nella destinazione specificata nella sezione DestinationDirs .
La direttiva CopyFiles non deve fare riferimento al file di catalogo o al file INF stesso; SetupAPI copia automaticamente questi file.
È possibile creare un singolo file INF per installare il driver in più versioni del sistema operativo Windows. Questo tipo di file INF viene creato creando più sezioni DefaultInstall, DefaultInstall.Services, DefaultUninstall e DefaultUninstall.Services per ogni versione del sistema operativo. Ogni sezione viene etichettata con una decorazione (ad esempio, .ntx86, .ntia64 o .nt) che specifica la versione del sistema operativo a cui si applica. Per altre informazioni sulla creazione di questo tipo di file INF, vedere Creazione di file INF per più piattaforme e sistemi operativi.
Nell'esempio seguente la direttiva CopyFiles copia i file elencati nella sezione ExampleFileSystem.DriverFiles del file INF.
[DefaultInstall]
OptionDesc = %ServiceDesc%
CopyFiles = ExampleFileSystem.DriverFiles
[ExampleFileSystem.DriverFiles]
examplefilesystem.sys
Sezione DefaultInstall.Services (obbligatorio)
La sezione DefaultInstall.Services contiene una direttiva AddService che controlla come e quando vengono caricati i servizi di un determinato driver.
Nell'esempio di codice seguente, la direttiva AddService aggiunge il servizio file system al sistema operativo. Il token %ServiceName% contiene la stringa del nome del servizio, definita nella sezione Stringhe del file INF. ExampleFileSystem.Service è il nome della sezione ServiceInstall del driver del file system.
[DefaultInstall.Services]
AddService = %ServiceName%,,ExampleFileSystem.Service
Sezione ServiceInstall (obbligatorio)
La sezione ServiceInstall aggiunge sottochiavi o nomi di valore al Registro di sistema e imposta i valori. Il nome della sezione ServiceInstall deve essere visualizzato in una direttiva AddService nella sezione DefaultInstall.Services.
Nell'esempio seguente viene illustrata la sezione ServiceInstall per il driver del file system.
[ExampleFileSystem.Service]
DisplayName = %ServiceName%
Description = %ServiceDesc%
ServiceBinary = %12%\examplefilesystem.sys
ServiceType = 2 ; SERVICE_FILE_SYSTEM_DRIVER
StartType = 1 ; SERVICE_SYSTEM_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
LoadOrderGroup = "File System"
AddReg = ExampleFileSystem.AddRegistry
La voce DisplayName specifica il nome del servizio. Nell'esempio precedente la stringa del nome del servizio viene specificata dal token %ServiceName%, definito nella sezione Stringhe del file INF.
La voce Descrizione specifica una stringa che descrive il servizio. Nell'esempio precedente questa stringa viene specificata dal token %ServiceDesc%, definito nella sezione Strings del file INF.
La voce ServiceBinary specifica il percorso del file eseguibile per il servizio. Nell'esempio precedente il valore 12 fa riferimento alla directory Drivers (%windir%\system32\drivers).
La voce ServiceType specifica il tipo di servizio. Nella tabella seguente sono elencati i valori possibili per ServiceType e i tipi di servizio corrispondenti.
Valore | Descrizione |
---|---|
0x00000001 | SERVICE_KERNEL_DRIVER (servizio driver del dispositivo) |
0x00000002 | SERVICE_FILE_SYSTEM_DRIVER (servizio driver filtro file system o file system) |
0x00000010 | SERVICE_WIN32_OWN_PROCESS (servizio Microsoft Win32 eseguito nel proprio processo) |
0x00000020 | SERVICE_WIN32_SHARE_PROCESS (servizio Win32 che condivide un processo) |
La voce ServiceType deve essere sempre impostata su SERVICE_FILE_SYSTEM_DRIVER per un driver del file system.
La voce StartType specifica quando avviare il servizio. Nella tabella seguente sono elencati i valori possibili per StartType e i relativi tipi di inizio corrispondenti.
Valore | Descrizione |
---|---|
0x00000000 | SERVICE_BOOT_START |
0x00000001 | SERVICE_SYSTEM_START |
0x00000002 | SERVIZIO_AVVIAMENTO_AUTOMATICO |
0x00000003 | AVVIO_RICHIESTA_SERVIZIO |
0x00000004 | SERVIZIO_DISABILITATO |
Per descrizioni dettagliate di questi tipi di avvio per determinare quale sia appropriato per il driver del file system, vedere What Determine When a Driver Is Loaded.For detailed description of these start types to determine which one is appropriate for your file system driver driver, see What Determine When a Driver Is Loaded.
A partire dai sistemi Windows Vista basati su x64, il file di immagine binaria di un driver di avvio (un driver con un tipo di inizio di SERVICE_BOOT_START) deve contenere una firma incorporata. Questo requisito garantisce prestazioni ottimali di avvio del sistema. Per altre informazioni, vedere il documento della procedura dettagliata per la firma del codiceKernel-Mode .
Per informazioni su come le voci StartType e LoadOrderGroup determinano quando viene caricato il driver, vedere What Determine When a Driver Is Loaded.
La voce ErrorControl specifica l'azione da eseguire se il servizio non viene avviato durante l'avvio del sistema. Nella tabella seguente sono elencati i valori possibili per ErrorControl e i relativi valori di controllo degli errori.
Valore | Descrizione |
---|---|
0x00000000 | SERVICE_ERROR_IGNORE (registrare l'errore e continuare l'avvio del sistema). |
0x00000001 | SERVICE_ERROR_NORMAL (Registrare l'errore, visualizzare un messaggio all'utente e continuare l'avvio del sistema). |
0x00000002 | SERVICE_ERROR_SEVERE (passare al set di controlli LastKnownGood del Registro di sistema e continuare l'avvio del sistema). |
0x00000003 | SERVICE_ERROR_CRITICAL (se l'avvio del sistema non usa il set di controlli LastKnownGood del Registro di sistema, passare a LastKnownGood e riprovare. Se l'avvio non riesce, eseguire una routine di controllo dei bug. Solo i driver necessari per l'avvio del sistema devono specificare questo valore nei file INF. |
La voce LoadOrderGroup deve essere sempre impostata su "File System" per un driver di file system. Questa impostazione è diversa da quella specificata per un driver filtro file system o un driver minifilter del file system in cui la voce LoadOrderGroup è impostata su uno dei gruppi di ordini di carico del filtro del file system. Per ulteriori informazioni sui gruppi di ordine di caricamento, vedere Load Order Groups for File System Filter Drivers e Load Order Groups and Altitudes for Minifilter Drivers.
La direttiva AddReg fa riferimento a una o più sezioni addRegistry definite dal writer INF che contengono informazioni da archiviare nel Registro di sistema per il servizio appena installato.
Se il file INF verrà usato anche per aggiornare il driver dopo l'installazione iniziale, le voci contenute nella sezione AddRegistry devono specificare il flag 0x00000002 (FLG_ADDREG_NOCLOBBER). Se si specifica questo flag, le voci del Registro di sistema vengono mantenute in HKLM\CurrentControlSet\Services quando vengono installati i file successivi. Per esempio:
[ExampleFileSystem.AddRegistry]
HKR,Parameters,ExampleParameter,0x00010003,1
Sezione DefaultUninstall (facoltativo)
La sezione DefaultUninstall è facoltativa, ma consigliata se il driver può essere disinstallato. Contiene direttive DelFiles e DelReg per rimuovere file e voci del Registro di sistema.
Nell'esempio seguente la direttiva DelFiles rimuove i file elencati nella sezione ExampleFileSystem.DriverFiles del file INF.
[DefaultUninstall]
DelFiles = ExampleFileSystem.DriverFiles
DelReg = ExampleFileSystem.DelRegistry
La direttiva DelReg fa riferimento a una o più sezioni delRegistry definite dal writer INF che contengono informazioni da rimuovere dal Registro di sistema per il servizio da disinstallare.
Sezione DefaultUninstall.Services (facoltativo)
La sezione DefaultUninstall.Services è facoltativa, ma consigliata se il driver può essere disinstallato. Contiene direttive DelService per rimuovere i servizi del driver del file system.
Nell'esempio seguente la direttiva DelService rimuove il servizio del driver del file system dal sistema operativo.
[DefaultUninstall.Services]
DelService = %ServiceName%,0x200
La direttiva DelService deve sempre specificare il flag 0x200 (SPSVCINST_STOPSERVICE) per arrestare il servizio prima dell'eliminazione del servizio.
Esistono alcune classi di prodotti file system che non possono essere completamente disinstallati. In questo caso, è sufficiente disinstallare i componenti del prodotto che possono essere disinstallati e lasciare i componenti che non possono essere disinstallati. Un esempio di tale prodotto è la funzionalità Microsoft Single Instance Store (SIS).
Sezione Strings (obbligatorio)
La sezione Strings definisce ogni %strkey% token usato nel file INF.
Ad esempio, il driver del file system definisce le stringhe seguenti nel file INF.
[Strings]
Msft = "Microsoft Corporation"
ServiceDesc = "Example File System Driver"
ServiceName = "ExampleFileSystem"
ParameterPath = "SYSTEM\CurrentControlSet\Services\ExampleFileSystem\Parameters"
Disk1 = "Example File System Driver CD"
È possibile creare un singolo file INF internazionale creando altre sezioni Stringhe e LanguageID specifiche delle impostazioni locali nel file INF. Per ulteriori informazioni sui file INF internazionali, vedere Creating International INF Files.