다음을 통해 공유


파일 시스템 드라이버에 대한 INF 파일 만들기

이 문서에서는 파일 시스템 드라이버에 대한 INF 파일을 만드는 방법을 설명합니다.

INF 파일을 사용하여 파일 시스템 드라이버를 설치하고 제거하는 방법에 대한 자세한 내용은 레거시 파일 시스템 필터 드라이버에 대한 다음 문서에 제공된 지침을 따르세요.

파일 시스템 INF 파일 소개

SetupAPI로 통칭되는 Windows 설치 및 디바이스 설치 관리자 서비스는 Windows 설치 및 드라이버 설치를 제어하는 기능을 제공합니다. INF 파일은 설치 프로세스를 제어합니다. INF 파일에 대한 자세한 내용은 INF 파일INF 파일 섹션 및 지시문 만들기를 참조하세요.

파일 시스템 드라이버의 INF 파일은 SetupAPI가 설치에 사용하는 지침을 제공합니다. INF 파일은 드라이버가 실행되도록 해야 하는 파일과 드라이버 파일의 원본 및 대상 디렉터리를 지정합니다. 또한 INF 파일에는 SetupAPI가 레지스트리에 저장하는 드라이버 구성 정보(예: 드라이버의 시작 유형 및 로드 순서 그룹)가 포함됩니다.

단일 INF 파일을 만들어 여러 버전의 Windows 운영 체제에 드라이버를 설치할 수 있습니다. 이러한 INF 파일을 만드는 방법에 대한 자세한 내용은 여러 플랫폼 및 운영 체제용 INF 파일 만들기 및국제 INF 파일 만들기를 참조하세요.

64비트 버전의 Windows Vista부터 로드하고 실행하려면 모든 커널 모드 구성 요소에 서명해야 합니다. 이 요구 사항에는 파일 시스템 드라이버(파일 시스템, 레거시 필터 및 미니 필터 드라이버)와 같은 비 PnP(플러그 앤 플레이) 드라이버가 포함됩니다. 드라이버 서명에 대한 일반적인 내용은 드라이버 서명을 참조하세요.

이러한 버전의 Windows 운영 체제의 경우 다음 정보는 파일 시스템 드라이버와 관련이 있습니다.

  • 파일 시스템 드라이버를 포함하여 PnP가 아닌 드라이버에 대한 INF 파일은 [제조업체] 또는 [모델] 섹션을 포함할 필요가 없습니다.

  • WDK 설치 디렉터리의 \bin\xx.x.xxxxx.x\SelfSign 디렉터리에 있는 SignTool 명령줄 도구를 사용하여 드라이버 SYS 실행 파일을 직접 "포함"할 수 있습니다. 성능상의 이유로 부팅 시작 드라이버에는 포함된 서명이 포함되어야 합니다.

  • INF 파일이 제공되면 Inf2Cat 명령줄 도구를 사용하여 드라이버 패키지에 대한 카탈로그(.cat) 파일을 만들 수 있습니다.

  • 관리자 권한으로 서명되지 않은 드라이버는 Windows Vista부터 x64 기반 시스템에 계속 설치할 수 있습니다. 그러나 드라이버가 서명되지 않아 로드(따라서 실행)되지 않습니다.

  • 64비트 버전의 Windows Vista 이상에 대한 운전 서명 프로세스를 포함하여 운전 서명 프로세스에 대한 자세한 내용은 Kernel-Mode 코드 서명 연습 Word 문서를 참조하세요.

  • 사용자 지정 커널 모드 개발 도구를 비롯한 모든 커널 모드 구성 요소에 서명해야 합니다. 자세한 내용은 Test-Signing소개 )를 참조하세요.

INF 파일은 레지스트리에서 정보를 읽거나 사용자 모드 애플리케이션을 시작하는 데 사용할 수 없습니다.

파일 시스템 드라이버 INF 파일의 섹션

사용자 고유의 파일 시스템 드라이버 INF 파일을 생성하려면 다음 정보를 가이드로 사용합니다. InfVerif 도구를 사용하여 INF 파일의 구문을 확인할 수 있습니다.

파일 시스템 드라이버에 대한 INF 파일은 일반적으로 다음 섹션을 포함합니다.

버전 섹션(필수)

