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 (opsional tetapi direkomendasikan)
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk