Direktif AddInterface INF
Satu atau beberapa arahan AddInterface dapat ditentukan dalam bagian INF DDInstall.Interfaces. Direktif ini menginstal dukungan khusus perangkat untuk kelas antarmuka perangkat yang diekspor ke komponen tingkat yang lebih tinggi, seperti driver atau aplikasi lain. Direktif biasanya mereferensikan bagian add-interface , yang menyiapkan informasi registri untuk instans khusus perangkat dari kelas antarmuka perangkat.
[DDInstall.Interfaces]
AddInterface={InterfaceClassGUID} [,[reference-string] [,[add-interface-section][,flags]]]
Kelas antarmuka perangkat yang diekspor dapat menjadi salah satu kelas antarmuka perangkat yang ditentukan sistem, seperti yang ditentukan oleh streaming kernel, atau kelas antarmuka perangkat baru yang ditentukan oleh bagian INF InterfaceInstall32.
Entri
InterfaceClassGUID
Menentukan nilai GUID yang mengidentifikasi kelas antarmuka perangkat. Ini dapat dinyatakan sebagai nilai GUID eksplisit dari formulir {nnnnnnnn-nnnn-nnnn-nnnn-nnnn} atau sebagai token %strkey% yang ditentukan ke "{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnn}" di bagian String dari file INF.
Untuk informasi selengkapnya tentang cara membuat GUID, lihat Menggunakan GUID di Driver. Untuk GUIDS kelas antarmuka yang ditentukan sistem, lihat header yang sesuai, seperti Ks.h untuk GUID antarmuka streaming kernel.
string referensi
Nilai opsional ini, yang terkait dengan instans khusus perangkat dari kelas antarmuka yang ditentukan, dapat dinyatakan baik sebagai "string yang dikutip" atau sebagai token %strkey% yang ditentukan dalam bagian String INF.
Fungsi PnP dan driver filter biasanya menghilangkan nilai ini dari entri AddInterface= dalam file INF mereka. String referensi digunakan oleh driver swenum sebagai tempat penampung untuk perangkat lunak yang dibuat sesuai permintaan dengan menggunakan beberapa instans dari satu kelas antarmuka. Nilai InterfaceClassGUID yang sama dapat ditentukan dalam entri INF dengan dua atau beberapa string referensiunik. Karena manajer I/O meneruskan nilai string referensi sebagai komponen jalur dari nama instans antarmuka setiap kali dibuka, driver yang diinstal dapat mendiskriminasi antara instans antarmuka dari kelas yang sama untuk satu perangkat.
add-interface-section
Mereferensikan nama bagian di tempat lain dalam file INF. Ini biasanya berisi direktif INF AddReg untuk menyiapkan entri registri yang mengekspor dukungan driver dari kelas antarmuka perangkat ini. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
Bendera
Jika ditentukan, entri ini harus nol.
Keterangan
Jika kelas antarmuka perangkat yang diidentifikasi oleh {InterfaceClassGUID} tertentu belum diinstal, kode penyiapan sistem menginstal kelas tersebut di sistem. Setiap file INF yang menginstal kelas baru mungkin juga memiliki bagian INF InterfaceInstall32. Bagian ini berisi {InterfaceClassGUID} yang ditentukan dan mereferensikan interface-install-section yang menyiapkan operasi penginstalan khusus antarmuka untuk kelas tersebut.
Untuk mengaktifkan instans kelas antarmuka perangkat untuk penggunaan run-time oleh komponen tingkat yang lebih tinggi, driver perangkat harus terlebih dahulu memanggil IoRegisterDeviceInterface untuk mengambil nama tautan simbolis instans antarmuka perangkat untuk diaktifkan. Biasanya, fungsi PnP atau driver filter melakukan panggilan ini dari rutinitas AddDevice-nya . Untuk mengaktifkan instans antarmuka perangkat yang disediakan di INF, driver perangkat harus menyediakan {InterfaceClassGUID} dan string referensi yang ditentukan dalam INF saat memanggil IoRegisterDeviceInterface. Driver kemudian memanggil IoSetDeviceInterfaceState untuk mengaktifkan antarmuka menggunakan nama tautan simbolis yang dikembalikan oleh IoRegisterDeviceInterface.
Setiap direktif AddInterface di bagian INF DDInstall.Interfaces dapat mereferensikan add-interface-section yang ditentukan INF-writer di tempat lain dalam file INF. Setiap nama bagian yang ditentukan penulis INF harus unik dalam file INF dan harus mengikuti aturan umum untuk menentukan nama bagian. Untuk informasi selengkapnya tentang aturan ini, lihat Aturan Sintaks Umum untuk File INF.
Bagian add-interface yang direferensikan oleh direktif AddInterface memiliki formulir berikut:
[add-interface-section]
AddReg=add-registry-section[, add-registry-section]...
[AddProperty=add-property-section[, add-property-section] ...] (Windows Vista and later versions of Windows)
[DelReg=del-registry-section[, del-registry-section] ...]
[DelProperty=del-property-section[, del-property-section] ...] (Windows Vista and later versions of Windows)
[BitReg=bit-registry-section[,bit-registry-section] ...]
[CopyFiles=@filename | file-list-section[,file-list-section]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[UpdateInis=update-ini-section[, update-ini-section] ...]
[UpdateIniFields=update-inifields-section[, update-inifields-section] ...]
[Ini2Reg=ini-to-registry-section[, ini-to-registry-section] ...]
Dimulai dengan Windows Vista, Anda dapat mengatur properti antarmuka perangkat dengan menyertakan arahan INF AddProperty di bagian add-interface. Anda juga dapat menghapus properti antarmuka perangkat dengan menyertakan arahan INF DelProperty di bagian antarmuka add-. Namun, Anda harus menggunakan direktif AddProperty atau DelProperty hanya untuk memodifikasi properti antarmuka perangkat yang baru untuk Windows Vista atau versi sistem operasi Windows yang lebih baru. Untuk properti antarmuka perangkat yang diperkenalkan pada Windows Server 2003, Windows XP, atau Windows 2000, dan yang memiliki entri nilai registri yang sesuai, Anda harus terus menggunakan arahan INF AddReg dan arahan INF DelReg untuk mengatur dan menghapus properti antarmuka perangkat. Panduan ini berlaku untuk properti yang ditentukan sistem dan properti kustom. Untuk informasi selengkapnya tentang cara menggunakan direktif AddProperty dan direktif DelProperty , lihat Menggunakan Direktif AddProperty INF dan Direktif INF DelProperty.
Biasanya, bagian add-interface hanya berisi direktif INF AddReg yang, pada gilirannya, mereferensikan satu bagian add-registry. Bagian add-registry digunakan untuk menyimpan informasi di registri tentang antarmuka yang didukung oleh driver perangkat untuk penggunaan berikutnya oleh driver dan aplikasi tingkat yang masih lebih tinggi.
Bagian add-registry yang direferensikan dalam bagian add-interface khusus untuk instans untuk perangkat, driver, dan antarmuka. Ini mungkin memiliki entri nilai yang menentukan nama yang mudah diingat untuk instans antarmuka perangkat yang diekspor sehingga komponen tingkat yang masih lebih tinggi dapat merujuk ke antarmuka tersebut dengan nama yang mudah diingat di antarmuka pengguna.
HKR yang ditentukan dalam bagian add-registry-section tersebut menunjuk kunci registri status yang dapat diakses run-time untuk antarmuka perangkat. Driver dapat mengakses status yang disimpan dalam kunci registri ini saat runtime dengan memanggil IoOpenDeviceInterfaceRegistryKey untuk mengambil HANDLE ke kunci registri status. Komponen mode pengguna dapat mengkueri status dengan memanggil CM_Open_Device_Interface_Key.
Contoh
Contoh ini menunjukkan beberapa perluasan DDInstall. Bagian antarmuka untuk perangkat audio tertentu yang mendukung antarmuka streaming kernel yang ditentukan sistem.
; ...
[ESS6881.Device.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_UART%,WDM.Interface.UART
[ESSAud.Interface.Wave]
AddReg=ESSAud.Interface.Wave.AddReg
[ESSAud.Interface.Wave.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%ESSAud.Wave.szPname%
; ...
[WDM.Interface.UART]
AddReg=WDM.Interface.UART.AddReg
[WDM.Interface.UART.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%WDM.UART.szPname%
; ...
[Strings]
KSCATEGORY_AUDIO="{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSCATEGORY_RENDER="{65e8773e-8f56-11d0-a3b9-00a0c9223196}"
KSCATEGORY_CAPTURE="{65e8773d-8f56-11d0-a3b9-00a0c9223196}"
; ...
KSNAME_WAVE="Wave"
KSNAME_UART="UART"
; ...
Proxy.CLSID="{17cca71b-ecd7-11d0-b908-00a0c9223196}"
; ...
ESSAud.Wave.szPname="ESS AudioDrive"
; ...