버전 섹션은 다음 예제와 같이 드라이버 버전 정보를 지정합니다.

[Version]
Signature   = "$WINDOWS NT$"
Provider    = %Msft%
DriverVer   = 08/28/2000,1.0.0.1
CatalogFile =

다음 표에서는 버전 섹션에서 파일 시스템 필터 드라이버가 지정해야 하는 값을 보여 있습니다.

입력 가치
서명 $WINDOWS NT$
공급자 사용자 고유의 INF 파일에서 Microsoft 이외의 공급자를 지정해야 합니다.
DriverVer INF DriverVer 지시문 참조
카탈로그파일 Inf2Cat을 사용하여 카탈로그 파일 만들기 참조

DestinationDirs 섹션은 파일 시스템 드라이버 파일을 복사할 디렉터리를 지정합니다.

이 섹션 및 ServiceInstall 섹션에서는 시스템 정의 숫자 값을 사용하여 잘 알려진 시스템 디렉터리를 지정할 수 있습니다. 이러한 값 목록은 INF DestinationDirs 섹션을 참조하세요. 다음 예제에서 값 "12"는 드라이버 디렉터리(\system32\drivers%windir%)를 참조합니다.

[DestinationDirs]
DefaultDestDir = 12
ExampleFileSystem.DriverFiles = 12

SourceDisksNames 섹션(필수)

SourceDisksNames 섹션은 사용할 배포 미디어를 지정합니다.

다음 예제에서 SourceDisksNames 섹션에는 파일 시스템 드라이버에 대한 단일 배포 미디어가 나열됩니다. 미디어의 고유 식별자는 1입니다. 미디어의 이름은 INF 파일의 문자열 섹션에 정의된 %Disk1% 토큰으로 지정됩니다.

[SourceDisksNames]
1 = %Disk1%

SourceDisksFiles 섹션(필수)

SourceDisksFiles 섹션은 복사할 파일의 위치와 이름을 지정합니다.

다음 예제에서 SourceDisksFiles 섹션은 파일 시스템 드라이버에 대해 복사할 파일을 나열하고 고유 식별자가 1인 미디어에서 파일을 찾을 수 있도록 지정합니다(이 식별자는 INF 파일의 SourceDisksNames 섹션에 정의되어 있습니다.)

[SourceDisksFiles]
examplefilesystem.sys = 1

DefaultInstall 섹션(필수)

DefaultInstall 섹션에서 CopyFiles 지시문은 파일 시스템 드라이버의 드라이버 파일을 DestinationDirs 섹션에 지정된 대상에 복사합니다.

CopyFiles 지시문은 카탈로그 파일 또는 INF 파일 자체를 참조해서는 안 됩니다. SetupAPI는 이러한 파일을 자동으로 복사합니다.

단일 INF 파일을 만들어 여러 버전의 Windows 운영 체제에 드라이버를 설치할 수 있습니다. 이 유형의 INF 파일은 각 운영 체제 버전에 대해 여러 DefaultInstall, DefaultInstall.Services, DefaultUninstallDefaultUninstall.Services 섹션을 만들어 만듭니다. 각 섹션은 적용되는 운영 체제 버전을 지정하는 데코레이션 (예: .ntx86, .ntia64 또는 .nt)으로 레이블이 지정됩니다. 이 유형의 INF 파일 생성에 대한 자세한 내용은 플랫폼 및 운영 체제용 INF 파일 만들기를 참조하세요.

다음 예제에서 CopyFiles 지시문은 INF 파일의 ExampleFileSystem.DriverFiles 섹션에 나열된 파일을 복사합니다.

[DefaultInstall]
OptionDesc = %ServiceDesc%
CopyFiles = ExampleFileSystem.DriverFiles

[ExampleFileSystem.DriverFiles]
examplefilesystem.sys

DefaultInstall.Services 섹션(필수)

DefaultInstall.Services 섹션에는 특정 드라이버의 서비스가 로드되는 방법과 시기를 제어하는 AddService 지시문이 포함되어 있습니다.

다음 코드 예제에서 AddService 지시문은 파일 시스템 서비스를 운영 체제에 추가합니다. %ServiceName% 토큰에는 INF 파일의 Strings 섹션에 정의된 서비스 이름 문자열이 포함됩니다. ExampleFileSystem.Service는 파일 시스템 드라이버의 ServiceInstall 섹션의 이름입니다.

