Combinazione di estensioni della piattaforma con versioni del sistema operativo
All'interno della sezione PRODUTTORE INF di un file INF, è possibile fornire sezioni dei modelli INF specifiche per varie versioni del sistema operativo Windows. Queste sezioni dei modelli specifici della versione vengono identificate usando la decorazione TargetOSVersion .
All'interno dello stesso file INF, è possibile specificare sezioni INF Models diverse per versioni diverse del sistema operativo. Le versioni specificate indicano le versioni del sistema operativo di destinazione con cui verranno usate le sezioni MODELLI INF. Se non vengono specificate versioni, Windows usa una sezione Models senza la decorazione TargetOSVersion per tutte le versioni di tutti i sistemi operativi.
Formato di decorazione TargetOSVersion
L'esempio seguente mostra il formato corretto della decorazione TargetOSVersion per Windows XP tramite Windows 10 versione 1511:
nt[Architecture][.[OSMajorVersion] [.[OSMinorVersion] [.[ProductType] [.[SuiteMask]]]]]
A partire da Windows 10 versione 1607 (Build 14310 e versioni successive), il formato corretto dell'elemento Decorativo TargetOSVersion include BuildNumber:
nt[Architecture][.[OSMajorVersion] [.[OSMinorVersion] [.[ProductType] [.[SuiteMask]] [.[BuildNumber]]]]]
Ogni campo è definito come segue:
Nt
Specifica che il sistema operativo di destinazione è basato su NT. Windows 2000 e versioni successive di Windows sono tutti basati su NT.
Architettura
Identifica la piattaforma hardware. Per altre informazioni sulle decorazioni della piattaforma dell'architettura nelle sezioni Modelli , vedere Creazione di file INF per più piattaforme e sistemi operativi.
OSMajorVersion
Numero che rappresenta il numero di versione principale per il sistema operativo. Per una tabella che elenca le versioni principali per i sistemi operativi Windows, vedere la sezione OSMajorVersion in INF Manufacturer .For a table listing major versions for the Windows operating systems, see OSMajorVersion in INF Manufacturer section.
OSMinorVersion
Numero che rappresenta il numero di versione secondaria per il sistema operativo. Per una tabella che elenca le versioni secondarie per i sistemi operativi Windows, vedere la sezione OSMinorVersion in INF Manufacturer .For a table listing minor versions for the Windows operating systems, see OSMinorVersion in INF Manufacturer section.
ProductType
Numero che rappresenta uno dei flag VER_NT_xxxx definiti in Winnt.h, ad esempio:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
Se viene specificato un tipo di prodotto, il file INF verrà utilizzato solo se il sistema operativo corrisponde al tipo di prodotto specificato. Se il file INF supporta più tipi di prodotto per una singola versione del sistema operativo, sono necessarie più voci TargetOSVersion .
SuiteMask
Numero che rappresenta una combinazione di uno o più flag VER_SUITE_xxxx definiti in Winnt.h. Questi flag includono quanto segue:
0x00000001 (VER_SUITE_SMALLBUSINESS)
0x00000002 (VER_SUITE_ENTERPRISE)
0x00000004 (VER_SUITE_BACKOFFICE)
0x00000008 (VER_SUITE_COMMUNICATIONS)
0x00000010 (VER_SUITE_TERMINAL)
0x00000020 (VER_SUITE_SMALLBUSINESS_RESTRICTED)
0x00000040 (VER_SUITE_EMBEDDEDNT )
0x00000080 (VER_SUITE_DATACENTER )
0x00000100 (VER_SUITE_SINGLEUSERTS )
0x00000200 (VER_SUITE_PERSONAL)
0x00000400 (VER_SUITE_SERVERAPPLIANCE)
Se vengono specificati uno o più valori di maschera suite, il file INF verrà utilizzato solo se il sistema operativo corrisponde a tutte le suite di prodotti specificate. Se il file INF supporta più combinazioni di gruppi di prodotti per una singola versione del sistema operativo, sono necessarie più voci TargetOSVersion .
BuildNumber
Specifica il numero minimo di build del sistema operativo della versione Windows 10 a cui si applica la sezione, a partire dalla build 14310 o successiva. Per una tabella che elenca i numeri di build per i sistemi operativi Windows, vedere La sezione BuildNumber in INF Manufacturer .For a table listing build numbers for the Windows operating systems, see BuildNumber in INF Manufacturer section.
Si presuppone che il numero di build sia relativo solo a una versione principale/secondaria del sistema operativo specifica e potrebbe essere reimpostato per una versione principale/secondaria del sistema operativo futura.
Qualsiasi numero di build specificato dalla decorazione TargetOSVersion viene valutato solo quando la versione principale o secondaria del sistema operativo di TargetOSVersion corrisponde esattamente alla versione corrente del sistema operativo (o AltPlatformInfo). Se la versione corrente del sistema operativo è maggiore della versione del sistema operativo specificata dalla decorazione TargetOSVersion (OSMajorVersion,OSMinorVersion), la sezione viene considerata applicabile indipendentemente dal numero di build specificato. Analogamente, se la versione corrente del sistema operativo è minore della versione del sistema operativo specificata dalla decorazione TargetOSVersion, la sezione non è applicabile.
Se viene specificato il numero di build, la versione del sistema operativo e buildNumber della decorazione TargetOSVersion deve essere maggiore della versione del sistema operativo e del numero di build del Windows 10 build 14310 in cui è stata introdotta per la prima volta questa decorazione. Le versioni precedenti del sistema operativo senza queste modifiche (ad esempio, Windows 10 build 10240) non analizzeranno le decorazioni sconosciute, quindi un tentativo di puntare a queste build precedenti impedirà effettivamente che il sistema operativo consideri la decorazione valida.
Come Windows elabora le decorazioni TargetOSVersion
Quando si installa un pacchetto driver in un dispositivo, Windows segue questa procedura per elaborare le sezioni MODELLI INF all'interno di un file INF:
Se una o più sezioni dei modelli INF hanno la decorazione TargetOS , Windows seleziona la sezione Modelli INF più vicina agli attributi per il sistema operativo host.
Ad esempio, se una sezione MODELLI INF ha una decorazione TargetOSntx86.5.1, Windows seleziona tale sezione se il sistema operativo host esegue Windows XP o versione successiva di Windows in un sistema basato su x86.
Analogamente, se una sezione MODELLI INF ha una decorazione TargetOSnt.6.0, Windows seleziona tale sezione se il sistema operativo host è Windows Vista o versione successiva di Windows in qualsiasi piattaforma hardware supportata.
Se una sezione MODELLI INF ha una decorazione TargetOSdi nt.10.0... 14393, Windows seleziona tale sezione se il sistema operativo host esegue una Windows 10 build uguale o maggiore di 14393 in qualsiasi piattaforma hardware supportata.
Se nessuna delle sezioni MODELLI INF ha una decorazione TargetOS corrispondente al sistema operativo host, Windows seleziona la sezione Models con un'estensione della piattaforma corrispondente o nessuna estensione della piattaforma.
Ad esempio, se una sezione MODELLI INF ha un'estensione della piattaforma ntx86, Windows seleziona tale sezione se il sistema operativo host è Microsoft Windows 2000 o versione successiva di Windows in un sistema basato su x86.
Se Windows non riesce a trovare una sezione modelli INF corrispondenti, non installerà tale pacchetto driver nel dispositivo.
Come vengono risolte le decorazioni TargetOsVersion
Quando si determinano le sezioni dei modelli INF applicabili, la valutazione viene eseguita per riga all'interno della sezione Produttore INF, in cui, per una determinata versione del sistema operativo, ogni riga può avere fino a una sezione applicabile.
L'estratto di INF seguente mostra un esempio in cui [ExampleModelsSection_1.NTamd64.10.0... 17134] verrà selezionato in un numero di build di Windows uguale o maggiore di 17134 e sia [ExampleModelsSection_1.NTamd64.10.0... 17134] e [ExampleModelsSection_2.NTamd64.10.0... 22000] verrà selezionato in un numero di build di Windows uguale o maggiore di 22000.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134
%ManufacturerName% = ExampleModelsSection_2,NTamd64.10.0...22000
L'estratto di INF seguente mostra un esempio in cui [ExampleModelsSection_1.NTamd64.10.0... 17134] verrà selezionato in un numero di build di Windows uguale o maggiore di 17134 e [ExampleModelsSection_1.NTamd64.10.0... 22000] verrà selezionato in un numero di build di Windows uguale o maggiore di 22000.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134,NTamd64.10.0...22000
Sezioni di modelli INF di esempio con decorazioni TargetOSVersion
Applicare a una determinata versione del sistema operativo e versioni successive
Questo estratto INF mostra come è possibile specificare che un pacchetto driver si applica solo a una determinata versione del sistema operativo e versioni successive.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134
; This driver package applies to Windows 10 1803 (build 17134) and later only
[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId
[ExampleInstallSection]
...
Si applica a una sola versione del sistema operativo
Questo estratto INF mostra come è possibile specificare che un pacchetto driver si applica solo a una singola versione del sistema operativo.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134,NTamd64.10.0...17763
; This driver package applies to Windows 10 1803 (build 17134)
[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId
; However, this driver package does nothing on Windows 10 1809 (build 17763) and later
[ExampleModelsSection.NTamd64.10.0...17763]
; intentionally left empty
[ExampleInstallSection]
...
Si applica a più versioni del sistema operativo con impostazioni diverse
Questo estratto INF mostra come è possibile specificare che un pacchetto driver deve essere sottoposto a istruzioni di installazione diverse per diverse versioni del sistema operativo.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.6.1,NTamd64.10.0
; This driver package applies to Windows 7 and later
[ExampleModelsSection.NTamd64.6.1]
%DeviceDesc%=ExampleInstallSection_Win7,ExampleHardwareId
; However, this driver package has different installation instructions on Windows 10 and later
[ExampleModelsSection.NTamd64.10.0]
%DeviceDesc%=ExampleInstallSection_Win10,ExampleHardwareId
[ExampleInstallSection_Win7]
...
[ExampleInstallSection_Win10]
...