Menggunakan File INF Komponen
Jika Anda ingin menyertakan perangkat lunak mode pengguna untuk digunakan dengan perangkat pada Windows 10, Anda memiliki opsi berikut untuk membuat driver yang mematuhi DCH:
Metode | Skenario |
---|---|
Aplikasi dukungan perangkat keras (HSA) | Perangkat lunak add-on perangkat yang dipaketkan sebagai aplikasi UWP yang dikirimkan dan dilayankan dari Microsoft Store. Pendekatan yang direkomendasikan. |
Komponen perangkat lunak | Perangkat lunak add-on perangkat adalah biner MSI atau EXE, layanan Win32, atau perangkat lunak yang diinstal menggunakan AddReg dan CopyFiles. Biner yang direferensikan hanya berjalan pada edisi desktop (Home, Pro, dan Enterprise). Biner yang direferensikan tidak akan berjalan pada Windows 10S. |
Komponen perangkat lunak adalah paket driver mandiri terpisah yang dapat menginstal satu atau beberapa modul perangkat lunak. Perangkat lunak yang diinstal meningkatkan nilai perangkat, tetapi tidak diperlukan untuk fungsionalitas perangkat dasar dan tidak memerlukan layanan driver fungsi terkait.
Halaman ini menyediakan panduan penggunaan komponen perangkat lunak.
Memulai
Untuk membuat komponen, file INF ekstensi menentukan direktif ADDComponent INF satu atau beberapa kali di bagian INF DDInstall.Components . Untuk setiap komponen perangkat lunak yang dirujuk dalam file INF ekstensi, sistem membuat perangkat anak yang dijumlahkan perangkat lunak virtual. Lebih dari satu paket driver dapat mereferensikan komponen perangkat lunak yang sama.
Anak perangkat virtual dapat diperbarui secara independen sama seperti perangkat lain, selama perangkat induk dimulai. Sebaiknya pisahkan fungsionalitas ke dalam pengelompokan yang berbeda sebagaimana masuk akal dari perspektif layanan, lalu buat satu komponen perangkat lunak untuk setiap pengelompokan.
Anda akan menyediakan file INF untuk setiap komponen perangkat lunak.
Jika inf komponen perangkat lunak Anda menentukan direktif AddSoftware, komponen INF:
- Harus berupa file INF universal.
- Harus menentukan kelas penyiapan SoftwareComponent .
Anda dapat menentukan direktif AddSoftware satu atau beberapa kali.
Catatan
Saat menggunakan Jenis 2 dari direktif AddSoftware, tidak diperlukan untuk menggunakan INF Komponen. Direktif dapat berhasil digunakan dalam INF apa pun. Direktif AddSoftware dari Tipe 1, bagaimanapun, harus digunakan dari INF Komponen.
Selain itu, setiap INF (komponen atau tidak) yang cocok pada perangkat komponen perangkat lunak:
- Dapat menentukan layanan pengguna Win32 menggunakan direktif AddService.
- Dapat menginstal perangkat lunak menggunakan direktif INF AddReg dan direktif INF CopyFiles.
- Tidak memerlukan layanan driver fungsi.
- Dapat dihapus instalannya oleh pengguna secara independen dari perangkat induk.
Anda dapat menemukan contoh INF komponen dalam toolkit penginstalan paket Driver untuk driver universal.
Catatan: Agar perangkat komponen yang dijumlahkan perangkat lunak berfungsi, induknya harus dimulai. Jika tidak ada driver yang tersedia untuk perangkat induk, pengembang driver dapat membuat driver mereka sendiri dan secara opsional memanfaatkan driver pass-through "umpass.sys". Pengandar ini disertakan dalam Windows dan, secara efektif, tidak melakukan apa pun selain memulai perangkat. Untuk menggunakan umpass.sys, pengembang harus menggunakan arahan Include/Needs INF di bagian DDInstall untuk setiap kemungkinan [DDInstall.*] ke bagian [UmPass.*] yang sesuai seperti yang ditunjukkan di bawah ini, terlepas dari apakah INF menentukan arahan apa pun untuk bagian tersebut atau tidak:
[DDInstall]
Include=umpass.inf
Needs=UmPass
; also include any existing DDInstall directives
[DDInstall.HW]
Include=umpass.inf
Needs=UmPass.HW
; also include any existing DDInstall.HW directives
[DDInstall.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
; also include any existing DDInstall.Interfaces directives
[DDInstall.Services]
Include=umpass.inf
Needs=UmPass.Services
; also include any existing any DDInstall.Services directives
Mengakses perangkat dari komponen perangkat lunak
Untuk mengambil ID instans perangkat perangkat yang terkait dengan komponen perangkat lunak, gunakan nilai SoftwareArguments di bagian arahan INF AddSoftware dengan <<DeviceInstanceID>>
variabel konteks runtime.
Executable kemudian dapat mengambil ID instans perangkat dari komponen perangkat lunak dari daftar argumen masuknya.
Selanjutnya, jika komponen perangkat lunak menargetkan platform target Universal, gunakan prosedur berikut:
- Panggil CM_Locate_DevNode dengan ID instans perangkat dari komponen perangkat lunak untuk mengambil handel perangkat.
- Panggil CM_Get_Parent untuk mengambil handel ke induk perangkat tersebut. Induk ini adalah perangkat yang menambahkan komponen perangkat lunak menggunakan Direktif AddComponent INF.
- Kemudian, untuk mengambil ID instans perangkat induk, panggil CM_Get_Device_ID pada handel dari CM_Get_Parent.
Jika komponen perangkat lunak hanya menargetkan platform target Desktop, gunakan prosedur berikut:
- Panggil SetupDiCreateDeviceInfoList untuk membuat set informasi perangkat kosong.
- Panggil SetupDiOpenDeviceInfo dengan ID instans perangkat perangkat komponen perangkat lunak.
- Panggil SetupDiGetDeviceProperty dengan
DEVPKEY_Device_Parent
untuk mengambil ID instans perangkat induk.
Contoh
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan komponen perangkat lunak untuk menginstal panel kontrol menggunakan yang dapat dieksekusi untuk kartu grafis.
File INF paket driver
[Version]
Signature = "$WINDOWS NT$"
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
ExtensionId = {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz} ; replace with your own GUID
Provider = %CONTOSO%
DriverVer = 06/21/2006,1.0.0.0
CatalogFile = ContosoGrfx.cat
PnpLockdown = 1
[Manufacturer]
%CONTOSO%=Contoso,NTx86
[Contoso.NTx86]
%ContosoGrfx.DeviceDesc%=ContosoGrfx, PCI\VEN0001&DEV0001
[ContosoGrfx.NT]
;empty
[ContosoGrfx.NT.Components]
AddComponent = ContosoControlPanel,, Component_Inst
[Component_Inst]
ComponentIDs = VID0001&PID0001&SID0001
[Strings]
CONTOSO = "Contoso Inc."
ContosoGrfx.DeviceDesc = "Contoso Graphics Card Extension"
File INF komponen perangkat lunak
[Version]
Signature = "$WINDOWS NT$"
Class = SoftwareComponent
ClassGuid = {5c4c3332-344d-483c-8739-259e934c9cc8}
Provider = %CONTOSO%
DriverVer = 06/21/2006,1.0.0.0
CatalogFile = ContosoCtrlPnl.cat
PnpLockdown = 1
[SourceDisksNames]
1 = %Disk%,,,""
[SourceDisksFiles]
ContosoCtrlPnl.exe = 1
[DestinationDirs]
DefaultDestDir = 13
[Manufacturer]
%CONTOSO%=Contoso,NTx86
[Contoso.NTx86]
%ContosoCtrlPnl.DeviceDesc%=ContosoCtrlPnl, SWC\VID0001&PID0001&SID0001
[ContosoCtrlPnl.NT]
CopyFiles=ContosoCtrlPnl.NT.Copy
[ContosoCtrlPnl.NT.Copy]
ContosoCtrlPnl.exe
[ContosoCtrlPNl.NT.Services]
AddService = , %SPSVCINST_ASSOCSERVICE%
[ContosoCtrlPnl.NT.Software]
AddSoftware = ContosoGrfx1CtrlPnl,, Software_Inst
[Software_Inst]
SoftwareType = 1
SoftwareBinary = %13%\ContosoCtrlPnl.exe
SoftwareArguments = <<DeviceInstanceID>>
SoftwareVersion = 1.0.0.0
[Strings]
SPSVCINST_ASSOCSERVICE = 0x00000002
CONTOSO = "Contoso"
ContosoCtrlPnl.DeviceDesc = "Contoso Control Panel"
Proses validasi dan pengiriman driver sama untuk INF komponen seperti untuk INF reguler. Untuk informasi selengkapnya, lihat Memulai Windows HLK.
Untuk informasi selengkapnya tentang kelas penyiapan, lihat Kelas Penyiapan Perangkat yang Ditentukan Sistem yang Tersedia untuk Vendor.