Al momento sei offline in attesa che la connessione Internet venga ristabilita

Modalità di scelta del driver di periferica più adatto da installare durante l'installazione

Il supporto per Windows XP è terminato

Il supporto Microsoft per Windows XP è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Il supporto per Windows Server 2003 è terminato il 14 luglio 2015.

Microsoft ha sospeso il supporto per Windows Server 2003 in data 14 luglio 2015. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Sommario
In questo articolo viene descritto il processo utilizzato dal sistema operativo per selezionare il driver di periferica più adatto per una data periferica.

Quando si esegue il programma di installazione di Windows, è possibile che siano disponibili più driver di periferica o file inf in grado di funzionare con una particolare periferica. Sia il programma di installazione che il componente Plug and Play tentano di risolvere questo genere di conflitti selezionando il driver di periferica più adatto alla periferica da installare.

NOTA: in questo articolo viene descritto solo il processo utilizzato per le periferiche che vengono installate durante la fase a interfaccia utente grafica (GUI) del processo di installazione oppure una volta completata l'installazione. Il processo di rilevamento del controller delle memorie di massa e i processi di selezione dei driver di periferica eseguiti durante la fase in modalità testo del programma di installazione utilizzano infatti un processo diverso.
Informazioni
Per ulteriori informazioni sul processo di rilevamento del controller delle memorie di massa, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
220845 Adding Third-Party or Updated Driver During Windows Setup
225125 Limited OEM Driver Support with F6 During Windows Setup

Il componente Plug and Play tenta di individuare un driver di periferica compatibile confrontando gli identificatori (ID) Plug and Play dell'hardware (restituiti dal firmware della periferica o dal BIOS del sistema quando la periferica viene enumerata) con qualsiasi ID Plug and Play presente nei file inf.

Plug and Play cerca il driver di periferica più adatto per una particolare periferica in tutti i file inf. Tale ricerca non viene interrotta alla prima corrispondenza trovata, bensì viene eseguita in tutti i file inf elencati nel percorso di ricerca, definito nella seguente voce del Registro di sistema:
HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
DevicePath:Reg_Expand_SZ:%Systemroot%\Inf

NOTA: per impostazione predefinita, questa voce del Registro di sistema contiene esclusivamente questo percorso, sebbene sia possibile che vengano aggiunti ulteriori percorsi nel corso di un'installazione automatica in cui venga utilizzato il parametro OemPnpDriversPath = nel file di risposte.

Il programma di installazione crea un elenco di driver di periferica compatibili contenente una corrispondenza in un file inf, assegnando a ciascun driver identificato un determinato rango, compreso tra "0" e "0xFFFF", dove 0 indica la corrispondenza più adatta e 0xFFFF quella meno adatta. Il driver di periferica di rango inferiore è considerato il più adatto e pertanto verrà installato.

I ranghi dei driver di periferica sono classificati come segue:
  • da 0x0 a 0xfff: l'ID hardware della periferica corrisponde all'ID hardware elencato in un file inf
  • da 0x1000 a 0x1fff: l'ID hardware della periferica corrisponde a uno degli ID compatibili presenti in un file inf
  • da 0x2000 a 0x2fff: uno degli ID compatibili della periferica corrisponde all'ID hardware presente in un file inf
  • da 0x3000 a 0x3fff: uno degli ID compatibili della periferica corrisponde all'ID compatibile presente in un file inf
  • 0xFFFF: corrispondenza peggiore possibile.
In Windows XP e Windows Server 2003 sono previste ulteriori classi di rango assegnabili ai driver di periferica:
  • da 0x8000 a 0x8FFF: corrispondenze di ID hardware non affidabili
  • da 0x9000 a 0x9FFF: corrispondenze di ID compatibili non affidabili
Alcuni file inf possono essere classificati come non attendibili se privi di firma digitale o se il nome della sezione Model non contiene apposite decorazioni per Windows NT (la periferica può essere installata in Windows NT, Windows 95 o Windows 98, ma non dispone di voci specifiche per questi sistemi operativi).

