プラットフォーム拡張機能とオペレーティング システムのバージョンの組み合わせ

INF ファイルの INF Manufacturer セクション内で、Windows オペレーティング システムのさまざまなバージョンに固有の INF モデル セクションを指定できます。 これらのバージョン固有の Models セクションは、 TargetOSVersion 装飾を使用して識別されます。

同じ INF ファイル内で、オペレーティング システムのバージョンごとに異なる INF Models セクション を指定できます。 指定したバージョンは、INF モデル セクションを使用する対象のオペレーティング システムのバージョンを示します。 バージョンが指定されていない場合、Windowsでは、すべてのオペレーティング システムのすべてのバージョンに対して Models セクションが TargetOSVersion 装飾なしで使用されます。

TargetOSVersion 装飾形式

次の例は、Windows XP から Windows 10 バージョン 1511 までの TargetOSVersion 装飾の正しい形式を示しています。

nt[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.[SuiteMask]]]]]

Windows 10 バージョン 1607 (ビルド 14310 以降) 以降、TargetOSVersion 装飾の正しい形式には BuildNumber が含まれます。

nt[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.[SuiteMask]][.[BuildNumber]]]]]

各フィールドは次のように定義されます。

nt
ターゲット オペレーティング システムが NT ベースであることを指定します。 Windows 2000 以降のバージョンのWindowsはすべて NT ベースです。

Architecture
ハードウェアプラットフォームを特定します。 モデルのセクションでのアーキテクチャ プラットフォームの装飾の詳細については、「複数のプラットフォームとオペレーティング システム用の INF ファイルの作成」を参照してください。

OSMajorVersion
オペレーティング システムのメジャー バージョン番号を表す番号。 Windows オペレーティング システムのメジャー バージョンの一覧については、INF Manufacturer セクション内の「OSMajorVersion」を参照してください。

OSMinorVersion
オペレーティング システムのマイナー バージョン番号を表す番号。 Windows オペレーティング システムのマイナー バージョンの一覧については、INF Manufacturer section の OSMinorVersion を参照してください。

ProductType
1つの Winnt.h で定義されている VER_NT_xxxx フラグのいずれかを表す数値。次のようなものがあります。

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

製品の種類が指定されている場合、INF ファイルは、オペレーティング システムが指定された製品の種類と一致する場合にのみ使用されます。 INF ファイルで 1 つのオペレーティング システム バージョンに対して複数の製品の種類がサポートされている場合は、複数の TargetOSVersion エントリが必要です。

SuiteMask
1 つ以上の VER_SUITE_xxxx フラグの組み合わせを表す、Winnt.h で定義されている数値。 これらのフラグには、次のものが含まれます。

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)

1 つ以上のスイート マスク値が指定されている場合、INF ファイルは、オペレーティング システムが指定されたすべての製品スイートと一致する場合にのみ使用されます。 INF ファイルで 1 つのオペレーティング システム バージョンに対して複数の製品スイートの組み合わせがサポートされている場合は、複数 の TargetOSVersion エントリが必要です。

BuildNumber
セクションが適用されるWindows 10 リリースの最小 OS ビルド番号 (ビルド 14310 以降) を指定します。 Windows オペレーティング システムのビルド番号を一覧表示する表については、INF Manufacturer section の BuildNumber を参照してください。

ビルド番号は、特定の OS メジャー/マイナー バージョンのみに対して相対的であると見なされ、今後の OS メジャー/マイナー バージョンではリセットされる可能性があります。

TargetOSVersion 装飾で指定されたビルド番号は、TargetOSVersion の OS のメジャー/マイナー バージョンが現在の OS (または AltPlatformInfo) のバージョンと正確に一致する場合にのみ評価されます。  現在の OS バージョンが TargetOSVersion 装飾 (OSMajorVersion、OSMinorVersion) で指定された OS バージョンより大きい場合、セクションは指定されたビルド番号に関係なく適用可能と見なされます。 同様に、現在の OS バージョンが TargetOSVersion 装飾で指定された OS バージョンより小さい場合、セクションは適用されません。

