Membuat file INF untuk driver minifilter

Pengantar

Catatan

Mulai Windows 10 versi 1903, persyaratan INF untuk driver primitif (seperti driver minifilter sistem file) berubah. Lihat Membuat driver primitif baru untuk detailnya.

Driver filter memerlukan file INF untuk diinstal pada sistem operasi Windows. Anda akan menemukan sampel file INF dalam sampel minifilter.

File INF untuk driver filter sistem file umumnya berisi bagian berikut:

Bagian Catatan
Versi Diperlukan
DestinationDirs Opsional tetapi direkomendasikan
DefaultInstall Diperlukan
DefaultInstall.Services Diperlukan
ServiceInstall Diperlukan
AddRegistry Diperlukan
String Diperlukan

Catatan

Dimulai dengan Windows 10 versi 1903, bagian DefaultUninstall dan DefaultUninstall.Services dilarang, (dengan pengecualian). Bagian ini bersifat opsional dalam versi OS sebelumnya.

Semua driver yang berjalan pada sistem Windows versi 64-bit harus ditandatangani sebelum Windows akan memuatnya. Lihat Menandatangani driver untuk informasi selengkapnya.

Bagian Versi (diperlukan)

Bagian Versi menentukan kelas dan GUID yang ditentukan oleh jenis driver minifilter, seperti yang ditunjukkan dalam contoh kode berikut.