Se il programma di installazione identifica un driver di periferica come non affidabile, può abbassarlo di rango inserendolo in una classe di rango inferiore.
I ranghi dei driver di periferica appartenenti alla classe da 0x0 a 0xfff sono detti "corrispondenze di ID hardware" in quanto associano ID hardware a ID hardware. Questi driver sono considerati i più adatti. Tutti gli altri ranghi sono invece elencati come "compatibili" in quanto esiste almeno un ID compatibile per creare il rango di driver di periferica. I programmi di installazione classi e i programmi di coinstallazione possono influire sulla selezione del driver di periferica in quanto possono contrassegnare un driver come "non valido" se non supporta la periferica oppure possono cambiare il rango del driver di periferica.

In presenza di due driver di periferica con lo stesso rango inferiore, il programma di installazione utilizzerà quello con data più recente. Se uno dei driver di periferica è firmato, al driver privo di firma verrà assegnata la data 00\00\0000 e verrà selezionato e installato il driver di periferica firmato.

È possibile fornire un driver di periferica fornito da un OEM, ma non è detto che verrà selezionato e utilizzato. Anche se un produttore ha fornito un driver di periferica aggiornato, questo potrebbe essere classificato come driver di periferica compatibile e vedersi assegnato un rango superiore. Il programma di installazione non tiene in considerazione il fatto che il driver di periferica fornito dall'OEM sia dotato di firma digitale quando seleziona una corrispondenza per un driver di periferica. Se il driver di periferica privo di firma digitale possiede un grado inferiore costituirà la corrispondenza migliore rispetto a qualsiasi altro driver OEM e potrebbe essere selezionato e installato dal programma di installazione.

Quando si esegue il programma di installazione, se non viene rilevata alcuna corrispondenza in alcun file inf, l'installazione della periferica viene rimandata e la periferica potrebbe essere elencata come sconosciuta in Gestione periferiche. Se viene introdotta una nuova periferica, non durante il programma di installazione, e non viene rilevata alcuna corrispondenza nei file inf presenti nel computer, è possibile che venga visualizzato un messaggio che informa che nel computer è stato rilevato un nuovo componente hardware e venga chiesto di fornire un driver di periferica appropriato.

Se si dispone ad esempio di un computer con una scheda video PCI con ID Plug and Play contenuto in due diversi file inf, Nv3_disp.inf e Nv4_disp.inf, e nessuno di questi file di driver di periferica è dotato di firma digitale, a entrambi i driver di periferica verrà assegnata la data 00/00/00. In questo esempio, i file si trovano nelle cartelle D:\Drivers\Video1 e D:\Drivers\Video2.

Il Devicepath= corrente nel Registro di sistema presenta la voce %Systemroot%\Inf;%Systemdrive%\Drivers\Video1;%Systemdrive%\Drivers\Video2.

NOTA: %Systemroot% è D:\Winnt e %Systemdrive% è D:

Sia il programma di installazione che il componente Plug and Play eseguiranno una ricerca in tutti i file inf disponibili in questi percorsi e registreranno tutte le corrispondenze trovate. Se uno dei due dovesse trovare più di una corrispondenza, verrà utilizzata quella più adatta.

Il processo descritto sopra è illustrato nel dettaglio nel seguente estratto del file Setupapi.log. Per questo esempio, la modalità di registrazione del programma di installazione è stata impostata su dettagliata, seguendo le istruzioni riportate nel seguente articolo:
243996 How to Enable Verbose Logging in Windows 2000 GUI-Mode Setup

Se il programma di installazione viene eseguito normalmente, nel file Setupapi.log non saranno presenti tutti questi dettagli.