ビルド番号を指定する場合、TargetOSVersion 装飾の OS バージョンと BuildNumber の両方が、この装飾が最初に導入されたWindows 10 ビルド 14310 の OS バージョンとビルド番号より大きい必要があります。 これらの変更のないオペレーティング システムの以前のバージョン (たとえば、ビルド 10240 Windows 10) では、不明な装飾を解析しないため、これらの以前のビルドをターゲットにしようとすると、OS で装飾がまったく有効と見なされなくなります。

Windows が TargetOSVersion 装飾を処理する方法

デバイスにドライバー パッケージをインストールする場合は、次の手順に従って INF ファイル内の INF モデル セクションを処理します。

  1. 1 つ以上の INF モデル セクションに TargetOS 装飾がある場合、Windowsは、ホスト オペレーティング システムの属性に最も近い INF モデル セクションを選択します。

    たとえば、INF Models セクションに TargetOS 装飾 ntx86.5.1 がある場合、ホスト オペレーティング システムが x86 ベースのシステムで Windows XP 以降を実行していると、Windows はそのセクションを選択します。

    同様に、INF Models セクションに TargetOS 装飾が nt.6.0 である場合、ホスト オペレーティング システムがサポートされている任意のハードウェア プラットフォーム上の Windows Vista またはそれ以降のバージョンの Windows であれば、Windows はそのセクションを選択します。

    INF Models セクションに nt.10.0...14393 の TargetOS 装飾がある場合、ホスト オペレーティング システムがサポートされているいずれかのハードウェア プラットフォームで 14393 以上の Windows 10 ビルドを実行していれば、Windows はそのセクションを選択します。

  2. どの INF モデル セクションにも、ホスト オペレーティング システムと一致する TargetOS 装飾がない場合、Windowsは、一致するプラットフォーム拡張機能またはプラットフォーム拡張機能がない Models セクションを選択します。

    たとえば、INF Models セクションに ntx86 のプラットフォーム拡張機能がある場合、ホスト オペレーティング システムが x86 ベースのシステム上の Microsoft Windows 2000 またはそれ以降の Windows である場合、Windows はそのセクションを選択します。

  3. Windows が一致する INF モデル セクション を見つけられない場合、Windows はそのドライバー パッケージをデバイスにインストールしません。

TargetOsVersion 装飾の解決方法

該当する INF モデル セクションを決定する場合、評価は INF Manufacturer セクション内で 1 行ごとに実行されます。特定の OS バージョンでは、各行に適用可能なセクションが 1 つまで含まれる場合があります。

次の INF の抜粋は、[ExampleModelsSection_1.NTamd64.10.0...17134] が Windows ビルド番号 17134 以上で選択され、[ExampleModelsSection_1.NTamd64.10.0...17134] と [ExampleModelsSection_2.NTamd64.10.0...22000] の 両方 が Windows ビルド番号 22000 以上で選択される例を示しています。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134
%ManufacturerName% = ExampleModelsSection_2,NTamd64.10.0...22000

次の INF の抜粋は、Windows ビルド番号が 17134 以上の場合に [ExampleModelsSection_1.NTamd64.10.0...17134] が選択され、Windows ビルド番号が 22000 以上の場合に [ExampleModelsSection_1.NTamd64.10.0...22000] が選択される例を示しています。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134,NTamd64.10.0...22000

INF モデル セクションのサンプル(TargetOSVersion 装飾付き)

特定の OS バージョン以降に適用される

この INF 抜粋は、ドライバー パッケージが特定の OS バージョン以降にのみ適用されるように指定する方法を示しています。

[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]
...

単一の OS バージョンにのみ適用する

この INF の抜粋は、ドライバー パッケージが単一の OS バージョンにのみ適用されるように指定する方法を示しています。

[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]
...

設定が異なる複数の OS バージョンに適用する

この INF の抜粋は、ドライバー パッケージが OS バージョンごとに異なるインストール手順に従うことを指定する方法を示しています。

[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]
...