[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

Tabel berikut ini memperlihatkan nilai yang harus ditentukan driver minifilter sistem file di bagian Versi .

Entri Nilai
Tanda tangan "$WINDOWS NT$"
Kelas Lihat Kelas Driver Filter Sistem File dan GUID Kelas.
ClassGuid Lihat Kelas Driver Filter Sistem File dan GUID Kelas.
Penyedia Dalam file INF Anda sendiri, Anda harus menentukan penyedia selain Microsoft.
DriverVer Lihat direktif INF DriverVer.
CatalogFile Untuk driver minifilter antivirus yang ditandatangani, entri ini berisi nama file katalog yang disediakan WHQL. Semua driver minifilter lainnya harus membiarkan entri ini kosong. Untuk informasi selengkapnya, lihat deskripsi entri CatalogFile di Bagian Versi INF

Bagian DestinationDirs menentukan direktori tempat driver minifilter dan file aplikasi akan disalin.

Di bagian ini dan di bagian ServiceInstall , Anda dapat menentukan direktori sistem terkenal dengan nilai numerik yang ditentukan sistem. Untuk daftar nilai ini, lihat Bagian DestinationDirs INF. Dalam contoh kode berikut, nilai 12 mengacu pada direktori Drivers (%windir%\system32\drivers), dan nilai 10 mengacu pada direktori Windows (%windir%).

[DestinationDirs]
DefaultDestDir = 12
Minispy.DriverFiles = 12
Minispy.UserFiles   = 10,FltMgr

Bagian Instal Default (diperlukan)

Di bagian DefaultInstall , direktif CopyFiles menyalin file driver driver minifilter dan file aplikasi pengguna ke tujuan yang ditentukan di bagian DestinationDirs .

Catatan

Direktif CopyFiles tidak boleh merujuk ke file katalog atau file INF itu sendiri. SetupAPI menyalin file-file ini secara otomatis.

Anda dapat membuat satu file INF untuk menginstal driver Anda pada beberapa versi sistem operasi Windows. Anda dapat membuat jenis file INF ini dengan membuat bagian DefaultInstall dan DefaultInstall.Services tambahan untuk setiap versi sistem operasi. Setiap bagian diberi label dekorasi (misalnya, .ntx86, .ntia64, atau .nt) yang menentukan versi sistem operasi yang diterapkannya. Untuk informasi selengkapnya tentang membuat jenis file INF ini, lihat Membuat File INF untuk Beberapa Platform dan Sistem Operasi.

Contoh kode berikut menunjukkan bagian DefaultInstall yang khas.

[DefaultInstall.NTamd64]
OptionDesc = %MinispyServiceDesc%
CopyFiles = Minispy.DriverFiles, Minispy.UserFiles

Bagian DefaultInstall.Services (diperlukan)

Bagian DefaultInstall.Services berisi arahan AddService yang mengontrol bagaimana dan kapan layanan driver tertentu dimuat, seperti yang ditunjukkan dalam contoh kode berikut.

[DefaultInstall.NTamd64.Services]
AddService = %MinispyServiceName%,,Minispy.Service

Bagian ServiceInstall (diperlukan)

Bagian ServiceInstall berisi informasi yang digunakan untuk memuat layanan driver. Di driver sampel MiniSpy, bagian ini diberi nama "Minispy.Service", seperti yang ditunjukkan dalam contoh kode berikut. Nama bagian ServiceInstall harus muncul di direktif AddService di bagian DefaultInstall.Services .

[Minispy.Service]
DisplayName    = %MinispyServiceName%
Description    = %MinispyServiceDesc%
ServiceBinary  = %12%\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

Entri ServiceType menentukan jenis layanan. Driver minifilter harus menentukan nilai 2 (SERVICE_FILE_SYSTEM_DRIVER). Untuk informasi selengkapnya tentang entri ServiceType , lihat Petunjuk AddService INF.

Entri StartType menentukan kapan harus memulai layanan. Tabel berikut ini mencantumkan nilai yang mungkin untuk StartType dan jenis mulai yang sesuai.

Nilai Deskripsi
0x00000000 SERVICE_BOOT_START
0x00000001 SERVICE_SYSTEM_START
0x00000002 SERVICE_AUTO_START
0x00000003 SERVICE_DEMAND_START
0x00000004 SERVICE_DISABLED

Untuk informasi selengkapnya tentang jenis mulai ini, lihat "Jenis Mulai Driver" di Apa yang Menentukan Kapan Driver Dimuat.

Entri LoadOrderGroup memberi manajer filter informasi yang diperlukan untuk memastikan interoperabilitas antara driver minifilter dan driver filter sistem file warisan. Anda harus menentukan nilai LoadOrderGroup yang sesuai untuk jenis driver minifilter yang Anda kembangkan. Untuk memilih grup pesanan beban, lihat Memuat Grup Pesanan dan Ketinggian untuk Driver Minifilter.

Perhatikan bahwa Anda harus menentukan nilai LoadOrderGroup , meskipun jenis mulai driver minifilter Anda tidak SERVICE_BOOT_START. Dengan cara ini, driver minifilter berbeda dari driver filter sistem file warisan.

Catatan

Nilai StartType manajer filter SERVICE_BOOT_START, dan nilai LoadOrderGroup-nya adalah Infrastruktur FSFilter. Nilai-nilai ini memastikan bahwa manajer filter selalu dimuat sebelum driver minifilter dimuat.

Untuk informasi selengkapnya tentang bagaimana entri StartType dan LoadOrderGroup menentukan kapan driver dimuat, lihat Apa yang Menentukan Kapan Driver Dimuat.

Untuk driver minifilter, tidak seperti driver filter sistem file warisan, nilai StartType dan LoadOrderGroup tidak menentukan di mana driver minifilter terpasang di tumpukan instans minifilter. Lokasi ini ditentukan oleh ketinggian yang ditentukan untuk instans minifilter.

Entri ErrorControl menentukan tindakan yang akan diambil jika layanan gagal dimulai selama startup sistem. Driver minifilter harus menentukan nilai 1 (SERVICE_ERROR_NORMAL). Untuk informasi selengkapnya tentang entri ErrorControl , lihat Petunjuk AddService INF.

Direktif AddReg mengacu pada satu atau beberapa bagian AddRegistry yang ditentukan penulis INF yang berisi informasi yang akan disimpan dalam registri untuk layanan yang baru diinstal. Driver minifilter menggunakan bagian AddRegistry untuk menentukan instans driver minifilter dan untuk menentukan instans default.

Entri Dependensi menentukan nama layanan atau grup pesanan beban yang bergantung pada driver. Semua driver minifilter harus menentukan FltMgr, yang merupakan nama layanan manajer filter.

Bagian AddRegistry (diperlukan)

Bagian AddRegistry menambahkan kunci dan nilai ke registri. Driver minifilter menggunakan bagian AddRegistry untuk menentukan instans minifilter dan untuk menentukan instans default. Informasi ini digunakan setiap kali manajer filter membuat instans baru untuk driver minifilter.

Di driver sampel MiniSpy, bagian AddRegistry berikut, bersama dengan definisi token %strkey% di bagian String , mendefinisikan tiga instans, salah satunya dinamai sebagai instans default driver sampel MiniSpy.

[Minispy.AddRegistry]
HKR,%RegInstancesSubkeyName%,%RegDefaultInstanceValueName%,0x00000000,%DefaultInstance%
HKR,%RegInstancesSubkeyName%"\"%Instance1.Name%,%RegAltitudeValueName%,0x00000000,%Instance1.Altitude%
HKR,%RegInstancesSubkeyName%"\"%Instance1.Name%,%RegFlagsValueName%,0x00010001,%Instance1.Flags%
HKR,%RegInstancesSubkeyName%"\"%Instance2.Name%,%RegAltitudeValueName%,0x00000000,%Instance2.Altitude%
HKR,%RegInstancesSubkeyName%"\"%Instance2.Name%,%RegFlagsValueName%,0x00010001,%Instance2.Flags%
HKR,%RegInstancesSubkeyName%"\"%Instance3.Name%,%RegAltitudeValueName%,0x00000000,%Instance3.Altitude%
HKR,%RegInstancesSubkeyName%"\"%Instance3.Name%,%RegFlagsValueName%,0x00010001,%Instance3.Flags%

Bagian String (diperlukan)

Bagian String mendefinisikan setiap token %strkey% yang digunakan dalam file INF.

Anda dapat membuat satu file INF internasional dengan membuat String khusus lokal tambahan. Bagian LanguageID dalam file INF. Untuk informasi selengkapnya tentang file INF internasional, lihat Membuat File INF Internasional.

Contoh kode berikut menunjukkan bagian String yang khas .

[Strings]
Msft               = "Microsoft Corporation"
MinispyServiceDesc = "Minispy mini-filter driver"
MinispyServiceName = "Minispy"
RegInstancesSubkeyName = "Instances"
RegDefaultInstanceValueName  = "DefaultInstance"
RegAltitudeValueName    = "Altitude"
RegFlagsValueName  = "Flags"

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

Bagian DefaultUninstall dan DefaultUninstall.Services

Catatan

Bagian DefaultUninstall dan DefaultUninstall.Services dilarang (dengan pengecualian) dimulai dengan Windows 10 versi 1903.

Di Windows 10 sebelum versi 1903, bagian DefaultUninstall dan DefaultUninstall.Services bersifat opsional tetapi direkomendasikan jika driver dapat dihapus instalasinya:

  • DefaultUninstall berisi direktif DelFiles dan DelReg untuk menghapus file dan entri registri.
  • DefaultUninstall.Services berisi arahan DelService untuk menghapus layanan driver minifilter. Direktif DelService selalu menentukan bendera SPSVCINST_STOPSERVICE (0x00000200) untuk menghentikan layanan sebelum dihapus.

Contoh berikut menunjukkan bagian DefaultUninstall dan DefaultUninstall.Services khas sebelum Windows 10, versi 1903.

[DefaultUninstall.NTamd64]
DelFiles   = Minispy.DriverFiles, Minispy.UserFiles
DelReg     = Minispy.DelRegistry

[DefaultUninstall.NTamd64.Services]
DelService = Minispy,0x200