Durante l'interrogazione di una periferica, viene restituito un elenco di ID hardware e di ID compatibili. Non tutte le periferiche restituiscono più ID, come accade invece nella maggior parte dei casi. In questo esempio, una scheda video restituisce i seguenti ID:
Ricerca di ID hardware in corso...:Pci\Ven_10de&dev_0028&subsys_5a001092&rev_11,Pci\Ven_10de&dev_0028&subsys_5a001092,Pci\Ven_10de&dev_0028&cc_030000,Pci\Ven_10de&dev_0028&cc_0300Ricerca di ID compatibili in corso...:Pci\Ven_10de&dev_0028&rev_11,Pci\Ven_10de&dev_0028,Pci\Ven_10de&cc_030000,Pci\Ven_10de&cc_0300,Pci\Ven_10de,pci\cc_030000,Pci\Cc_0300Enumerazione file D:\Winnt\Inf\*.inf in corso...@ 07:11:59.191 : PNF di "D:\Winnt\Inf\1394.inf" aperto.@ 07:11:59.191 : PNF di "D:\Winnt\Inf\accessor.inf" aperto.@ 07:11:59.191 : PNF di "D:\Winnt\Inf\acpi.inf" aperto.@ 07:11:59.191 : PNF di "D:\Winnt\Inf\adm_mult.inf" aperto.@ 07:11:59.191 : PNF di "D:\Winnt\Inf\adm_port.inf" aperto.@ 07:11:59.207 : PNF di "D:\Winnt\Inf\agtinst.inf" aperto....Enumerazione file D:\Drivers\Video1\*.inf in corso...@ 07:12:00.660 : PNF di "D:\Drivers\Video1\NV4_DISP.inf" aperto.@ 07:12:00.660 : Il file (D:\Drivers\Video1\NV4_DISP.inf) non presenta  firma digitale, la data del driver sarà ignorata.@ 07:12:00.660 : Trovato Pci\VEN_10DE&DEV_0028 in D:\Drivers\Video1\NV4_DISP.inf; Periferica: NVIDIA RIVA TNT2;  Driver: NVIDIA RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Sezione: nv4@ 07:12:00.660 : Nome della sezione decorata: nv4Enumerazione file D:\Drivers\Video2\*.inf in corso...@ 07:12:00.660 : PNF di "D:\Drivers\Video2\NV3_DISP.inf" aperto.@ 07:12:00.675 : Il file (D:\Drivers\Video2\NV3_DISP.inf) non presenta  firma digitale, la data del driver sarà ignorata.@ 07:12:00.675 : Trovato PCI\VEN_10DE&DEV_0028 in D:\Drivers\Video2\NV3_DISP.inf; Periferica: NVIDIA RIVA TNT2;  Driver: NVIDIA RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Sezione: nv4@ 07:12:00.675 : Nome della sezione decorata: nv4@ 07:12:01.706 : Funzione di installazione periferica: DIF_SELECTBESTCOMPATDRV.@ 07:12:01.706 : Esecuzione installazione classe.@ 07:12:01.894 : Installazione classe completata.@ 07:12:01.894 : Esecuzione installazione predefinita.@ 07:12:01.894 : Il driver selezionato installa dalla sezione nv4 in  D:\Drivers\Video1\Nv4_disp.inf.@ 07:12:01.894 : Il GUID della classe della periferica è stato portato su  {4D36E968-E325-11CE-BFC1-08002BE10318}.@ 07:12:01.894 : Impostato driver selezionato.@ 07:12:01.894 : Selezionato driver con massima compatibilità.@ 07:12:01.894 : Installazione predefinita completata.@ 07:12:06.565 : Funzione di installazione periferica: DIF_ALLOW_INSTALL.@ 07:12:06.565 : Esecuzione installazione classe.@ 07:12:06.565 : Installazione classe completata.@ 07:12:06.581 : Funzione di installazione periferica: DIF_INSTALLDEVICEFILES.@ 07:12:06.581 : Esecuzione installazione classe.@ 07:12:06.581 : Installazione classe completata.@ 07:12:06.581 : Esecuzione installazione predefinita.
L'output di questo esempio mostra come il programma di installazione abbia selezionato e installato il driver di periferica utilizzando il file D:\Drivers\Video1\Nv4_disp.inf in quanto ha rilevato tale driver come la corrispondenza più adatta.

Per identificare facilmente le periferiche installate e i file inf utilizzati per l'installazione, aprire il file %Systemroot%\Setupapi.log nel Blocco note e cercare DIF_SelectBestCompatDrv per le periferiche installate in modalità Plug and Play oppure DIF_SelectDevice per quelle installate manualmente.
Proprietà

ID articolo: 279112 - Ultima revisione: 10/15/2003 22:22:00 - Revisione: 1.5

Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows XP Professional, Microsoft Windows XP Home Edition, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition

  • kbinfo kbenv kbsetup KB279112
Feedback
=">