미니 필터 드라이버에 대한 INF 파일 만들기
파일 시스템 미니 필터 드라이버는 Windows 운영 체제에 INF 파일을 설치해야 합니다. 미니 필터 샘플에서 시작점으로 사용할 수 있는 몇 가지 샘플 INF 파일을 찾을 수 있습니다.
Windows 10 버전 1903부터 파일 시스템 미니 필터를 포함하는 기본 드라이버에 대한 INF 요구 사항이 변경되었습니다. 자세한 내용은 새 기본 드라이버 만들기를 참조하세요.
파일 시스템 필터 드라이버에 대한 INF 섹션
파일 시스템 필터 드라이버에 대한 INF 파일은 일반적으로 다음 섹션을 포함합니다.
섹션 | 주의 |
---|---|
버전 | Required |
DestinationDirs | Required |
DefaultInstall | Required |
DefaultInstall.Services | Required |
ServiceInstall | Required |
AddRegistry | Required |
문자열 | Required |
Windows 10 버전 1903 부터 DefaultUninstall 및 DefaultUninstall.Services 섹션은 금지 됩니다(예외). 이러한 섹션은 이전 OS 버전에서 선택 사항이었습니다.
Windows 시스템을 로드하려면 64비트 버전의 Windows 시스템에서 실행되는 모든 드라이버에 서명해야 합니다. 자세한 내용은 드라이버 서명을 참조 하세요.
버전 섹션(필수)
버전 섹션은 다음 코드 예제와 같이 미니 필터 드라이버의 형식에 따라 결정되는 클래스 및 GUID를 지정합니다.
[Version]
Signature = "$WINDOWS NT$"
Class = "ActivityMonitor"
ClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2}
Provider = %Msft%
DriverVer = 10/09/2001,1.0.0.0
CatalogFile =
PnpLockdown = 1
다음 표에서는 버전 섹션에서 파일 시스템 미니 필터 드라이버가 지정해야 하는 값을 보여 있습니다.
입력 | 값 |
---|---|
서명 | "$WINDOWS NT$" |
클래스 | 파일 시스템 필터 드라이버 클래스 및 클래스 GUID를 참조 하세요. |
ClassGuid | 파일 시스템 필터 드라이버 클래스 및 클래스 GUID를 참조 하세요. |
공급자 | 사용자 고유의 INF 파일에서 Microsoft 이외의 공급자를 지정해야 합니다. |
DriverVer | INF DriverVer 지시문을 참조하세요. |
CatalogFile | 서명된 바이러스 백신 미니 필터 드라이버의 경우 이 항목에는 WHQL 제공 카탈로그 파일의 이름이 포함됩니다. 다른 모든 미니 필터 드라이버는 이 항목을 비워 두어야 합니다. 자세한 내용은 INF 버전 섹션의 CatalogFile 항목에 대한 설명을 참조하세요. |
DestinationDirs 섹션(필수)
DestinationDirs 섹션은 미니 필터 드라이버 및 애플리케이션 파일을 복사할 디렉터리를 지정합니다.
이 섹션 및 ServiceInstall 섹션에서는 시스템 정의 숫자 값으로 잘 알려진 시스템 디렉터리를 지정할 수 있습니다. 이러한 값 목록은 INF DestinationDirs 섹션을 참조 하세요. 다음 코드 예제에서 값 13은 시스템의 OS 정의 드라이버 저장소 위치를 나타냅니다.
[DestinationDirs]
Minispy.DriverFiles = 13
Minispy.UserFiles = 13
DefaultInstall 섹션(필수)
DefaultInstall 섹션에서 CopyFiles 지시문은 미니 필터 드라이버의 드라이버 파일 및 사용자 애플리케이션 파일을 DestinationDirs 섹션에 지정된 대상에 복사합니다.
참고 항목
CopyFiles 지시문은 카탈로그 파일 또는 INF 파일 자체를 참조해서는 안 되며, 이러한 파일은 자동으로 복사됩니다.
단일 INF 파일을 만들어 여러 버전의 Windows 운영 체제에 드라이버를 설치할 수 있습니다. 각 운영 체제 버전에 대해 DefaultInstall 및 DefaultInstall.Services 섹션을 만들어 이러한 유형의 INF 파일을 만들 수 있습니다. 각 섹션은 적용되는 운영 체제 버전을 지정하는 데코레이션(예: .ntx86, .ntia64 또는 .nt)으로 레이블이 지정됩니다. 이 유형의 INF 파일을 만드는 방법에 대한 자세한 내용은 여러 플랫폼 및 운영 체제용 INF 파일 만들기를 참조 하세요.
다음 코드 예제에서는 일반적인 DefaultInstall 섹션을 보여줍니다.
[DefaultInstall.NTamd64]
OptionDesc = %MinispyServiceDesc%
CopyFiles = Minispy.DriverFiles, Minispy.UserFiles
DefaultInstall.Services 섹션(필수)
DefaultInstall.Services 섹션에는 다음 코드 예제와 같이 특정 드라이버의 서비스가 로드되는 방법과 시기를 제어하는 AddService 지시문이 포함되어 있습니다.
[DefaultInstall.NTamd64.Services]
AddService = %MinispyServiceName%,,Minispy.Service
ServiceInstall 섹션(필수)
ServiceInstall 섹션에는 드라이버 서비스를 로드하는 데 사용되는 정보가 포함되어 있습니다. MiniSpy 샘플 드라이버에서 이 섹션의 이름은 다음 코드 예제와 같이 "Minispy.Service"입니다. ServiceInstall 섹션의 이름은 DefaultInstall.Services 섹션의 AddService 지시문에 표시되어야 합니다.
[Minispy.Service]
DisplayName = %MinispyServiceName%
Description = %MinispyServiceDesc%
ServiceBinary = %13%\minispy.sys
ServiceType = 2 ; SERVICE_FILE_SYSTEM_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL%
LoadOrderGroup = "FSFilter Activity Monitor"
AddReg = Minispy.AddRegistry
Dependencies = FltMgr
ServiceType 항목은 서비스 유형을 지정합니다. 미니 필터 드라이버는 2(SERVICE_FILE_SYSTEM_DRIVER) 값을 지정해야 합니다. ServiceType 항목에 대한 자세한 내용은 INF AddService 지시문을 참조하세요.
StartType 항목은 서비스를 시작할 시기를 지정합니다. 다음 표에서는 StartType 및 해당 시작 형식에 대한 가능한 값을 나열합니다.
값 | Description |
---|---|
0x00000000 | SERVICE_BOOT_START |
0x00000001 | SERVICE_SYSTEM_START |
0x00000002 | SERVICE_AUTO_START |
0x00000003 | SERVICE_DEMAND_START |
0x00000004 | SERVICE_DISABLED |
이러한 시작 유형에 대한 자세한 내용은 드라이버가 로드되는 시기를 결정하는 항목에서 "드라이버 시작 형식"을 참조하세요.
LoadOrderGroup 항목은 필터 관리자에게 미니 필터 드라이버와 레거시 파일 시스템 필터 드라이버 간의 상호 운용성을 보장하는 데 필요한 정보를 제공합니다. 개발 중인 미니 필터 드라이버 유형에 적합한 LoadOrderGroup 값을 지정해야 합니다. 부하 주문 그룹을 선택하려면 미니 필터 드라이버에 대한 부하 주문 그룹 및 고도를 참조 하세요.
미니 필터 드라이버의 시작 유형이 SERVICE_BOOT_START 않더라도 LoadOrderGroup 값을 지정해야 합니다. 이러한 방식으로 미니 필터 드라이버는 레거시 파일 시스템 필터 드라이버와 다릅니다.
참고 항목
필터 관리자의 StartType 값은 SERVICE_BOOT_START LoadOrderGroup 값은 FSFilter Infrastructure입니다. 이러한 값을 통해 필터 관리자는 미니 필터 드라이버가 로드되기 전에 항상 로드됩니다.
StartType 및 LoadOrderGroup 항목이 드라이버가 로드되는 시기를 결정하는 방법에 대한 자세한 내용은 드라이버가 로드되는 시기를 결정하는 항목을 참조하세요.
레거시 필터 드라이버 와 달리 StartType 및 LoadOrderGroup 값은 미니 필터 드라이버가 미니 필터 인스턴스 스택에서 연결하는 위치를 결정하지 않습니다. 대신 미니 필터 인스턴스에 지정된 고도에 따라 위치가 결정됩니다.
ErrorControl 항목은 시스템을 시작하는 동안 서비스가 시작되지 않을 경우 수행할 작업을 지정합니다. 미니 필터 드라이버는 1(SERVICE_ERROR_NORMAL) 값을 지정해야 합니다. ErrorControl 항목에 대한 자세한 내용은 INF AddService 지시문을 참조하세요.
AddReg 지시문은 새로 설치된 서비스에 대한 레지스트리에 저장할 정보가 포함된 하나 이상의 INF 기록기 정의 AddRegistry 섹션을 참조합니다. 미니 필터 드라이버는 AddRegistry 섹션을 사용하여 미니 필터 드라이버 인스턴스를 정의하고 기본 인스턴스를 지정합니다.
종속성 항목은 드라이버가 종속되는 모든 서비스 또는 부하 순서 그룹의 이름을 지정합니다. 모든 미니 필터 드라이버는 필터 관리자의 서비스 이름인 FltMgr을 지정해야 합니다.
AddRegistry 섹션(필수)
AddRegistry 섹션에서는 레지스트리에 키와 값을 추가합니다. 미니 필터 드라이버는 AddRegistry 섹션을 사용하여 미니 필터 인스턴스를 정의하고 기본 인스턴스를 지정합니다. 이 정보는 필터 관리자가 미니 필터 드라이버에 대한 새 인스턴스를 만들 때마다 사용됩니다.
MiniSpy 샘플 드라이버에서 다음 AddRegistry 섹션에서는 세 개의 인스턴스를 정의하며, 그 중 하나는 MiniSpy 샘플 드라이버의 기본 인스턴스로 명명됩니다.
참고 항목
다음 값은 Windows 11 버전 24H2부터 매개 변수 하위 키 아래에 있어야 합니다.
[Minispy.AddRegistry]
HKR,"Parameters","SupportedFeatures",0x00010001,0x3
HKR,"Parameters\Instances","DefaultInstance",0x00000000,%DefaultInstance%
HKR,"Parameters\Instances\"%Instance1.Name%,"Altitude",0x00000000,%Instance1.Altitude%
HKR,"Parameters\Instances\"%Instance1.Name%,"Flags",0x00010001,%Instance1.Flags%
HKR,"Parameters\Instances\"%Instance2.Name%,"Altitude",0x00000000,%Instance2.Altitude%
HKR,"Parameters\Instances\"%Instance2.Name%,"Flags",0x00010001,%Instance2.Flags%
HKR,"Parameters\Instances\"%Instance3.Name%,"Altitude",0x00000000,%Instance3.Altitude%
HKR,"Parameters\Instances\"%Instance3.Name%,"Flags",0x00010001,%Instance3.Flags%
문자열 섹션(필수)
문자열 섹션은 INF 파일에 사용되는 각 %strkey% 토큰을 정의합니다.
추가 로캘별 문자열을 만들어 단일 국제 INF 파일을 만들 수 있습니다.INF 파일의 LanguageID 섹션입니다. 국제 INF 파일에 대한 자세한 내용은 국제 INF 파일 만들기를 참조 하세요.
다음 코드 예제에서는 일반적인 문자열 섹션을 보여 줍니다 .
[Strings]
Msft = "Microsoft Corporation"
MinispyServiceDesc = "Minispy mini-filter driver"
MinispyServiceName = "Minispy"
DefaultInstance = "Minispy - Top Instance"
Instance1.Name = "Minispy - Middle Instance"
Instance1.Altitude = "370000"
Instance1.Flags = 0x1 ; Suppress automatic attachments
Instance2.Name = "Minispy - Bottom Instance"
Instance2.Altitude = "365000"
Instance2.Flags = 0x1 ; Suppress automatic attachments
Instance3.Name = "Minispy - Top Instance"
Instance3.Altitude = "385000"
Instance3.Flags = 0x1 ; Suppress automatic attachments
DefaultUninstall 및 DefaultUninstall.Services 섹션
참고 항목
DefaultUninstall 및 DefaultUninstall.Services 섹션은 Windows 10 버전 1903부터 금지됩니다(예외).
버전 1903 이전의 Windows 10에서 DefaultUninstall 및 DefaultUninstall.Services 섹션은 선택 사항이지만 드라이버를 제거할 수 있는 경우 권장됩니다.
- DefaultUninstall에는 파일 및 레지스트리 항목을 제거하는 DelFiles 및 DelReg 지시문이 포함되어 있습니다.
- DefaultUninstall.Services 에는 미니 필터 드라이버의 서비스를 제거하는 DelService 지시문이 포함되어 있습니다. DelService 지시문은 항상 서비스를 삭제하기 전에 중지하도록 SPSVCINST_STOPSERVICE 플래그(0x00000200)를 지정했습니다.
다음 예제에서는 Windows 10 버전 1903 이전의 일반적인 DefaultUninstall 및 DefaultUninstall.Services 섹션을 보여 줍니다.
[DefaultUninstall.NTamd64]
DelFiles = Minispy.DriverFiles, Minispy.UserFiles
DelReg = Minispy.DelRegistry
[DefaultUninstall.NTamd64.Services]
DelService = Minispy,0x200