플랫폼 확장과 운영 체제 버전 결합
INF 파일의 INF Manufacturer 섹션 내에서 다양한 버전의 Windows 운영 체제와 관련된 INF 모델 섹션 을 제공할 수 있습니다. 이러한 버전별 모델 섹션은 TargetOSVersion 장식을 사용하여 식별됩니다.
동일한 INF 파일 내에서 다른 버전의 운영 체제에 대해 다른 INF 모델 섹션 을 지정할 수 있습니다. 지정된 버전은 INF 모델 섹션이 사용될 대상 운영 체제 버전을 나타냅니다. 버전이 지정되지 않은 경우 Windows는 모든 운영 체제의 모든 버전에 대해 TargetOSVersion 장식이 없는 Models 섹션을 사용합니다.
TargetOSVersion 장식 형식
다음 예제에서는 Windows 10 버전 1511을 통해 Windows XP용 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 기반입니다.
아키텍처
하드웨어 플랫폼을 식별합니다.
모델 섹션의 아키텍처 플랫폼 장식에 대한 자세한 내용은 여러 플랫폼 및 운영 체제용 INF 파일 만들기를 참조하세요.
OSMajorVersion
운영 체제의 주 버전 번호를 나타내는 숫자입니다. Windows 운영 체제의 주 버전을 나열하는 표는 INF Manufacturer 섹션의 OSMajorVersion을 참조하세요.
OSMinorVersion
운영 체제의 부 버전 번호를 나타내는 숫자입니다. Windows 운영 체제의 부 버전을 나열하는 표는 INF 제조업체의OSMinorVersion 섹션을 참조하세요.
ProductType
다음과 같이 Winnt.h에 정의된 VER_NT_xxxx 플래그 중 하나를 나타내는 숫자입니다.
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
제품 유형을 지정하면 운영 체제가 지정된 제품 유형과 일치하는 경우에만 INF 파일이 사용됩니다. INF 파일이 단일 운영 체제 버전에 대해 여러 제품 유형을 지원하는 경우 여러 TargetOSVersion 항목이 필요합니다.
SuiteMask
Winnt.h에 정의된 하나 이상의 VER_SUITE_xxxx 플래그의 조합을 나타내는 숫자입니다. 이러한 플래그는 다음과 같습니다.
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)
하나 이상의 제품군 마스크 값을 지정하면 운영 체제가 지정된 모든 제품 제품군과 일치하는 경우에만 INF 파일이 사용됩니다. INF 파일이 단일 운영 체제 버전에 대해 여러 제품 제품군 조합을 지원하는 경우 여러 TargetOSVersion 항목이 필요합니다.
BuildNumber
빌드 14310 이상부터 섹션이 적용되는 Windows 10 릴리스의 최소 OS 빌드 번호를 지정합니다. Windows 운영 체제의 빌드 번호를 나열하는 표는 INF 제조업체의 빌드 번호 섹션을 참조하세요.
빌드 번호는 일부 특정 OS 주/부 버전에만 상대적인 것으로 간주되며 향후 OS 주/부 버전에 대해 다시 설정될 수 있습니다.
TargetOSVersion 데코레이션으로 지정된 빌드 번호는 TARGETOSVersion의 OS 주/부 버전이 현재 OS(또는 AltPlatformInfo) 버전과 정확히 일치하는 경우에만 평가됩니다. 현재 OS 버전이 TargetOSVersion 데코 레이션(OSMajorVersion,OSMinorVersion)에 지정된 OS 버전보다 큰 경우 섹션은 지정된 빌드 번호에 관계없이 적용 가능한 것으로 간주됩니다. 마찬가지로 현재 OS 버전이 TargetOSVersion 장식에 지정된 OS 버전보다 작으면 섹션을 적용할 수 없습니다.
빌드 번호가 제공되면 TargetOSVersion 장식의 OS 버전 및 BuildNumber가 OS 버전과 이 장식이 처음 도입된 Windows 10 빌드 14310의 빌드 번호보다 커야 합니다. 이러한 변경이 없는 이전 버전의 운영 체제(예: 빌드 10240 Windows 10)는 알 수 없는 장식을 구문 분석하지 않으므로 이러한 이전 빌드를 대상으로 하려는 시도는 OS가 유효한 장식을 전혀 고려하지 못하게 합니다.
Windows에서 TargetOSVersion 장식을 처리하는 방법
디바이스에 드라이버 패키지를 설치하는 경우 Windows는 다음 단계에 따라 INF 파일 내에서 INF 모델 섹션 을 처리합니다.
하나 이상의 INF 모델 섹션에TargetOS 장식이 있는 경우 Windows는 호스트 운영 체제의 특성에 가장 가까운 INF 모델 섹션을 선택합니다.
예를 들어 INF 모델 섹션에 ntx86.5.1의 TargetOS 장식이 있는 경우 호스트 운영 체제가 x86 기반 시스템에서 Windows XP 이상 버전의 Windows를 실행하는 경우 Windows에서 해당 섹션을 선택합니다.
마찬가지로 INF 모델 섹션 에 TargetOS 장식 이 nt.6.0인 경우 호스트 운영 체제가 지원되는 하드웨어 플랫폼에서 Windows Vista 이상 버전의 Windows인 경우 Windows에서 해당 섹션을 선택합니다.
INF 모델 섹션에 nt.10.0의 TargetOS 장식이 있는 경우... 14393, 호스트 운영 체제가 지원되는 하드웨어 플랫폼에서 14393보다 크거나 같은 Windows 10 빌드를 실행하는 경우 Windows에서 해당 섹션을 선택합니다.
INF 모델 섹션에 호스트 운영 체제와 일치하는 TargetOS 장식이 없는 경우 Windows는 일치하는 플랫폼 확장이 있거나 플랫폼 확장이 없는 모델 섹션을 선택합니다.
예를 들어 INF 모델 섹션에 플랫폼 확장이 ntx86인 경우 호스트 운영 체제가 x86 기반 시스템에서 Microsoft Windows 2000 이상 버전의 Windows인 경우 Windows에서 해당 섹션을 선택합니다.
Windows 에서 일치하는 INF 모델 섹션을 찾을 수 없는 경우 디바이스에 해당 드라이버 패키지를 설치하지 않습니다.
TargetOsVersion 장식을 확인하는 방법
적용 가능한 INF 모델 섹션을 결정할 때 평가는 INF Manufacturer 섹션 내에서 한 줄마다 수행됩니다. 여기서 지정된 OS 버전의 경우 각 줄에는 최대 하나의 적용 가능한 섹션이 있을 수 있습니다.
아래 INF 발췌문에서는 [ExampleModelsSection_1.NTamd64.10.0... 17134]는 17134보다 크거나 같은 Windows 빌드 번호와 [ExampleModelsSection_1.NTamd64.10.0... 모두에서 선택됩니다. 17134] 및 [ExampleModelsSection_2.NTamd64.10.0... 22000]은 22000보다 크거나 같은 Windows 빌드 번호에서 선택됩니다.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134
%ManufacturerName% = ExampleModelsSection_2,NTamd64.10.0...22000
아래 INF 발췌문에서는 [ExampleModelsSection_1.NTamd64.10.0... 17134]는 17134보다 크거나 같은 Windows 빌드 번호와 [ExampleModelsSection_1.NTamd64.10.0...에서 선택됩니다. 22000]은 22000보다 크거나 같은 Windows 빌드 번호에서 선택됩니다.
[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134,NTamd64.10.0...22000
TargetOSVersion 장식이 있는 샘플 INF 모델 섹션
특정 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]
...