[DefaultInstall.Services]
AddService = %ServiceName%,,ExampleFileSystem.Service

ServiceInstall 섹션(필수)

ServiceInstall 섹션에서는 레지스트리에 하위 키 또는 값 이름을 추가하고 값을 설정합니다. ServiceInstall 섹션의 이름은 DefaultInstall.Services 섹션AddService 지시문에 표시되어야 합니다.

다음 예제에서는 파일 시스템 드라이버에 대한 ServiceInstall 섹션을 보여줍니다.

[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

DisplayName 항목은 서비스의 이름을 지정합니다. 앞의 예제에서 서비스 이름 문자열은 INF 파일의 문자열 섹션에 정의된 %ServiceName% 토큰에 의해 지정됩니다.

설명 항목은 서비스를 설명하는 문자열을 지정합니다. 앞의 예제에서 이 문자열은 INF 파일의 문자열 섹션에 정의된 %ServiceDesc% 토큰에 의해 지정됩니다.

ServiceBinary 항목은 서비스에 대한 실행 파일의 경로를 지정합니다. 앞의 예제에서 값 12는 드라이버 디렉터리(\system32\drivers%windir%)를 참조합니다.

ServiceType 항목은 서비스 유형을 지정합니다. 다음 표에서는 ServiceType 및 해당 서비스 유형에 대한 가능한 값을 나열합니다.

가치 설명
0x00000001 SERVICE_KERNEL_DRIVER(디바이스 드라이버 서비스)
0x00000002 SERVICE_FILE_SYSTEM_DRIVER(파일 시스템 또는 파일 시스템 필터 드라이버 서비스)
0x00000010 SERVICE_WIN32_OWN_PROCESS(자체 프로세스에서 실행되는 Microsoft Win32 서비스)
0x00000020 SERVICE_WIN32_SHARE_PROCESS(프로세스를 공유하는 Win32 서비스)

ServiceType 항목은 항상 파일 시스템 드라이버에 대해 SERVICE_FILE_SYSTEM_DRIVER 설정해야 합니다.

StartType 항목은 서비스를 시작할 시기를 지정합니다. 다음 표에서는 StartType 및 해당 시작 형식에 가능한 값을 나열합니다.

가치 설명
0x00000000 부팅 서비스 시작 (SERVICE_BOOT_START)
0x00000001 시스템 시작 서비스
0x00000002 서비스 자동 시작 (SERVICE_AUTO_START)
0x00000003 서비스_요구_시작
0x00000004 서비스 비활성화됨

파일 시스템 드라이버에 적합한 시작 유형을 결정하는 이러한 시작 형식에 대한 자세한 설명은 드라이버가 로드될 때 결정되는 사항을 참조하세요.

x64 기반 Windows Vista 시스템부터 부팅 시작 드라이버(서비스 시작 유형이 SERVICE_BOOT_START)의 이진 이미지 파일에는 내장된 서명이 있어야 합니다. 이 요구 사항은 최적의 시스템 부팅 성능을 보장합니다. 자세한 내용은 Kernel-Mode 코드 서명 연습 Word 문서를 참조하세요.

StartTypeLoadOrderGroup 항목이 드라이버가 로드되는 시기를 결정하는 방법에 대한 자세한 내용은 드라이버가 로드되는 시기를 결정하는 항목을 참조하세요.

ErrorControl 항목은 시스템을 시작하는 동안 서비스가 시작되지 않을 경우 수행할 작업을 지정합니다. 다음 표에서는 ErrorControl 의 가능한 값과 해당 오류 제어 값을 나열합니다.

가치 설명
0x00000000 SERVICE_ERROR_IGNORE(오류를 기록하고 시스템 시작을 계속합니다.)
0x00000001 SERVICE_ERROR_NORMAL(오류를 기록하고, 사용자에게 메시지를 표시하고, 시스템 시작을 계속합니다.)
0x00000002 SERVICE_ERROR_SEVERE(레지스트리의 LastKnownGood 컨트롤 집합으로 전환하고 시스템 시작을 계속합니다.)
0x00000003 SERVICE_ERROR_CRITICAL(시스템 시작에서 레지스트리의 LastKnownGood 컨트롤 집합을 사용하지 않는 경우 LastKnownGood로 전환하고 다시 시도합니다. 시작이 여전히 실패하는 경우 버그 검사 루틴을 실행합니다. 시스템을 시작하는 데 필요한 드라이버만 INF 파일에서 이 값을 지정해야 합니다.)

LoadOrderGroup 항목은 항상 파일 시스템 드라이버에 대해 "파일 시스템"으로 설정해야 합니다. 이 설정은 LoadOrderGroup 항목이 파일 시스템 필터 부하 순서 그룹 중 하나로 설정된 파일 시스템 필터 드라이버 또는 파일 시스템 미니 필터 드라이버에 대해 지정된 것과 다릅니다. 부하 순서 그룹에 대한 자세한 내용은 파일 시스템 필터 드라이버에 대한 부하 주문 그룹미니 필터 드라이버의 부하 주문 그룹 및 고도를 참조하세요.

AddReg 지시문은 새로 설치된 서비스에 대한 레지스트리에 저장할 정보가 포함된 하나 이상의 INF 기록기 정의 AddRegistry 섹션을 참조합니다.

초기 설치 후 드라이버를 업그레이드하는 데 INF 파일을 사용하는 경우 AddRegistry 섹션에 포함된 항목은 0x00000002(FLG_ADDREG_NOCLOBBER) 플래그를 지정해야 합니다. 이 플래그를 지정하면 후속 파일이 설치될 때 레지스트리 항목이 HKLM\CurrentControlSet\Services에 유지됩니다. 다음은 그 예입니다.

[ExampleFileSystem.AddRegistry]
HKR,Parameters,ExampleParameter,0x00010003,1

DefaultUninstall 섹션(선택 사항)

DefaultUninstall 섹션은 선택 사항이지만 드라이버를 제거할 수 있는 경우 권장됩니다. 여기에는 파일 및 레지스트리 항목을 제거하는 DelFilesDelReg 지시문이 포함되어 있습니다.

다음 예제에서 DelFiles 지시문은 INF 파일의 ExampleFileSystem.DriverFiles 섹션에 나열된 파일을 제거합니다.

[DefaultUninstall]
DelFiles   = ExampleFileSystem.DriverFiles
DelReg     = ExampleFileSystem.DelRegistry

DelReg 지시문은 제거 중인 서비스에 대한 레지스트리에서 제거할 정보가 포함된 하나 이상의 INF 기록기 정의 DelRegistry 섹션을 참조합니다.

DefaultUninstall.Services 섹션(선택 사항)

DefaultUninstall.Services 섹션은 선택 사항이지만 드라이버를 제거할 수 있는 경우 권장됩니다. 파일 시스템 드라이버의 서비스를 제거하는 DelService 지시문이 포함되어 있습니다.

다음 예제에서 DelService 지시문은 운영 체제에서 파일 시스템 드라이버의 서비스를 제거합니다.

[DefaultUninstall.Services]
DelService = %ServiceName%,0x200

DelService 지시문은 서비스를 삭제하기 전에 서비스를 중지할 0x200(SPSVCINST_STOPSERVICE) 플래그를 항상 지정해야 합니다.

완전히 제거할 수 없는 파일 시스템 제품의 특정 클래스가 있습니다. 이 경우 제거할 수 있는 제품의 구성 요소를 제거하고 제거할 수 없는 구성 요소를 그대로 둘 수 있습니다. 이러한 제품의 예로 Microsoft SIS(Single Instance Store) 기능이 있습니다.

문자열 섹션(필수)

문자열 섹션은 각 %strkey% 토큰을 INF 파일에서 정의합니다.

예를 들어 파일 시스템 드라이버는 INF 파일에서 다음 문자열을 정의합니다.

[Strings]
Msft        = "Microsoft Corporation"
ServiceDesc = "Example File System Driver"
ServiceName = "ExampleFileSystem"
ParameterPath = "SYSTEM\CurrentControlSet\Services\ExampleFileSystem\Parameters"
Disk1       = "Example File System Driver CD"

국제 INF 파일을 만들기 위해 다른 로캘별 문자열을 만들어 INF 파일의 LanguageID 섹션에 추가할 수 있습니다. 국제 INF 파일에 대한 자세한 내용은 "국제 INF 파일 만들기"를 참조하세요.