Driver baru
Paket driver
Tes baru
Peningkatan pengujian yang ada
Skrip penyebaran driver kustom
Topik di bagian ini menunjukkan kepada Anda cara menggunakan Visual Studio untuk
melakukan beberapa tugas yang terlibat dalam pengembangan, penyebaran, dan
pengujian driver.
Video Tambahan
Anda akan menemukan video di halaman berikut di dokumen driver Windows:
Ketika Anda menulis driver untuk dijalankan pada sistem operasi Windows, Anda
memiliki dua pilihan dasar. Anda dapat menulis driver Windows Desktop, yang hanya
berjalan pada edisi Desktop Windows. Atau, Anda dapat memenuhi beberapa
persyaratan tambahan dan menulis Driver Windows, yang berjalan pada varian Desktop
dan non-Desktop Windows. Klasifikasi driver Windows memperluas dan menggantikan
klasifikasi Universal Driver yang lebih lama.
Meskipun tidak diperlukan bagi driver yang hanya berjalan di Windows Desktop untuk
memenuhi persyaratan tambahan untuk Driver Windows, melakukannya meningkatkan
layanan dan keandalan driver, dan juga menyiapkan driver untuk kemungkinan
sertifikasi di masa mendatang pada varian non-Desktop Windows.
Prinsip Desain DCH dan Praktik Terbaik
Artikel • 13/12/2022 • 3 menit untuk membaca
Halaman ini menjelaskan prinsip-prinsip desain dan praktik terbaik untuk Driver
Windows.
Deklaratif (D): Instal driver hanya dengan menggunakan direktif INF deklaratif.
Jangan sertakan fungsi co-installer atau RegisterDll.
Componentized (C): Kustomisasi khusus edisi, khusus OEM, dan opsional untuk
pengemudi terpisah dari paket driver dasar. Akibatnya, driver dasar, yang hanya
menyediakan fungsionalitas perangkat inti, dapat ditargetkan, terbang, dan
dilayani secara independen dari penyesuaian.
Akronim "DCH" mengacu pada prinsip-prinsip yang tercantum di atas. Silakan lihat
halaman Contoh Paket Driver yang Sesuai dengan DCH untuk melihat bagaimana
sampel driver dapat menerapkan prinsip desain DCH.
Gambaran Umum
Paket driver yang sesuai dengan DCH berisi file INF dan binari yang diinstal dan
dijalankan pada edisi Windows berbasis Universal Windows Platform (UWP). Mereka
juga menginstal dan menjalankan pada edisi lain dari Windows 10 dan 11 yang berbagi
satu set umum antarmuka.
Binari driver yang sesuai dengan DCH dapat menggunakan KMDF, UMDF 2, atau
Windows Driver Model (WDM).
Driver dasar
Paket komponen opsional
Aplikasi dukungan perangkat keras opsional
Driver dasar berisi semua fungsi inti dan kode bersama. Paket komponen opsional dapat
berisi penyesuaian dan pengaturan tambahan.
Biasanya, produsen perangkat, atau vendor perangkat keras independen (IHV), menulis
driver dasar. Kemudian, pembangun sistem, atau produsen peralatan asli (OEM),
menyediakan paket komponen opsional.
Setelah IHV telah mensertifikasi paket driver dasar, itu dapat digunakan pada semua
sistem OEM. Karena paket driver dasar dapat digunakan di semua sistem yang berbagi
bagian perangkat keras, Microsoft dapat menguji paket driver dasar secara luas melalui
penerbangan Windows Insider, daripada membatasi distribusi ke mesin tertentu.
OEM hanya memvalidasi kustomisasi opsional yang disediakannya untuk sistem OEM.
Persyaratan
Untuk membuat paket driver yang mengikuti prinsip desain DCH, ikuti langkah-langkah
berikut:
1. Tinjau daftar bagian dan arahan INF yang berlaku di paket Driver Windows.
2. Gunakan alat InfVerif untuk memverifikasi bahwa file INF paket driver Anda
mengikuti persyaratan Deklaratif (D) untuk Driver Windows. Itu harus berlalu
infverif /w .
Pastikan bahwa setiap paket komponen opsional yang tidak mengandung fungsi
driver inti dipisahkan dari paket driver dasar.
Aplikasi dukungan perangkat keras yang terkait dengan paket driver Anda harus
didistribusikan melalui Microsoft Store.
Praktik terbaik
Jika Anda menggunakan Windows Driver Kit (WDK) dengan Visual Studio terbaru
yang tersedia, atur nilai Target Platform di properti proyek driver ke Windows
Driver . Ini secara otomatis menambahkan pustaka yang benar, dan menjalankan
validasi INF yang tepat dan ApiValidator sebagai bagian dari build. Untuk
melakukan ini:
Jika INF Anda melakukan tindakan penyiapan kustom yang bergantung pada
platform target, pertimbangkan untuk memisahkannya menjadi INF ekstensi. Anda
dapat memperbarui ekstensi INF secara independen dari paket driver dasar agar
lebih kuat dan dapat diservis. Untuk informasi selengkapnya, lihat Menggunakan
file INF ekstensi.
Jika Anda ingin menyediakan aplikasi yang berfungsi dengan perangkat Anda,
sertakan aplikasi UWP. Untuk informasi selengkapnya, lihat Aplikasi Dukungan
Perangkat Keras (HSA): Langkah-langkah untuk pengembang driver. OEM dapat
melakukan preload aplikasi semacam itu dengan menggunakan DISM -
Deployment Image Servicing and Management. Atau, pengguna dapat
mengunduh aplikasi secara manual dari Microsoft Store.
Isolasi paket driver adalah persyaratan untuk driver Windows yang membuat paket
driver lebih tahan terhadap perubahan eksternal, lebih mudah diperbarui, dan lebih
mudah diinstal.
7 Catatan
Meskipun isolasi paket driver diperlukan untuk driver Windows, Windows Driver
Desktop masih mendapat manfaat darinya melalui peningkatan ketahanan dan
layanan.
Tabel berikut ini memperlihatkan beberapa contoh praktik paket driver warisan yang
tidak lagi diizinkan untuk Driver Windows di kolom kiri bersama dengan perilaku yang
diperlukan untuk driver Windows di kolom kanan.
INF menyalin file ke %windir%\System32 File driver dijalankan dari penyimpanan driver
atau %windir%\System32\drivers
Jalur hardcode ke lokasi registri global Menggunakan fungsi HKR dan yang disediakan
sistem untuk lokasi relatif registri dan status file
File runtime menulis ke lokasi mana pun File ditulis relatif terhadap lokasi yang disediakan
oleh sistem operasi
Untuk bantuan dalam menentukan apakah paket driver Anda memenuhi persyaratan
isolasi paket driver, lihat Memvalidasi driver Windows. Untuk contoh cara memperbarui
INF untuk memenuhi persyaratan isolasi paket driver, lihat Porting INF untuk mengikuti
isolasi paket driver.
7 Catatan
Akses ke berbagai registri dan status file harus dilakukan dengan memanggil fungsi
yang menyediakan penelepon dengan lokasi status dan kemudian status dibaca/ditulis
relatif terhadap lokasi tersebut. Jangan gunakan jalur registri absolut dan jalur file yang
dikodekan secara permanen.
Status registri
Status file
Status properti
Status registri
Bagian ini berisi subbagian berikut:
IoOpenDeviceRegistryKey (WDM)
Direktif INF AddReg menggunakan entri reg-root HKR di bagian add-registry yang
direferensikan dari bagian INF DDInstall atau bagian DDInstall.HW , seperti yang
ditunjukkan di bawah ini:
INF
[ExampleDDInstall.HW]
AddReg = Example_DDInstall.AddReg
[Example_DDInstall.AddReg]
HKR,,ExampleValue,,%13%\ExampleFile.dll
IoOpenDeviceInterfaceRegistryKey (WDM)
Direktif INF AddReg menggunakan entri reg-root HKR di bagian add-registry yang
direferensikan dari bagian add-interface-section
Status layanan yang tidak dapat diubah adalah status yang disediakan oleh paket driver
yang menginstal layanan. Nilai registri ini yang ditetapkan oleh INF untuk driver dan
layanan Win32 harus disimpan di bawah subkunci "Parameter" layanan dengan
menyediakan baris HKR di bagian AddReg , lalu merujuk bagian tersebut di bagian
penginstalan layanan di INF. Contohnya:
INF
[ExampleDDInstall.Services]
[Example_Service_Inst]
DisplayName = %ExampleService.SvcDesc%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %13%\ExampleService.sys
AddReg=Example_Service_Inst.AddReg
[Example_Service_Inst.AddReg]
Untuk mengakses lokasi status ini dari layanan saat runtime, gunakan salah satu fungsi
berikut:
WdfDriverOpenParametersRegistryKey (WDF)
Nilai registri ini disediakan oleh INF dalam subkunjuk "Parameter" untuk layanan hanya
boleh dibaca saat runtime dan tidak dimodifikasi. Mereka harus diperlakukan sebagai
baca saja.
Jika nilai registri yang disediakan oleh INF adalah pengaturan default yang dapat
ditimpa saat runtime, nilai penimpaan harus ditulis ke dalam status registri layanan
Internal atau status registri layanan bersama untuk layanan. Saat mengambil
pengaturan, pengaturan dapat dicari terlebih dahulu dalam status dapat diubah. Jika
tidak ada di sana, maka pengaturan dapat dicari dalam keadaan tidak dapat diubah.
RtlQueryRegistryValueWithFallback dapat digunakan untuk membantu pengaturan
kueri seperti ini yang memiliki penimpaan dan nilai default.
Status layanan internal adalah status yang ditulis pada runtime dan dimiliki dan dikelola
oleh hanya layanan itu sendiri dan hanya dapat diakses oleh layanan tersebut. Untuk
mengakses lokasi untuk status layanan internal, gunakan salah satu fungsi ini dari
layanan:
WdfDriverOpenPersistentStateRegistryKey (WDF)
Jika layanan ingin mengizinkan komponen lain untuk memodifikasi pengaturan ini,
layanan harus mengekspos antarmuka yang dapat dipanggil komponen lain yang
memberi tahu layanan cara mengubah pengaturan ini. Misalnya, layanan Win32 dapat
mengekspos antarmuka COM atau RPC dan layanan driver dapat mengekspos
antarmuka IOCTL melalui antarmuka perangkat.
Status layanan bersama adalah status yang ditulis pada runtime dan dapat dibagikan
dengan komponen mode pengguna lain jika mereka cukup istimewa. Untuk mengakses
lokasi untuk status layanan bersama ini, gunakan salah satu fungsi berikut:
Status file
Bagian ini berisi subbagian berikut:
WdfDeviceRetrieveDeviceDirectoryString (WDF)
Status file layanan dapat diklasifikasikan ke dalam salah satu dari 3 kategori
Status file layanan yang tidak dapat diubah adalah file yang merupakan bagian dari
paket driver. Untuk informasi selengkapnya tentang mengakses file tersebut, lihat
Menjalankan dari Driver Store.
Status file layanan internal adalah status yang ditulis pada runtime dan dimiliki serta
dikelola oleh hanya layanan itu sendiri dan hanya dapat diakses oleh layanan tersebut.
Untuk mengakses lokasi untuk status layanan internal, gunakan salah satu fungsi ini dari
layanan:
WdfDriverRetrieveDriverDataDirectoryString (UMDF)
Status file layanan bersama adalah status yang ditulis pada runtime dan dapat dibagikan
dengan komponen mode pengguna lain jika cukup istimewa. Untuk mengakses lokasi
untuk status layanan bersama ini, gunakan salah satu fungsi berikut:
File yang akan digunakan sebagai bagian dari operasi perantara yang dapat dibagikan
dengan komponen lain dapat ditulis ke salah satu DriverData atau ProgramData lokasi.
Lokasi ini menawarkan komponen lokasi untuk menulis status atau status sementara
yang dimaksudkan untuk dikonsumsi oleh komponen lain dan berpotensi dikumpulkan
dan disalin dari sistem untuk diproses oleh sistem lain. Misalnya, file log kustom atau
crash dump sesuai dengan deskripsi ini.
Hindari menulis file di akar DriverData direktori atau ProgramData . Sebagai gantinya,
buat subdirektori dengan nama perusahaan Anda lalu tulis file dan subdirektori lebih
lanjut dalam direktori tersebut.
Misalnya, untuk nama perusahaan Contoso, driver mode kernel dapat menulis log
kustom ke \DriverData\Contoso\Logs dan aplikasi mode pengguna dapat
mengumpulkan atau menganalisis file log dari %DriverData%\Contoso\Logs .
DriverData
DriverData Direktori tersedia di Windows 10, versi 1803 dan yang lebih baru, dan dapat
ProgramData
Status properti
Perangkat dan antarmuka perangkat mendukung penyimpanan status melalui model
properti PnP. Model properti memungkinkan data properti terstruktur disimpan
terhadap perangkat atau antarmuka perangkat. Ini dimaksudkan untuk data yang lebih
kecil yang cukup cocok dengan jenis properti yang didukung oleh model properti.
Driver WDM
IoGetDevicePropertyData
IoSetDevicePropertyData
Driver WDF
WdfDeviceQueryProperty
WdfDeviceAllocAndQueryProperty
WdfDeviceQueryPropertyEx
WdfDeviceAllocAndQueryPropertyEx
WdfDeviceAssignProperty
WdfFdoInitQueryProperty
WdfFdoInitAllocAndQueryProperty
WdfFdoInitQueryPropertyEx
WdfFdoInitAllocAndQueryPropertyEx
Kode mode pengguna
CM_Get_DevNode_Property
CM_Set_DevNode_Property
Driver WDM
IoGetDeviceInterfacePropertyData
IoSetDeviceInterfacePropertyData
Driver WDF
WdfDeviceQueryInterfaceProperty
WdfDeviceAllocAndQueryInterfaceProperty
WdfDeviceAssignInterfaceProperty
CM_Get_Device_Interface_Property
CM_Set_Device_Interface_Property
Atau, jika driver yang memiliki status memungkinkan akses langsung ke status , driver
lain dapat mengakses status dengan menggunakan fungsi yang disediakan sistem untuk
akses terprogram ke status antarmuka perangkat. Lihat Status Registri Antarmuka
Perangkat untuk informasi selengkapnya.
Antarmuka atau status ini (tergantung pada metode berbagi yang digunakan) perlu
diberi versi yang benar sehingga driver yang memiliki status dapat dilayankan secara
independen dari komponen lain yang mengakses status tersebut. Vendor driver tidak
dapat mengandalkan komponen lain yang dilayanakan pada saat yang sama dengan
driver dan tetap pada versi yang sama.
Karena antarmuka pengontrol perangkat dan driver datang dan pergi, driver dan
aplikasi harus menghindari panggilan IoGetDeviceInterfaces pada start-up komponen
untuk mendapatkan daftar antarmuka yang diaktifkan. Sebaliknya, praktik terbaik adalah
mendaftar untuk pemberitahuan kedatangan atau penghapusan antarmuka perangkat
dan kemudian memanggil fungsi yang sesuai untuk mendapatkan daftar antarmuka
yang diaktifkan yang ada pada komputer.
Windows IoopenDeviceRegistryKey
2000 IoOpenDeviceInterfaceRegistryKey
Windows IoGetDevicePropertyData
Vista IoSetDevicePropertyData
Windows 8 IoGetDeviceInterfacePropertyData
IoSetDeviceInterfacePropertyData
IoGetDeviceDirectory
Windows 10 RtlQueryRegistryValueWithFallback
1809
Driver KMDF
1,0 WdfDeviceOpenRegistryKey
WdfFdoInitOpenRegistryKey
WdfDriverOpenParametersRegistryKey
WdfDeviceQueryProperty
WdfDeviceAllocAndQueryProperty
WdfFdoInitQueryProperty
WdfFdoInitAllocAndQueryProperty
1.13 WdfDeviceQueryPropertyEx
WdfDeviceAllocAndQueryPropertyEx
WdfDeviceAssignProperty
WdfFdoInitQueryPropertyEx
WdfFdoInitAllocAndQueryPropertyEx
2.0 WdfDeviceOpenRegistryKey
WdfFdoInitOpenRegistryKey
WdfDriverOpenParametersRegistryKey
WdfDeviceQueryProperty
WdfDeviceAllocAndQueryProperty
WdfDeviceQueryPropertyEx
WdfDeviceAllocAndQueryPropertyEx
WdfDeviceAssignProperty
WdfFdoInitQueryProperty
WdfFdoInitAllocAndQueryProperty
WdfFdoInitQueryPropertyEx
WdfFdoInitAllocAndQueryPropertyEx
2,25 WdfDeviceRetrieveDeviceDirectoryString
2.27 WdfDriverRetrieveDriverDataDirectoryString
CM_Set_DevNode_Property
CM_Get_Device_Interface_Property
CM_Set_Device_Interface_Property
GetServiceDirectory
GetSharedServiceDirectory
Jalankan Dari Penyimpanan Driver
Artikel • 13/12/2022 • 9 menit untuk membaca
INF yang menggunakan 'jalankan dari Driver Store' berarti bahwa INF menggunakan
DIRID 13 untuk menentukan lokasi untuk file paket driver saat diinstal.
Untuk file 'jalankan dari Penyimpanan Driver' yang dimuat oleh INF, subdir yang
tercantum dalam entri SourceDisksFiles untuk file di INF harus cocok dengan subdir
yang tercantum dalam entri DestinationDirs untuk file di INF.
Selain itu, direktif CopyFiles tidak dapat digunakan untuk mengganti nama file yang
dijalankan dari Penyimpanan Driver. Pembatasan ini diperlukan agar penginstalan INF
pada perangkat tidak mengakibatkan pembuatan file baru di direktori Penyimpanan
Driver.
Karena entri SourceDisksFiles tidak dapat memiliki beberapa entri dengan nama file
yang sama dan CopyFiles tidak dapat digunakan untuk mengganti nama file, setiap file
'jalankan dari Penyimpanan Driver' yang direferensikan INF harus memiliki nama file
yang unik.
Paket driver memiliki dukungan umum untuk 'jalankan dari Driver Store' yang dimulai
dengan Windows 10 1709. Namun, tumpukan perangkat tertentu dapat menempatkan
pembatasan tambahan pada file yang perlu Anda berikan yang dicolokkan ke tumpukan
tersebut. Beberapa contohnya adalah tumpukan perangkat ini yang tidak mendukung
'jalankan dari Penyimpanan Driver' hingga Windows 10 1803:
Biner driver UMDF: Lihat Membatasi Lokasi Pemuatan Driver UMDF untuk
informasi selengkapnya
Pembaruan firmware UEFI: Lihat Menulis paket driver pembaruan untuk informasi
selengkapnya
Jika menyediakan biner yang dicolokkan ke tumpukan perangkat tertentu, silakan lihat
dokumentasi untuk tumpukan perangkat tertentu yang Anda colokkan untuk memeriksa
apakah mendukung penyediaan jalur file lengkap ke biner dan jika ada batasan pada
jalur file lengkap tersebut. Jika mendukung penyediaan jalur file lengkap ke biner tanpa
batasan pada jalur tersebut, maka harus mendukung file yang 'dijalankan dari Driver
Store'.
Driver WDM atau KMDF yang berjalan dari Driver Store pada Windows 10 versi 1803
dan yang lebih baru yang perlu mengakses file lain dari paket drivernya harus
memanggil IoGetDriverDirectory dengan DriverDirectoryImage sebagai jenis direktori
untuk mendapatkan jalur direktori tempat driver dimuat. Atau untuk driver yang perlu
mendukung versi OS sebelum Windows 10 versi 1803, gunakan IoQueryFullDriverPath
untuk menemukan jalur driver, mendapatkan jalur direktori tempatnya dimuat, dan
mencari file yang relatif terhadap jalur tersebut. Jika driver mode kernel adalah driver
KMDF, driver dapat menggunakan WdfDriverWdmGetDriverObject untuk mengambil
objek driver WDM untuk diteruskan ke IoQueryFullDriverPath.
C++
bRet = GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(PCWSTR)&DriverEntry,
&handleModule);
if (bRet) {
charsWritten = GetModuleFileNameW(handleModule,
path,
pathLength);
Berikut adalah beberapa contoh skenario yang mungkin melibatkan pemuatan file dari
paket driver:
Paket driver ekstensi berisi file konfigurasi yang dimuat oleh driver dalam paket
driver dasar.
Dalam situasi ini, paket driver harus mengatur beberapa status pada perangkat atau
antarmuka perangkat yang menunjukkan jalur file yang diharapkan untuk dimuat.
Paket driver biasanya akan menggunakan AddReg HKR untuk mengatur status ini.
Untuk contoh ini, harus diasumsikan bahwa untuk ExampleFile.dll , paket driver
memiliki entri SourceDisksFiles tanpa subdir. Ini menghasilkan file yang berada di akar
direktori paket driver. Juga harus diasumsikan bahwa DestinationDirs untuk direktif
CopyFiles menentukan diri 13.
Berikut adalah contoh INF untuk mengatur ini sebagai status perangkat:
C++
[ExampleDDInstall.HW]
AddReg = Example_DDInstall.AddReg
[Example_DDInstall.AddReg]
HKR,,ExampleValue,,%13%\ExampleFile.dll
Contoh INF untuk mengatur ini sebagai status antarmuka perangkat adalah:
C++
[ExampleDDInstall.Interfaces]
[Example_Add_Interface_Section]
AddReg = Example_Add_Interface_Section.AddReg
[Example_Add_Interface_Section.AddReg]
HKR,,ExampleValue,,%13%\ExampleFile.dll
Jika nilai perlu dibaca oleh komponen mode kernel, nilainya harus menjadi nilai REG_SZ.
Ketika komponen mode kernel membaca nilai tersebut, komponen harus
menambahkannya \??\ sebelum meneruskannya ke API seperti ZwOpenFile.
Untuk mengakses pengaturan ini ketika merupakan bagian dari status perangkat,
pertama-tama aplikasi harus menemukan identitas perangkat. Kode mode pengguna
dapat menggunakan CM_Get_Device_ID_List_Size dan CM_Get_Device_ID_List untuk
mendapatkan daftar perangkat, difilter seperlunya. Daftar perangkat tersebut mungkin
berisi beberapa perangkat, jadi cari perangkat yang sesuai sebelum membaca status
dari perangkat. Misalnya, panggil CM_Get_DevNode_Property untuk mengambil
properti di perangkat saat mencari perangkat yang cocok dengan kriteria tertentu.
Kode mode kernel harus mengambil PDO (objek perangkat fisik) ke perangkat dengan
status dan memanggil IoOpenDeviceRegistryKey. Salah satu cara yang mungkin untuk
kode mode kernel untuk mengambil PDO perangkat adalah dengan menemukan
antarmuka yang diaktifkan yang diekspos oleh perangkat dan menggunakan
IoGetDeviceObjectPointer untuk mengambil objek perangkat.
Untuk mengakses pengaturan ini ketika status antarmuka perangkat, Kode mode
pengguna dapat memanggil CM_Get_Device_Interface_List_Size dan
CM_Get_Device_Interface_List.
7 Catatan
Biner layanan
Jika INF Anda menambahkan layanan dan biner tidak dijalankan dari Driver Store, maka
INF Anda mungkin terlihat seperti:
INF
[DestinationDirs]
Example_CopyFiles = 12
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleBinary.sys
[ExampleDDInstall.Services]
AddService = ExampleService,0x2,Example_Service_Inst
[Example_Service_Inst]
DisplayName = %SvcDesc%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\ExampleBinary.sys
Untuk memindahkan file ini agar dijalankan dari Penyimpanan Driver, Anda perlu
memperbarui entri DestinationDirs tempat file akan disalin dan memperbarui arahan
ServiceBinary yang merujuk lokasi file ini.
INF
[DestinationDirs]
Example_CopyFiles = 13
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleBinary.sys
[ExampleDDInstall.Services]
AddService = ExampleService,0x2,Example_Service_Inst
[Example_Service_Inst]
DisplayName = %SvcDesc%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %13%\ExampleBinary.sys
INF
[DestinationDirs]
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleUmdfDriver.dll
[ExampleDDInstall.Wdf]
UmdfService = ExampleUmdfDriver,Example_UMDF_Inst
...
[Example_UMDF_Inst]
ServiceBinary = %12%\UMDF\ExampleUmdfDriver.dll
...
Untuk memindahkan file ini agar dijalankan dari Penyimpanan Driver, Anda perlu
memperbarui entri DestinationDirs tempat file akan disalin dan memperbarui arahan
ServiceBinary yang merujuk lokasi file ini.
INF
[DestinationDirs]
Example_CopyFiles = 13
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleUmdfDriver.dll
[ExampleDDInstall.Wdf]
UmdfService = ExampleUmdfDriver,Example_UMDF_Inst
...
[Example_UMDF_Inst]
ServiceBinary = %13%\ExampleUmdfDriver.dll
...
File lain
Jika INF Anda menambahkan file yang mungkin dimuat oleh komponen lain dan tidak
dijalankan dari Driver Store, maka INF Anda mungkin terlihat seperti berikut ini. Dalam
contoh ini, hanya nama file yang ditulis ke status registri perangkat. Komponen yang
membaca nilai registri ini untuk menentukan file apa yang akan dimuat tergantung pada
file yang berada di %windir%\system32 atau bergantung pada urutan pencarian
LoadLibrary yang dapat menemukan file.
INF
[DestinationDirs]
Example_CopyFiles = 11
[ExampleDDInstall]
CopyFiles=Example_CopyFiles
AddReg=Example_AddReg
[Example_CopyFiles]
ExampleFile.dll
[Example_AddReg]
HKR,,FileLocation,,"ExampleFile.dll"
Untuk memindahkan file ini agar dijalankan dari Penyimpanan Driver, Anda perlu
memperbarui entri DestinationDirs tempat file akan disalin dan memperbarui lokasi
yang disimpan dalam status perangkat. Ini mengharuskan komponen yang membaca
nilai registri tersebut untuk dapat menangani nilai registri tersebut menjadi jalur lengkap
ke file alih-alih file yang relatif terhadap %windir%\system32 .
INF
[DestinationDirs]
[ExampleDDInstall]
CopyFiles=Example_CopyFiles
AddReg=Example_AddReg
[Example_CopyFiles]
ExampleFile.dll
[Example_AddReg]
HKR,,FileLocation,,"%13%\ExampleFile.dll"
Paket driver umumnya akan mendukung banyak versi sistem operasi Windows. Sebagai
bagian dari mendukung beberapa versi sistem operasi, paket driver mungkin perlu
memiliki perilaku yang berbeda pada versi sistem operasi yang berbeda untuk
menggunakan fitur baru atau untuk memenuhi persyaratan baru dari versi sistem
operasi baru. Misalnya, paket driver mungkin ingin memiliki perilaku yang berbeda pada
sistem operasi setelah versi tertentu untuk memenuhi persyaratan driver Windows.
Bagian berikut menjelaskan bagaimana Anda dapat memiliki perilaku yang berbeda baik
dalam file INF paket driver maupun dalam perilaku runtime biner dalam paket driver.
Dukungan INF
Dekorasi TargetOSVersion pada bagian model INF di INF memungkinkan penulis INF
untuk memberikan instruksi dan pengaturan penginstalan yang berbeda untuk berbagai
versi sistem operasi.
Lihat Menggabungkan ekstensi platform dengan versi sistem operasi untuk informasi
selengkapnya.
Dukungan runtime
Saat mencoba mengubah perilaku saat runtime untuk mendukung beberapa versi
sistem operasi, disarankan untuk memeriksa fitur atau ketersediaan API jika
memungkinkan alih-alih mencoba memeriksa apakah kode berjalan pada versi sistem
operasi tertentu atau yang lebih baru. Misalnya, jika ada API yang ingin Anda gunakan
jika tersedia, Anda dapat mencoba menemukannya secara dinamis alih-alih
menautkannya secara statis. Jika Anda dapat menemukannya, Anda dapat
menggunakannya, namun, jika tidak ada di lingkungan Anda saat ini, Anda dapat
kembali ke beberapa perilaku alternatif.
Mode kernel
Untuk mode kernel, lihat Menulis driver untuk versi Windows yang berbeda untuk
informasi selengkapnya tentang cara mendukung beberapa versi Windows dari satu
driver.
Mode pengguna
Dalam mode pengguna, Anda dapat menggunakan LoadLibraryEx bersama dengan
GetProcAddress untuk memeriksa apakah API tertentu yang ingin Anda gunakan
tersedia di lingkungan yang sedang berjalan dan untuk mendapatkan penunjuk fungsi
untuk digunakan untuk memanggil API tersebut. Lihat Penautan dinamis run-time dan
Menggunakan penautan dinamis run-time untuk informasi selengkapnya.
API Layering
Artikel • 13/12/2022 • 2 menit untuk membaca
Gambaran Umum
API Layering mensyaratkan bahwa binari dalam paket Driver Windows hanya memanggil
API dan DDI yang termasuk dalam edisi Windows 10 berbasis UWP atau berasal dari
serangkaian API Win32 yang dikuratori. API Layering adalah perpanjangan dari
persyaratan "U" sebelumnya yang merupakan bagian dari prinsip desain DCHU.
Untuk melihat platform mana yang didukung API, kunjungi halaman dokumentasi untuk
API dan periksa entri Platform Target di bagian Persyaratan. Windows Driver hanya
boleh menggunakan API atau DDI yang memiliki Platform Target yang terdaftar sebagai
Universal , yang berarti subset fungsionalitas yang tersedia di semua penawaran
Windows.
Halaman Windows API Sets menjelaskan serangkaian praktik dan alat terbaik untuk
menentukan apakah API tersedia di platform tertentu.
Anda dapat menggunakan Microsoft Visual Studio 2019 bersama dengan Windows
Driver Kit (WDK) Versi 2004 untuk membangun Driver Windows. Anda dapat
mengunduh kit dan alat dari Windows Hardware Dev Center .
Dalam banyak kasus, Anda dapat mengolah ulang driver mode kernel warisan sebagai
Driver Windows, selama driver tidak berfungsi dengan komponen mode pengguna apa
pun. Driver WDM dan KMDF warisan harus dikombinasikan ulang sebagai driver
Windows yang menargetkan Windows 10 tanpa perlu konversi. Meskipun driver dapat
dikompilasi tanpa konversi apa pun, ini tidak berarti bahwa driver memenuhi semua
persyaratan driver Windows. Silakan lihat Memulai driver Windows untuk detail
mengenai persyaratan Driver Windows.
Sebaliknya, driver mode pengguna yang ada mungkin memerlukan modifikasi untuk
dikompilasi sebagai driver Windows. Secara khusus, paket driver Anda tidak boleh
memiliki dependensi di luar UWP. Misalnya, hanya beberapa API Win32 yang
merupakan bagian dari UWP.
2. Setelah Anda membuat proyek, di panel Penjelajah Solusi, pilih dan tahan (atau klik
kanan) solusi dan pilih Configuration Manager. Atur Konfigurasi solusi aktif ke
versi Windows target yang diinginkan, dan atur Platform solusi aktif ke Win32
atau x64. Jika Arm tidak terdaftar, pilih <Baru...> untuk membangun arm.
Untuk mengubah model driver secara manual, pilih dan tahan (atau klik kanan)
proyek driver dan pilih Properti. Di bawah Konfigurasi Properties-Driver>
Pengaturan-General>, temukan entri Platform Target. Pilih Driver Windows.
Microsoft Visual Studio menggunakan pengaturan ini untuk menentukan pustaka
apa yang akan ditautkan.
Catatan Anda tidak dapat membuat Driver Windows untuk versi Windows yang
lebih lama dari Windows 10 Versi 1809.
3. Anda mungkin perlu mengubah file .inf untuk menentukan penyedia, yang
ditentukan sebagai token %ManufacturerName% yang diperluas nanti di bagian
String file INF. Contohnya:
C++
Provider="Contoso"
4. Anda sekarang dapat membangun solusi. Visual Studio tautan terhadap pustaka
yang diperlukan dan menghasilkan file .cat, file .inf, dan biner driver.
Untuk informasi tentang pengaturan konfigurasi yang dapat Anda gunakan di Visual
Studio saat membangun driver Anda, lihat Membangun Driver dengan WDK.
Memvalidasi Driver Windows
Artikel • 13/12/2022 • 6 menit untuk membaca
Gunakan alat InfVerif, Driver Verifier Driver Isolation Checks, dan ApiValidator untuk
menguji Driver Windows Anda untuk mematuhi persyaratan yang dijelaskan dalam
Memulai driver Windows.
InfVerif
InfVerif adalah alat yang memvalidasi sintaks INF dan memeriksa apakah INF sesuai
dengan persyaratan dan batasan.
INF
Jika tidak ada kesalahan, INF memenuhi persyaratan Isolasi Paket Driver Windows Driver.
Misalnya, INF AddEventProvider Directive tersedia mulai dari Windows 10, versi 1809.
Untuk menggunakan direktif ini dalam INF yang menargetkan versi OS sebelum
Windows 10, versi 1809, hiasi kedua bagian penginstalan menggunakan sintaks INF
warisan untuk mendaftarkan penyedia peristiwa ETW serta bagian penginstalan
menggunakan sintaks yang diperbarui.
Untuk kode sampel yang menunjukkan cara menggunakan dekorasi OS, lihat
Menggabungkan Ekstensi Platform dengan Versi Sistem Operasi.
Anda dapat melihat pelanggaran saat terjadi dalam debugger kernel, atau Anda dapat
mengonfigurasi DV untuk menghentikan sistem dan menghasilkan cadangan memori
dengan detail ketika pelanggaran terjadi. Anda dapat memulai pengembangan driver
dengan metode pertama, lalu beralih ke yang kedua saat driver Anda mendekati
penyelesaian.
command
Untuk memeriksa lebih dari satu driver, pisahkan setiap nama driver dengan spasi:
command
Anda harus melakukan boot ulang untuk mengaktifkan pengaturan verifikasi. Untuk
melakukan ini dari baris perintah, tentukan:
command
shutdown /r /t 0
\Registry\Machine\SYSTEM
Contoh: ZwCreateKey menyediakan jalur yang relatif terhadap handel yang bukan dari
API yang disetujui:
handles returned from WDF or WDM APIs. Detected creation of unisolated registry key
\REGISTRY\MACHINE\SYSTEM\SomeKeyThatShouldNotExist
ApiValidator
Alat ApiValidator memverifikasi bahwa API yang dipanggil biner Anda valid untuk Driver
Windows. Alat ini mengembalikan kesalahan jika biner Anda memanggil API yang
berada di luar set API yang valid untuk Driver Windows. Alat ini adalah bagian dari WDK
untuk Windows 10.
ApiValidator memvalidasi bahwa driver mendukung Lapisan API, salah satu persyaratan
untuk driver Windows. Untuk daftar lengkap persyaratan, lihat Memulai driver Windows.
Untuk melihat semua pesan yang ditampilkan oleh ApiValidator, navigasikan ke Tools-
Options-Projects>> dan Solutions-Build> and Run, dan atur verbositas output build
proyek MSBuild ke Terperinci. Saat membangun dari baris perintah, tambahkan sakelar
/v:detail atau /v:diag ke perintah build Anda untuk meningkatkan verbositas.
C++
%AdditionalDependencies);$(SDK_LIB_PATH)\OneCoreUAP.lib
Untuk meninjau opsi linker lain untuk menargetkan SKU OneCore, lihat
Membangun untuk OneCore.
2. Hapus atau ganti panggilan API yang tidak diizinkan satu per satu dan jalankan
ulang alat sampai tidak ada kesalahan.
3. Dalam beberapa kasus, Anda dapat mengganti panggilan ini dengan DDI alternatif
yang tercantum di halaman referensi untuk DDI khusus desktop. Anda mungkin
harus membuat kode solusi jika tidak ada pengganti yang sesuai. Jika perlu, tulis
Driver Windows baru mulai dari templat driver di WDK.
Jika Anda melihat kesalahan seperti berikut ini, silakan lihat panduan di Membangun
untuk OneCore.
C++
Catatan Penting:
(x86)\Windows Kits\10\build\universalDDIs\x64\UniversalDDIs.xml"
C++
C++
C++
$(SolutionDir)$(Platform)\$(ConfigurationName)\
Topik ini menjelaskan bagaimana sampel driver DCHU menerapkan prinsip desain
DCH. Anda dapat menggunakannya sebagai model untuk menerapkan prinsip desain
DCH ke paket driver Anda sendiri.
Jika Anda ingin salinan lokal repositori sampel, kloning dari Windows-driver-samples .
Beberapa bagian sampel dapat menggunakan direktif dan API yang hanya tersedia pada
versi Windows 10 dan di atasnya. Silakan lihat Penginstalan Perangkat dan Driver untuk
melihat versi OS apa yang didukung oleh direktif tertentu.
Prasyarat
Sebelum Anda membaca bagian ini, Anda harus terbiasa dengan Prinsip Desain DCH.
Gambaran Umum
Sampel menyediakan contoh skenario di mana dua mitra perangkat keras, Contoso
(pembuat sistem, atau OEM) dan Fabrikam (produsen perangkat, atau IHV) bekerja sama
untuk membuat driver yang sesuai dengan DCH untuk perangkat dalam sistem Contoso
yang akan datang. Perangkat yang dimaksud adalah kit pembelajaran OSR USB FX2 .
Di masa lalu, Fabrikam akan menulis paket driver warisan yang disesuaikan dengan lini
produk Contoso tertentu, dan kemudian menyerahkannya ke OEM untuk menangani
layanan. Ini menghasilkan overhead pemeliharaan yang signifikan, sehingga Fabrikam
memutuskan untuk merefaktor kode dan membuat paket driver yang mematuhi DCH
sebagai gantinya.
Fabrikam menghapus bagian dan arahan non-deklaratif dan menggunakan alat InfVerif
untuk memverifikasi bahwa file INF paket driver baru mengikuti persyaratan INF
deklaratif.
INF
[Version]
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
Provider = Contoso
INF
[OsrFx2_AddReg]
INF
[OsrFx2Extension_AddReg]
Perhatikan bahwa ekstensi selalu diproses setelah INF dasar tetapi tidak dalam urutan
yang pasti. Jika INF dasar diperbarui ke versi yang lebih baru, ekstensi masih akan
diterapkan kembali setelah INF dasar baru diinstal.
INF
[OsrFx2_Install.NT]
CopyFiles = OsrFx2_CopyFiles
[OsrFx2_Install.NT.Services]
[UserSvc_ServiceInstall]
DisplayName = %UserSvcDisplayName%
ServiceType = 0x10 ;
SERVICE_WIN32_OWN_PROCESS
ServiceBinary = %13%\osrfx2_DCHU_usersvc.exe
[UserSvc_AddTrigger]
TriggerType = 1 ;
SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
Action = 1 ;
SERVICE_TRIGGER_ACTION_SERVICE_START
DataItem = 2, "USB\VID_0547&PID_1002" ;
SERVICE_TRIGGER_DATA_TYPE_STRING
[OsrFx2_CopyFiles]
osrfx2_DCHU_base.dll
osrfx2_DCHU_filter.dll
osrfx2_DCHU_usersvc.exe
Perhatikan bahwa layanan seperti itu juga dapat diinstal dalam INF komponen atau
ekstensi, tergantung pada skenarionya.
Menggunakan komponen untuk menginstal
perangkat lunak warisan dari paket driver
Fabrikam memiliki file osrfx2_DCHU_componentsoftware.exe yang dapat dieksekusi yang
sebelumnya diinstal menggunakan penginstal bersama. Perangkat lunak warisan ini
menampilkan kunci registri yang ditetapkan oleh papan dan diperlukan oleh OEM. Ini
adalah executable berbasis GUI yang hanya berjalan pada Windows untuk edisi desktop.
Untuk menginstalnya, Fabrikam membuat paket driver komponen terpisah dan
menambahkannya di INF ekstensi mereka.
INF
[OsrFx2Extension_Install.NT.Components]
AddComponent = osrfx2_DCHU_component,,OsrFx2Extension_ComponentInstall
[OsrFx2Extension_ComponentInstall]
ComponentIds=VID_045e&PID_94ab
INF
[OsrFx2Component_Install.NT.Software]
AddSoftware = osrfx2_DCHU_componentsoftware,,
OsrFx2Component_SoftwareInstall
[OsrFx2Component_SoftwareInstall]
SoftwareType = 1
SoftwareBinary = osrfx2_DCHU_componentsoftware.exe
SoftwareArguments = <<DeviceInstanceId>>
SoftwareVersion = 1.0.0.0
[OsrFx2Component_CopyFiles]
osrfx2_DCHU_componentsoftware.exe
Perhatikan bahwa paket driver komponen hanya didistribusikan pada SKU Desktop
karena penargetan yang ditetapkan di dasbor Windows Hardware Dev Center . Untuk
informasi selengkapnya, lihat Menerbitkan driver ke Windows Update.
Mengizinkan komunikasi dengan aplikasi
dukungan perangkat keras
Fabrikam ingin menyediakan aplikasi pendamping berbasis GUI sebagai bagian dari
paket Driver Windows. Karena aplikasi pendamping berbasis Win32 tidak dapat menjadi
bagian dari paket Driver Windows, mereka memindahkan aplikasi Win32 mereka ke
Universal Windows Platform (UWP) dan memasangkan aplikasi dengan perangkat.
C++
WDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData = { 0 };
WDF_DEVICE_INTERFACE_PROPERTY_DATA_INIT(&PropertyData,
&GUID_DEVINTERFACE_OSRUSBFX2,
&DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities);
Status = WdfDeviceAssignInterfaceProperty(Device,
&PropertyData,
DEVPROP_TYPE_STRING_LIST,
sizeof(customCapabilities),
(PVOID)customCapabilities);
Aplikasi baru (tidak termasuk dalam sampel) aman dan dapat diperbarui dengan mudah
di Microsoft Store. Dengan aplikasi UWP siap, Contoso menggunakan DISM -
Deployment Image Servicing and Management untuk memuat aplikasi terlebih dahulu
pada gambar edisi Windows Desktop.
DCHU_Sample\osrfx2_DCHU_extension_loose
DCHU_Sample\osrfx2_DCHU_extension_tight
Ketika ekstensi dan komponen berada dalam paket driver yang sama
("digabungkan erat"), ekstensi INF menentukan arahan CopyINF untuk
menyebabkan INF komponen disalin ke sistem target. Ini ditunjukkan dalam
DCHU_Sample\osrfx2_DCHU_extension_tight\osrfx2_DCHU_extension\osrfx2_DCH
U_extension.inx :
INF
[OsrFx2Extension_Install.NT]
CopyInf=osrfx2_DCHU_component.inf
Arahan ini juga dapat digunakan untuk mengoordinasikan penginstalan file INF di
perangkat multifungsi. Untuk detail selengkapnya, lihat Menyalin file INF.
7 Catatan
Meskipun driver dasar dapat memuat ekstensi (dan menargetkan driver dasar di
label pengiriman), ekstensi yang dibundel dengan driver lain tidak dapat
diterbitkan ke ID perangkat keras ekstensi.
INF
[DestinationDirs]
Lihat halaman jalankan dari Driver Store untuk detail selengkapnya mengenai cara
menemukan dan memuat file secara dinamis dari Driver Store.
Ringkasan
Diagram berikut menunjukkan paket driver yang dibuat Fabrikam dan Contoso untuk
driver yang mematuhi DCH mereka. Dalam contoh yang digabungkan secara longgar,
mereka akan membuat tiga pengiriman terpisah di dasbor Windows Hardware Dev
Center : satu untuk basis, satu untuk ekstensi, dan satu untuk komponen. Dalam
contoh yang digabungkan dengan erat, mereka akan membuat dua pengiriman: dasar
dan ekstensi/komponen.
Perhatikan bahwa INF komponen akan cocok pada ID perangkat keras komponen,
sedangkan basis dan ekstensi akan cocok pada ID perangkat keras papan.
Lihat juga
Memulai Driver Windows
osrfx2_DCHU_base.inx
Untuk informasi umum tentang driver debugging, lihat Memulai dengan debugging
Windows.
Selain itu, jika Anda menggunakan template KMDF Visual Studio, driver Anda
menggunakan Windows software trace preprocessor (WPP) untuk menulis pesan jejak.
Biner driver Anda adalah penyedia ETW dengan penyedia GUID.
Untuk mengirim pesan jejak dari biner driver Anda, gunakan kode ini:
C++
Artikel ini dimaksudkan untuk menjadi panduan pencarian cepat untuk membantu Anda
memperbarui file INF untuk mengikuti isolasi paket driver sebagai bagian dari
memperbarui paket driver Anda menjadi Driver Windows. Bagian berikut memberikan
contoh beberapa hal yang lebih umum yang mungkin Anda miliki dalam file INF paket
driver Anda dengan referensi ke informasi tentang cara memperbaruinya agar sesuai
dengan isolasi paket driver. Jika paket driver Anda perlu mendukung cara lama untuk
melakukan sesuatu untuk versi sistem operasi yang lebih lama saat menggunakan cara
baru pada versi sistem operasi yang lebih baru, lihat Menggabungkan Ekstensi Platform
dengan Versi Sistem Operasi untuk cara mencapainya dalam INF.
INF
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvi
der/Analytic", "OwningPublisher", 0x0, "{35356277-0b54-43da-b324-
671006d74759}"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvi
der/Analytic", "Enabled", 0x00010001, 1
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvi
der/Analytic", "Isolation", 0x00010001, 1
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvi
der/Analytic", "ChannelAccess",0x0, \
"O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO)
(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-
1-5-32-573)"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\ExampleProvi
der/Analytic", "Type", 0x00010001, 2
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}" , , 0x0, "ExampleProvider"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}", "ResourceFileName", 0x00020000,
"%13%\ExampleBinary.sys"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}", "MessageFileName", 0x00020000,
"%13%\ExampleBinary.sys"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}\ChannelReferences\0", , 0x0,
"ExampleProvider/Analytic"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}\ChannelReferences\0", "Id", 0x00010001, 16
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}\ChannelReferences\0", "Flags", 0x00010001, 0
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{35356277-
0b54-43da-b324-671006d74759}\ChannelReferences", Count, 0x00010001, 1
INF
[ExampleDDInstall.Events]
AddEventProvider={35356277-0b54-43da-b324-671006d74759},
Example_EVvntProvider_Inst
[Example_EventProvider_Inst]
ProviderName=ExampleProvider
ResourceFile=%13%\ExampleBinary.sys
MessageFile=%13%\ExampleBinary.sys
[Example_Channel_Inst]
Isolation=1
Access="O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO)
(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-
1-5-32-573)"
Enabled=1
Value=16
INF
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger,
BufferSize, %REG_DWORD%, 0x00000040
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger,
GUID, %REG_SZ%, "{6f1373c7-eec8-495c-bfe5-1270336368df}"
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger,
Start, %REG_DWORD%, 0x00000001
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger,
MaximumBuffers, %REG_DWORD%, 0x00000040
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger,
LogFileMode, %REG_DWORD%, 0x400
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\
{35356277-0b54-43da-b324-671006d74759}, EnableLevel, %REG_DWORD%, 0x00000004
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\
{35356277-0b54-43da-b324-671006d74759}, MatchAnyKeyword, %REG_QWORD%,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
HKLM,SYSTEM\CurrentControlSet\Control\WMI\Autologger\ExampleAutoLogger\
{35356277-0b54-43da-b324-671006d74759}, Enabled, %REG_DWORD%, 0x00000001
INF
[ExampleDDInstall.Events]
AddAutoLogger=ExampleAutoLogger,{6f1373c7-eec8-495c-bfe5-
1270336368df},Example_AutoLogger_Inst
[Example_AutoLogger_Inst]
Start=1
BufferSize = 0x40
LogFileMode=0x400
MaximumBuffers=0x40
AddAutoLoggerProvider={35356277-0b54-43da-b324-
671006d74759},Example_AutoLoggerProvider_Inst
[Example_AutoLoggerProvider_Inst]
Enabled=1
EnableLevel=0x4
MatchAnyKeyword=0
INF
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
Tidak didukung. INF tidak boleh memodifikasi entri registri global. Jika tindakan
penyiapan satu kali diperlukan saat paket driver diinstal, Anda dapat menggunakan
direktif AddSoftware dari dalam file INF komponen untuk meluncurkannya. Ini hanya
untuk tindakan yang tidak penting. Fungsionalitas penting untuk perangkat atau
perangkat yang diinstal dengan paket driver ini tidak boleh bergantung pada tindakan
yang dijalankan yang berada di luar penginstalan perangkat.
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
Tidak didukung. INF tidak boleh memodifikasi entri registri global. Jika entri Jalankan
adalah menambahkan nilai tambah perangkat lunak ke sistem, aplikasi Anda harus
menjadi aplikasi Universal Windows Platform dan diinstal menggunakan direktif
AddSoftware dari bagian DDInstall.Software. Untuk informasi selengkapnya, lihat
Memasangkan driver dengan aplikasi Universal Windows Platform (UWP). Jika perangkat
lunak ini adalah layanan yang tidak perlu menyajikan UI apa pun, maka layanan Win32
dapat didaftarkan dari paket driver dengan arahan AddService. Saat mendaftarkan
layanan yang terkait dengan perangkat, layanan hanya boleh berjalan saat perangkat
ada. Layanan harus memiliki jenis awal 'permintaan mulai' dan harus menggunakan
direktif AddTrigger dari bagian penginstalan layanan untuk menyiapkan pemicu yang
akan menyebabkan layanan dimulai ketika perangkat ada di sistem. Ini dilakukan
dengan mengidentifikasi antarmuka perangkat yang akan diekspos driver pada
perangkat dan menggunakan direktif AddTrigger untuk menentukan bahwa layanan
harus dimulai ketika perangkat keras tersebut muncul. Pada runtime, layanan harus
memantau perangkat yang akan hilang. Jika perangkat dihapus dari sistem sehingga
layanan tidak perlu terus berjalan, layanan harus berhenti sendiri. Untuk mendaftar
pemberitahuan kedatangan dan penghapusan antarmuka perangkat, lihat
CM_Register_Notification.
INF
[DestinationDirs]
[ExampleDDInstall]
CopyFiles = Example_CopyFiles
[Example_CopyFiles]
ExampleFile.exe
Ini tidak didukung. INF tidak boleh menyalin file ke lokasi global. Direktori 'Program
Files' biasanya digunakan untuk menginstal aplikasi perangkat lunak, bukan driver. Jika
tujuan Anda adalah membangun dan menyediakan aplikasi pendamping untuk
perangkat Anda yang berkomunikasi dengan driver Anda, lihat panduan Aplikasi
Dukungan Perangkat Keras. Misalnya, aplikasi Anda dapat menjadi aplikasi Universal
Windows Platform dan diinstal menggunakan direktif AddSoftware dari bagian
DDInstall.Software. Lihat Memasangkan driver dengan aplikasi Universal Windows
Platform (UWP) untuk informasi selengkapnya. Jika entri CopyFiles tidak untuk
menambahkan aplikasi pendamping ke sistem dan file harus tetap sebagai bagian dari
paket driver, mereka perlu dibuat untuk 'dijalankan dari Driver Store'.
INF
[ExampleDDInstall.CoInstallers]
CopyFiles = CoInstallerCopyFilesSection
AddReg = Example_CoInstallers_AddReg
[CoInstallerCopyFilesSection]
ExampleCoInstall.dll
[Example_CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"ExampleCoInstall.dll,ExampleCoInstallEntryPo
int"
Sebagai gantinya, aplikasi Anda harus menjadi aplikasi Universal Windows Platform dan
diinstal menggunakan direktif AddSoftware dari bagian DDInstall.Software. Untuk
informasi selengkapnya, lihat Memasangkan driver dengan aplikasi Universal Windows
Platform (UWP). Direktif AddSoftware didukung pada Windows versi Windows 10 1703
dan yang lebih baru.
INF
[ExampleDDInstall]
AddReg = Example_Registry
[Example_Registry]
HKLM,SYSTEM\CurrentControlSet\Services\ServiceNotCreatedByThisInf\ExampleKey
, ExampleValue, %REG_DWORD%, 1
Tidak didukung. INF hanya boleh mengubah pengaturan pada layanan yang dibuat oleh
INF tersebut dan INF harus menghapus AddReg ini.
INF
[ExampleDDInstall.Services]
AddService = ExampleService,0x2,Example_Service_Inst
[Example_Service_Inst]
DisplayName = %SvcDesc%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %13%\ExampleBinary.sys
AddReg = Example_Service_Registry
[Example_Service_Registry]
HKR,,ExampleValue,%REG_DWORD%,0x00000040
HKR,CustomSubkey,ExampleValue,%REG_DWORD%,0x00000040
Agar sesuai dengan isolasi paket driver, direktif AddReg yang menyediakan kunci dan
nilai registri layanan hanya dapat memodifikasi kunci dan nilai di bawah subkuntang
Parameter layanan. Pengaturan perlu dipindahkan di bawah subkunci Parameter layanan
dan subkunci Parameter dapat diakses saat runtime dengan IoOpenDriverRegistryKey
menggunakan RegKeyType dari DriverRegKeyParameters. IoOpenDriverRegistryKey
didukung pada Windows versi Windows 10 1803 dan yang lebih baru.
INF
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "FriendlyName", ,
%APO_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "Copyright", ,
%MfgName%
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MajorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MinorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "Flags",
0x00010001, 0x0000000d
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%,
"MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%,
"MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%,
"MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%,
"MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "MaxInstances",
0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "NumAPOInterfaces",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%EXAMPLE_CLSID%, "APOInterface0", ,
"{b0a50980-ded6-4f45-84cb-19d2d1245f6d}"
Dalam topik ini kami menjelaskan cara menggunakan Visual Studio untuk mulai menulis
driver fungsi perangkat baru. Driver fungsi perangkat berbeda dari driver filter, driver
perangkat lunak, dan driver sistem file, yang kita bahas dalam topik lain. Untuk
mempelajari tentang driver fungsi perangkat dan bagaimana perbedaannya dari jenis
driver lainnya, lihat Apa itu Driver?, Memilih Model Driver, dan Node Perangkat dan
Tumpukan Perangkat.
Untuk memulai, pertama-tama tentukan di mana perangkat Anda cocok dalam daftar
teknologi yang dijelaskan dalam Teknologi Perangkat dan Driver. Untuk mempelajari
tentang model driver mana yang tersedia untuk perangkat Anda, lihat dokumentasi
untuk teknologi tertentu tersebut. Model driver yang direkomendasikan bervariasi dari
satu teknologi ke teknologi berikutnya. Untuk beberapa teknologi, dokumentasi
merekomendasikan penggunaan User Mode Driver Framework (UMDF) atau Kernel
Mode Driver Framework (KMDF). Untuk teknologi lain, dokumentasi menjelaskan cara
membuat minidriver yang merupakan bagian dari pasangan driver. Minidrivers pergi
dengan berbagai nama, termasuk miniport dan miniclass.
Selanjutnya, tentukan mana dari kasus berikut yang menjelaskan rekomendasi model
driver Anda dan ikuti langkah-langkahnya:
Jika teknologi perangkat Anda memiliki model minidriver, dan Anda tidak dapat
menemukan template tertentu untuk jenis minidriver Anda, template Windows Driver
Model (WDM) kemungkinan besar akan menjadi titik awal Anda. Lihat dokumentasi
khusus teknologi Anda untuk panduan. Dalam kasus yang jarang terjadi, Anda dapat
menggunakan KMDF untuk menulis minidriver, tetapi biasanya titik awalnya adalah
WDM.
2. Di Visual Studio, dalam kotak dialog Project Baru, di bawah Driver Windows, pilih
WDM.
4. Pada titik ini, Anda memiliki proyek driver WDM kosong. Di jendela Penjelajah
Solusi, pilih dan tahan (atau klik kanan) proyek driver Anda, dan pilih Tambahkan |
Item Baru.
5. Dalam kotak dialog Tambahkan Item Baru, pilih File C++ (.cpp), masukkan nama
untuk file Anda, dan pilih OK.
Nota Jika Anda ingin membuat file .c alih-alih file .cpp, masukkan nama yang
memiliki ekstensi .c .
6. Lihat dokumentasi untuk teknologi Anda untuk mempelajari tentang fungsi yang
perlu Anda terapkan. Saat Anda menerapkan dan mengatur fungsi Anda, Anda
mungkin memutuskan untuk menambahkan file tambahan .cpp atau .c.
Membuat Driver Filter Baru
Artikel • 13/12/2022 • 4 menit untuk membaca
Dalam topik ini kami menjelaskan cara menggunakan Visual Studio untuk mulai menulis
driver filter baru. Driver filter berbeda dari driver fungsi perangkat, driver perangkat
lunak, dan driver sistem file, yang kita bahas dalam topik lain. Untuk mempelajari
tentang driver filter dan perbedaannya dari jenis driver lainnya, lihat topik berikut.
Untuk memulai, pertama-tama tentukan model driver mana yang sesuai untuk driver
filter Anda. Untuk bantuan menentukan model mana yang terbaik untuk Anda, lihat
Memilih Model Driver. Jika Anda menulis driver filter untuk perangkat keras, tentukan di
mana perangkat Anda cocok dalam daftar teknologi yang dijelaskan dalam Teknologi
Perangkat dan Driver. Lihat dokumentasi untuk teknologi tertentu untuk melihat apakah
ada panduan untuk memilih model driver filter. Model driver filter yang
direkomendasikan bervariasi dari satu teknologi ke teknologi berikutnya. Untuk
beberapa teknologi, dokumentasi merekomendasikan penggunaan User Mode Driver
Framework (UMDF), Kernel Mode Driver Framework (KMDF), atau Windows Driver
Model (WDM). Untuk teknologi lain, dokumentasi memberikan detail eksplisit tentang
cara menulis driver filter. Beberapa teknologi memiliki model filter mini. Untuk beberapa
teknologi, mungkin tidak ada rekomendasi untuk model driver filter.
Selanjutnya, tentukan mana dari kasus berikut yang menjelaskan rekomendasi model
driver Anda dan ikuti langkah-langkahnya:
Jika teknologi perangkat Anda memiliki model filter tertentu atau model minifilter, dan
Anda tidak dapat menemukan templat untuk jenis driver filter, lihat dokumentasi khusus
teknologi untuk panduan untuk menentukan apakah akan menggunakan UMDF, KMDF,
atau WDM.
2. Di Visual Studio, dalam kotak dialog Project Baru, di bawah Driver Windows, pilih
WDM.
4. Pada titik ini, Anda memiliki proyek driver WDM kosong. Di jendela Penjelajah
Solusi, pilih dan tahan (atau klik kanan) proyek driver Anda, dan pilih Tambahkan |
Item Baru.
5. Dalam kotak dialog Tambahkan Item Baru, pilih File C++ (.cpp), masukkan nama
untuk file Anda, dan pilih OK.
Nota Jika Anda ingin membuat file .c alih-alih file .cpp, masukkan nama yang
memiliki ekstensi .c .
6. Terapkan fungsi yang diperlukan oleh filter Anda. Saat Anda menerapkan dan
mengatur fungsi Anda, Anda mungkin memutuskan untuk menambahkan file
tambahan .cpp atau .c.
Nota Saat Anda membuat driver KMDF atau UMDF baru, Anda harus memilih
nama driver yang memiliki 32 karakter atau kurang. Batas panjang ini didefinisikan
dalam wdfglobals.h.
4. Terapkan fungsi yang diperlukan oleh filter Anda. Buat file .c atau .cpp baru sesuai
kebutuhan.
Jika Anda tidak yakin template mana yang akan digunakan, pertimbangkan untuk
membaca atau memposting ke forum WDK dan Pengembangan Driver Windows
Perangkat Keras .
Pemesanan driver filter perangkat
Artikel • 13/12/2022 • 6 menit untuk membaca
Menggunakan satu daftar nilai yang diurutkan kurang ideal, terutama ketika
AddReghanyamenambahkanke akhir, karena ada konsekuensi negatif ketika lebih dari
satu driver menambahkan filter ke perangkat yang sama.
Dalam skenario di mana setidaknya ada satu Extension INF yang terlibat, jika INF secara
tidak benar menggunakan AddReg (dengan kata lain tidak menggunakan bendera
penambahan), mereka dapat menghapus filter yang ditambahkan oleh INF yang
berbeda.
Selain itu, beberapa Extension INF dapat menambahkan filter, dan pengurutan relatif
filter tersebut mungkin penting; namun, platform Plug and Play (PnP) tidak menjamin
urutan penginstalan untuk ekstensi. Hasilnya adalah urutan "tambahan" tidak dijamin.
Infrastruktur didasarkan pada metode pendaftaran filter baru untuk menentukan driver
pesanan apa yang akan disertakan dalam tumpukan perangkat. Metode baru tidak
merusak kompatibilitas untuk cara lama menambahkan filter. Namun, hal ini
memungkinkan filter baru untuk berpindah ke mekanisme pendaftaran yang lebih kuat
dan fleksibel.
Metode ini diaktifkan dengan meminta INF dasar menentukan daftar yang diurutkan
dari satu atau beberapa "level". INF dasar dan INF ekstensi apa pun dapat mendaftarkan
filter deklaratif melalui arahan INF baru yang menentukan nama dan tingkat layanan
tempat filter berada. Filter atas dan bawah masing-masing diwakili oleh daftar tingkat
yang diurutkan masing-masing.
Daftar filter atas dan bawah ini dibuat dengan mengurutkan semua driver filter menurut
tingkatnya. Urutan filter dalam setiap tingkat harus dianggap arbitrer, di mana tidak ada
dependensi yang dapat diambil pada urutan filter dalam tingkat tertentu. Dalam
skenario di mana urutan relatif dua filter harus dijamin, filter harus didaftarkan ke
tingkat yang berbeda.
INF dasar driver perangkat mendeklarasikan dua tingkat filter atas, A dan B (dalam
urutan tersebut). Dalam INF Ekstensi terkait INF dasar, dua filter ditambahkan ke
masing-masing dari dua tingkat.
Seperti yang ditunjukkan dalam contoh, Filter3 bisa datang sebelum Filter5 atau bisa
datang setelah Filter5. Bagaimanapun, Filter3 dan Filter5 akan datang sebelum filter di
tingkat berikutnya, "B".
Saat merancang rangkaian tingkat yang dapat didaftarkan filter, daripada membuat
serangkaian tingkat demi pemesanan, tingkat harus diberi nama dan diurutkan
sedemikian rumit sehingga mereka memetakan ke niat filter. Misalnya, perangkat I/O
dapat menentukan tingkat Enkripsi, tempat filter enkripsi apa pun harus didaftarkan. Ini
memungkinkan niat filter untuk mudah dipahami dan dikelola, dan membuat tumpukan
lebih kuat terhadap perubahan yang melanggar pada driver fungsi.
7 Catatan
Bahkan tanpa tingkat yang ditentukan oleh INF dasar, filter deklaratif dapat
mendaftar hanya sebagai atas atau bawah. Ketika tingkat tidak ditentukan, ini
secara logis setara dengan menambahkan filter ke akhir nilai registri
UpperFilters/LowerFilters. Ketika tingkat didefinisikan, salah satu tingkat harus
ditandai sebagai tingkat default di driver dasar, dan dalam hal ini filter akan
didaftarkan ke tingkat tersebut.
Skenario
Pertimbangkan driver perangkat I/O yang mengenkripsi data yang masuk melalui
tumpukan. Implementasi umum dapat menggunakan driver filter yang lebih rendah
tepat di bawah driver fungsi untuk menyelesaikan ini. Untuk memastikan bahwa filter
enkripsi ditempatkan pada posisi yang tepat yang diinginkan penulis driver, mereka
dapat menggunakan filter deklaratif seperti yang ditunjukkan di bawah ini:
INF Dasar menetapkan dua tingkat filter yang lebih rendah, "Enkripsi" dan "Pemantauan"
(Default). "Pemantauan" (Default) dalam contoh ini adalah filter lain yang lebih rendah
yang mungkin ada untuk perangkat khusus ini. Dengan secara eksplisit menempatkan
driver filter "Enkripsi" di tingkat "Enkripsi", driver memastikan bahwa urutan tumpukan
perangkat yang dihasilkan akan menempatkan driver filter "Enkripsi" sebelum filter lain
yang lebih rendah dan segera mengikuti driver fungsi.
Mari kita ambil contoh satu langkah lebih jauh. Bayangkan versi driver yang lebih baru
keluar dan penulis telah membangun enkripsi ke driver fungsi. Ini menghilangkan
kebutuhan akan driver filter "Enkripsi" terpisah. Penulis hanya perlu menghapus tingkat
yang berisi filter "Enkripsi" dari BASE INF dan ketika driver diperbarui, tumpukan
dibangun lagi secara dinamis.
Jika filter menyatakan dirinya berada dalam tingkat eksplisit yang tidak ada, filter tidak
berakhir di tumpukan perangkat. Dalam contoh, INF Dasar telah diperbarui dan
meskipun Extension INF tetap sama, tumpukan perangkat yang dihasilkan
mengecualikan filter "Enkripsi" karena tidak termasuk dalam deklarasi tingkat BASE INF.
Beberapa sumber filter tidak memiliki informasi posisi apa pun, yaitu filter yang
ditambahkan melalui nilai registri UpperFilters/LowerFilters warisan, atau melalui sintaks
deklaratif khusus posisi (dibahas di bawah).
Untuk mendukung penggabungan yang efektif saat tidak memiliki informasi posisi,
informasi tambahan harus ditentukan oleh INF Dasar: tingkat filter default. Tingkat filter
default adalah posisi di mana filter, tingkat kurang atau informasi posisi, akan disisipkan.
INF
Level Order: A, B, C
DefaultFilterLevel: C
Menentukan tingkat default sebagai tingkat akhir menunjukkan bahwa filter apa pun
yang tidak memiliki informasi posisi akan ditambahkan ke daftar filter. Atau, pembuat
driver mungkin ingin tumpukan selalu diakhiri dengan filter yang secara eksplisit
terdaftar ke tingkat C:
INF
Level Order: A, B, C
DefaultFilterLevel: B
Karena tingkat filter default diatur ke B, filter tambahan apa pun tanpa informasi posisi
akan dimasukkan antara filter A dan filter C.
Sintaks
Mendaftarkan filter
Lihat bagian INF DDInstall.Filters dan dokumentasi direktif AddFilter untuk informasi
selengkapnya.
INF
[DDInstall.Filters]
FilterLevel OR FilterPosition dapat ditentukan dengan salah satu dari dua cara:
Opsi 1:
INF
[FilterSection]
FilterLevel=<LevelName>
Opsi 2:
INF
[FilterSection]
FilterPosition=Upper/Lower
[DDInstall.Filters]
Bendera saat ini tidak digunakan dan harus dibiarkan kosong atau diatur ke 0.
[Bagian Filter]
Bagian filter harus berisi tepat salah satu dari dua arahan berikut: FilterLevel atau
FilterPosition.
FilterLevel adalah tempat khusus untuk menyisipkan filter perangkat pada tumpukan,
yang ditentukan oleh INF Dasar. Dalam setiap tingkat, urutan filter bersifat arbitrer.
FilterPosition digunakan dalam kasus di mana kelas memiliki satu tempat khusus untuk
filter pihak ketiga yang akan disisipkan.
[DDInstall.HW]
AddReg = FilterLevel_Definition
[FilterLevel_Definition]
HKR,,UpperFilterLevels,%REG_MULTI_SZ%,"LevelA","LevelB","LevelC"
HKR,,UpperFilterDefaultLevel,,"LevelC"
HKR,,LowerFilterLevels,%REG_MULTI_SZ%,"LevelD","LevelE","LevelF"
HKR,,LowerFilterDefaultLevel,,"LevelE"
Daftar deklaratif lengkap filter untuk perangkat tertentu dapat diambil dengan
mengkueri properti berikut:
INF
DEVPKEY_Device_CompoundUpperFilters
DEVPKEY_Device_CompoundLowerFilters
INF
[DDInstall.HW]
AddReg = Filters
[Filters]
Dengan sintaks baru yang telah diperkenalkan, bagian di atas secara logis mirip dengan:
INF
[DDInstall.Filters]
AddFilter = MyFilter,,MyUpperFilterInstall
[MyUpperFilterInstall]
FilterPosition = Upper
Ini menentukan bahwa filter "MyFilter" harus ditambahkan ke daftar filter atas. Jika INF
dasar telah menentukan tingkat filter, menggunakan FilterPosition akan mendaftarkan
filter di tingkat default untuk posisi tersebut.
Jika tingkat filter tidak ditentukan, filter ini akan didaftarkan sebagai filter atas dalam
urutan arbitrer.
Lihat juga
Bagian INF DDInstall.Filters
Direktif AddFilter
Membuat Driver Perangkat Lunak Baru
Artikel • 13/12/2022 • 2 menit untuk membaca
Dalam topik ini kami menjelaskan cara menggunakan Visual Studio untuk mulai menulis
driver perangkat lunak baru. Driver perangkat lunak berbeda dari driver fungsi
perangkat, driver filter, dan driver sistem file, yang kita bahas dalam topik lain. Untuk
informasi lebih lanjut tentang driver perangkat lunak dan bagaimana mereka berbeda
dari jenis driver lain, lihat Apa itu Driver? dan Memilih Model Driver.
Untuk memulai, pertama-tama tentukan model driver mana yang sesuai untuk driver
perangkat lunak Anda. Ketiga opsi tersebut adalah Kernel Mode Driver Framework
(KMDF), model driver NT lama, dan Windows Driver Model (WDM). Untuk bantuan
menentukan model mana yang terbaik untuk Anda, lihat Memilih Model Driver.
7 Catatan
Saat Anda membuat driver KMDF baru, Anda harus memilih nama driver yang
memiliki 32 karakter atau kurang. Batas panjang ini didefinisikan dalam
wdfglobals.h.
5. Pada titik ini, Anda memiliki proyek driver yang menerapkan kode umum yang
diperlukan oleh sebagian besar driver KMDF. Sekarang Anda dapat menyediakan
kode yang khusus untuk driver perangkat lunak Anda.
2. Di Visual Studio, dalam kotak dialog Project Baru, di bawah Driver Windows, pilih
WDM | Pengemudi WDM kosong.
7 Catatan
Anda tidak akan menulis driver WDM, tetapi Anda memerlukan template
Driver WDM Kosong .
4. Pada titik ini, Anda memiliki proyek driver WDM kosong. Di jendela Penjelajah
Solusi, pilih dan tahan (atau klik kanan) proyek driver Anda, dan pilih Tambahkan |
Item Baru.
5. Dalam kotak dialog Tambahkan Item Baru, pilih File C++ (.cpp), masukkan nama
untuk file Anda, dan pilih OK.
7 Catatan
Jika Anda ingin membuat file .c alih-alih file .cpp, masukkan nama yang
memiliki ekstensi .c .
6. Termasuk ntddk.h.
7. Terapkan fungsi yang diperlukan oleh driver perangkat lunak Anda. Saat Anda
menerapkan dan mengatur fungsi Anda, Anda mungkin memutuskan untuk
menambahkan file header dan file .cpp atau .c tambahan.
2. Di Visual Studio, dalam kotak dialog Project Baru, di bawah Driver Windows, pilih
WDM.
4. Pada titik ini, Anda memiliki proyek driver WDM kosong. Di jendela Penjelajah
Solusi, pilih dan tahan (atau klik kanan) proyek driver Anda, dan pilih Tambahkan |
Item Baru.
5. Dalam kotak dialog Tambahkan Item Baru, pilih File C++ (.cpp), masukkan nama
untuk file Anda, dan pilih OK.
7 Catatan
Jika Anda ingin membuat file .c alih-alih file .cpp, masukkan nama yang
memiliki ekstensi .c .
6. Termasuk wdm.h.
7. Terapkan fungsi yang diperlukan oleh driver perangkat lunak Anda. Saat Anda
menerapkan dan mengatur fungsi Anda, Anda mungkin memutuskan untuk
menambahkan file header dan file .cpp atau .c tambahan.
Membuat driver primitif baru
Artikel • 13/12/2022 • 3 menit untuk membaca
Gunakan driver primitif untuk menangani dan mengelola perangkat lunak yang
menggunakan instalasi berbasis INF tetapi tidak harus terkait dengan perangkat keras
tertentu.
Karena perangkat lunak ini tidak terkait dengan perangkat keras, mereka akan
menginstal pada seluruh sistem terlepas dari perangkat keras. Akibatnya, tidak ada
jaminan bahwa perangkat lunak ini diinstal, dihapus, atau ditangani dengan benar pada
peningkatan OS.
Dimulai dengan Windows 10 versi 1903, platform Plug and Play menangani dan
mengelola jenis paket perangkat lunak ini sebagai entitas tingkat atas, menghasilkan
peningkatan keandalan dan menjamin perilaku yang tepat dari perangkat lunak
tersebut, terutama selama peningkatan OS dan mengatur ulang skenario.
Jenis perangkat lunak yang memanfaatkan dukungan platform baru ini disebut driver
primitif. Driver primitif terus menggunakan instalasi berbasis INF dan platform yang
mendasarinya menggunakan Driver Store untuk melacak semua file yang relevan.
Platform Plug and Play yang mendasarinya kemudian dengan anggun menginstal,
menghapus instalasi, dan mempertahankan status driver pada peningkatan OS.
Secara konseptual, INF ini dikelola secara berbeda. Sebelumnya, [DefaultInstall] (dan
sering, [DefaultUninstall]) diproses oleh SetupAPI dengan cara seperti skrip, di mana INF
digunakan sebagai manifes dan SetupAPI menjalankan instruksi di bagian yang relevan
atas nama penelepon.
Bagian [DefaultInstall] harus didekorasi arsitektur, dan tidak ada versi yang tidak
didekorasi yang mungkin ada.
Benar: [DefaultInstall.NTamd64]
Salah: [DefaultInstall]
Driver juga harus menggunakan Dirid 13 untuk menentukan Driver Store dengan benar
sebagai tujuan yang diinginkan untuk diinstal.
Kompatibilitas Lama
Sementara [DefaultUninstall] dilarang di Driver Primitif, pengecualian dibuat demi
kompatibilitas OS tingkat bawah. Windows memperkenalkan direktif INF yang
menyebabkan versi OS yang mendukung Driver Primitif mengabaikan bagian
[DefaultUninstall]. Jika paket driver Anda perlu mendukung versi OS tingkat bawah,
sertakan sintaks berikut untuk memastikan bahwa platform akan menangani kasus
tersebut dengan tepat:
INF
[DefaultUninstall.NTamd64]
LegacyUninstall=1
Dimulai dengan versi Windows 10 1903, jika Anda melewati bagian [DefaultInstall] atau
[DefaultUninstall] yang didekorasi arsitektur ke API InstallHInfSection di setupapi.dll,
paket driver akan diperiksa untuk menentukan apakah itu mendukung fungsionalitas
driver primitif. Jika mendukung fungsionalitas driver primitif, alih-alih memproses
bagian yang ditentukan dengan cara lama, INF diteruskan ke DiInstallDriver atau
DiUninstallDriver, sebagaimana mestinya. Dengan cara ini, installer tunggal dapat
menggunakan driver primitif pada versi OS yang kompatibel dan mempertahankan
dukungan untuk versi OS sebelumnya.
INF berikut akan menerima kesalahan 1297 di InfVerif karena tidak diinstal pada
perangkat keras apa pun:
ini
[Manufacturer]
[Driver.NTx86]
%DeviceDesc% = InstallSection_32,
[Driver.NTamd64]
%DeviceDesc% = InstallSection_64,
[InstallSection_64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[InstallSection_64.Services]
[InstallSection_32]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[InstallSection_32.Services]
INF di atas dapat dikonversi ke INF berbasis [DefaultInstall], seperti yang ditunjukkan di
bawah ini.
ini
[DefaultInstall.NTamd64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[DefaultInstall.NTamd64.Services]
AddService = MyService,, MyService_Install
[DefaultInstall.NTx86]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[DefaultInstall.NTx86.Services]
WDK terintegrasi dengan Microsoft Visual Studio, dan menggunakan compiler dan
membangun alat yang sama yang Anda gunakan untuk membangun solusi dan proyek
Visual Studio. MSBuild menggantikan Windows Build Utility (Build.exe) yang digunakan
dalam versi WDK sebelum Windows Driver Kit (WDK) 8.
Untuk mengonversi driver yang dibuat dengan WDK versi sebelumnya, buat solusi driver
Windows baru di Visual Studio menggunakan salah satu templat driver Windows yang
disediakan. Jika Anda mulai dengan template untuk model driver Anda, struktur proyek
akan berada di tempat dan set alat platform yang benar akan dipilih. Anda kemudian
dapat menambahkan file sumber Anda ke solusi. Untuk informasi tentang memilih
templat, lihat Membuat Pengandar Fungsi Perangkat Baru, Membuat Pengandar Filter
Baru, atau Membuat Pengandar Perangkat Lunak Baru.
Topik terkait
WDK dan lingkungan Visual Studio membangun
ProjectUpgradeTool
MSBuild
Panduan: Menggunakan MSBuild
Membuat Pengandar Fungsi Perangkat Baru
Membuat Driver Filter Baru
Membuat Driver Perangkat Lunak Baru
Menggunakan Visual Studio atau
MSBuild untuk membangun driver
Artikel • 13/12/2022 • 4 menit untuk membaca
Penting Mulai Windows Driver Kit (WDK) 8, MSBuild menggantikan Windows Build
Utility (Build.exe). WDK sekarang menggunakan alat kompilator dan build yang sama
dengan yang Anda gunakan untuk membangun proyek Visual Studio. Proyek driver
yang dibangun dengan versi WDK sebelumnya harus dikonversi agar berfungsi di
lingkungan Visual Studio. Anda dapat menjalankan utilitas konversi dari baris perintah,
atau Anda dapat mengonversi driver yang ada dengan membuat proyek Visual Studio
baru dari sumber yang ada. Untuk informasi selengkapnya, lihat Membuat Driver Dari
File Sumber yang Ada dan WDK dan lingkungan build Visual Studio.
Catatan Anda dapat mengonversi proyek dan solusi yang Anda buat dengan WDK 8
atau Windows Driver Kit (WDK) 8.1 untuk bekerja dengan Windows Driver Kit (WDK) 10
dan Visual Studio 2019. Sebelum Anda membuka proyek atau solusi, jalankan
ProjectUpgradeTool. ProjectUpgradeTool mengonversi proyek dan solusi sehingga
dapat dibangun menggunakan WDK 10.
Untuk informasi tentang mengelola dan mengedit konfigurasi build, lihat Membangun
di Visual Studio.
1. Pastikan Anda memiliki versi SDK dan WDK yang sama yang terinstal di komputer
Anda.
2. Buka proyek atau solusi driver di Visual Studio.
3. Pilih dan tahan (atau klik kanan) solusi di Penjelajah Solusi dan pilih Configuration
Manager.
4. Dari Configuration Manager, pilih konfigurasi solusi Aktif (misalnya, Debug atau
Rilis) dan platform solusi Aktif (misalnya, Win32) yang sesuai dengan jenis build
yang Anda minati.
5. Pilih dan tahan (atau klik kanan) proyek Avshws dan pilih Properti. Buka Driver
Pengaturan > Umum, dan atur Versi OS Target dan Platform Target.
6. Konfigurasikan properti proyek untuk driver atau paket driver Anda. Anda dapat
mengatur properti untuk penyebaran, penandatanganan driver, atau tugas lainnya.
Untuk informasi selengkapnya, lihat Mengonfigurasi properti proyek untuk driver
dan paket driver Anda.
7. Dari menu Build , pilih Build Solution (Ctrl+Shift+B).
Dari jendela ini Anda dapat menggunakan MSBuild.exe untuk membangun proyek
Visual Studio dengan menentukan file proyek (.vcxproj) atau solusi (.sln).
2. Navigasi ke direktori proyek dan masukkan perintah MSbuild untuk target Anda.
Misalnya, untuk melakukan build bersih proyek driver Visual Studio yang disebut
MyDriver.vcxproj menggunakan Platform dan Konfigurasi default, navigasikan ke
direktori proyek dan masukkan perintah MSBuild berikut:
C++
C++
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release>
/p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d
/p:TargetVersion=OS
C++
WDK menyediakan sejumlah alat baris perintah, seperti Stampinf dan WPP Preprocessor
(WPP Tracing), yang biasanya disertakan dalam proses build. Alat-alat ini tidak
didistribusikan dengan Visual Studio. Untuk menggabungkan alat-alat ini dengan
lingkungan build Visual Studio mereka dibungkus sebagai tugas WDK untuk MSBuild.
Jika Anda menggunakan salah satu templat driver atau memiliki driver yang sudah ada
yang telah Anda konversi, halaman properti ini mungkin sudah ada untuk proyek Anda.
Jika tidak, halaman properti secara otomatis ditambahkan ke proyek Anda saat Anda
menambahkan jenis file terkait ke proyek atau solusi (misalnya, file .mc atau .man untuk
pengkompilasi pesan). Untuk informasi selengkapnya, lihat WDK dan lingkungan build
Visual Studio
Anda dapat mengatur properti untuk driver individual atau untuk seluruh paket driver.
Tabel berikut ini memperlihatkan beberapa properti yang tersedia yang dapat Anda
konfigurasi khusus untuk driver dan paket driver.
Menandatangani properti untuk file driver Properti penandatanganan untuk paket driver
individual (lihat Menandatangani Driver) (lihat Menandatangani Driver)
Penghitung Properti Praprosesor Manifes untuk Properti Penyebaran untuk Proyek Paket Driver
Proyek Driver (untuk CTRPP) (lihat Menyebarkan Driver ke Komputer Uji)
Properti Pengaturan Model Driver untuk Proyek Properti Pemverifikasi Driver untuk Proyek
Driver Paket Driver
Properti Pengkompilasi Pesan untuk Proyek Properti Pemverifikasi KMDF untuk Proyek
Driver Paket Driver
Properti Stampinf untuk Proyek Driver Properti Pemverifikasi UMDF untuk Proyek
Paket Driver
WPP Preprocessor (Pelacakan WPP) Properti Inf2Cat untuk Proyek Paket Driver
(lihat alat Inf2Cat )
1. PilihOpsiAlat>.
2. Pilih folder Project dan Solusi dan pilih Bangun dan Jalankan.
3. Ubah opsi untuk verbositas output build proyek MSBuild dan verbositas file log
build proyek MSBuild. Secara default, ini diatur ke Minimal.
Topik terkait
Bangunan di Visual Studio
Membangun Driver untuk Berbagai Versi Windows
Menggunakan Microsoft C Runtime dengan Driver User-Mode dan Aplikasi
Desktop
ProjectUpgradeTool
MSBuild
Membuat Driver Dari File Sumber yang Ada
WDK dan lingkungan build Visual Studio
Menandatangani Driver
Menyebarkan Driver ke Komputer Uji
Bangunan untuk OneCore
Artikel • 13/12/2022 • 3 menit untuk membaca
Saat Anda menggunakan Visual Studio untuk membuat kode mode pengguna untuk
Windows 10, Anda dapat menyesuaikan opsi linker untuk menargetkan versi Windows
tertentu. Pertimbangkan faktor-faktor berikut:
Haruskah biner yang dibangun hanya berjalan pada versi terbaru dari Windows?
Atau haruskah itu berjalan pada versi sebelumnya, seperti Windows 7?
Misalnya, saat Anda membuat proyek driver UMDF v2 baru, Visual Studio tautan secara
OneCoreUAP.lib default. Ini menghasilkan biner yang berjalan pada versi terbaru
Windows, dan memungkinkan penambahan fungsionalitas UWP.
Namun, tergantung pada kebutuhan Anda, Anda dapat memilih untuk menautkan ke
OneCore.lib . Tabel berikut menunjukkan skenario yang berlaku untuk setiap pustaka:
Pustaka Skenario
OneCore.lib Semua edisi Windows 7 dan yang lebih baru, tidak ada dukungan UWP
OneCoreUAP.lib Windows 7 dan yang lebih baru, edisi UWP (Desktop, IoT, HoloLens, tetapi
bukan Nano Server) dari Windows 10
7 Catatan
Untuk mengubah opsi linker di Visual Studio, pilih properti proyek dan navigasikan
ke Dependensi Linker-Input-Additional>>.
Error: <Binary Name> has unsupported API call to <Module Name><Api Name>
Jika aplikasi atau driver dasar Anda perlu berjalan di Windows 10 serta versi
Windows yang lebih lama, Anda harus menghapus panggilan API dalam kategori
di atas.
Panggilan API dalam kategori di atas mengkompilasi dengan baik, tetapi mungkin
tidak berperilaku seperti yang diharapkan saat runtime, tergantung pada sistem
operasi target. Untuk melewati persyaratan API Layering untuk Driver Windows,
bungkus panggilan ini dengan IsApiSetImplemented.
Ini memungkinkan Anda untuk mengkompilasi kode Anda tanpa kesalahan. Kemudian
saat runtime, jika mesin target tidak memiliki API yang diperlukan,
IsApiSetImplemented mengembalikan FALSE.
Sampel kode ini gagal memenuhi persyaratan API Layering dari Windows Drivers
dengan kesalahan ApiValidator berikut:
C++
#include <windows.h>
#include <stdio.h>
#include <Wtsapi32.h>
if (WTSEnumerateSessionsW(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pInfo,
&count))
WTSFreeMemory(pInfo);
else
return 0;
C++
C++
#include <windows.h>
#include <stdio.h>
#include <Wtsapi32.h>
if (!IsApiSetImplemented("ext-ms-win-session-wtsapi32-l1-1-0"))
wprintf(L"IsApiSetImplemented on ext-ms-win-session-wtsapi32-l1-1-0
returns FALSE\n");
else
if (WTSEnumerateSessionsW(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pInfo,
&count))
WTSFreeMemory(pInfo);
}
else
return 0;
Jika Anda menulis driver untuk berbagai versi Windows, bagian berikut memberikan
beberapa panduan tentang bagaimana Anda harus membangun driver tersebut
menggunakan Windows Driver Kit (WDK), Visual Studio, dan MSBuild.
Jika Anda menargetkan Windows 7, Windows 8, atau Windows 8.1, atur TargetVersion
menggunakan Configuration Manager atau secara manual di file .vcxproj, misalnya
<TargetVersion>Windows7</TargetVersion> .
Jika Anda menargetkan Windows 10 atau Windows 11, tetapkan TargetVersion dan
_NT_TARGET_VERSION, misalnya <TargetVersion>Windows10</TargetVersion>
<_NT_TARGET_VERSION>0xA000006</_NT_TARGET_VERSION> .
Buat prototipe untuk petunjuk ke fungsi yang harus dipanggil driver Anda secara
kondisional.
Jika Anda memiliki driver WDM, atau driver mode kernel non-KMDF, dan Anda
menargetkan Windows 8.1 atau Windows 8 tetapi juga ingin menjalankan versi
Windows yang lebih lama, Anda perlu mengganti opsi linker
$(KernelBufferOverflowLib). Saat Anda memilih konfigurasi Windows 8 atau
Windows 8.1, driver ditautkan dengan BufferOverflowFastFailK.lib, yang tidak
tersedia di versi Windows sebelumnya. Untuk Windows 7 dan Vista, Anda harus
menautkan dengan BufferOverflowK.lib sebagai gantinya.
Menggunakan MSBuild:
C++
Menggunakan Notepad, atau editor teks lain, buka file proyek driver (*.vcxproj).
Dalam file proyek, temukan <PropertyGroup> untuk konfigurasi yang didukung
driver Anda, dan tambahkan baris berikut untuk mengganti opsi penautan default:
XML
XML
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelB
ufferOverflowLib>
Misalnya, jika driver Anda mendukung Windows 8.1 dan Windows 8 debug dan
rilis build, bagian konfigurasi tersebut akan terlihat seperti berikut:
XML
XML
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1
Debug|Win32'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelB
ufferOverflowLib>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1
Release|Win32'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelB
ufferOverflowLib>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8
Debug|Win32'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelB
ufferOverflowLib>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8
Release|Win32'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelB
ufferOverflowLib>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
</PropertyGroup>
Topik terkait
Menulis driver untuk berbagai versi Windows
Membangun Driver
Membangun Driver Arm64 dengan
WDK
Artikel • 13/12/2022 • 2 menit untuk membaca
Windows 10 dapat berjalan pada mesin yang didukung oleh prosesor Arm64. Namun,
karena Windows 10 di Arm tidak mendukung emulasi driver x86 kernel-mode atau
UMDF, Anda harus mengkompilasi ulang driver ini ke Arm64 menggunakan instruksi di
bawah ini.
Siapkan
1. Unduh Visual Studio 2017 atau 2019 . Anda akan membutuhkan minimal versi
15.9.
2. Pada menu mulai Windows, ketik Visual Studio Installer. Kemudian pada tab
Beban Kerja , pilih Pengembangan desktop dengan C++.
5. Unduh SDK Windows. Pastikan Anda memiliki SDK versi 16299 (Windows 10, versi
1709) atau yang lebih baru.
6. Unduh WDK. Pastikan Anda memiliki WDK versi 16299 atau yang lebih baru.
4. Dari Jenis atau Pilih Platform baru, pilih Arm64. Salin pengaturan dari Win32. Pilih
OK dan Tutup.
Lihat juga
Men-debug Arm64
Windows 10 di Arm
Panduan Memulai HLK Arm64
Menggunakan WDK Enterprise
Artikel • 13/12/2022 • 2 menit untuk membaca
Enterprise Windows Driver Kit (Enterprise WDK) adalah lingkungan build baris perintah
yang tidak memerlukan instalasi apa pun sebelum digunakan. Setelah Mengunduh
EWDK, Anda dapat mengelolanya dengan perangkat lunak kontrol versi atau Anda
dapat zip file dan menyalin sesuai kebutuhan. File .zip yang dibuat dengan WDK
Enterprise berisi semua kompiler, tautan, alat build, header, dan libs yang diperlukan
untuk membangun proyek driver berbasis Visual Studio.
WDK Enterprise berisi elemen yang diperlukan untuk membangun driver dan aplikasi uji
driver Win32 dasar. Gunakan editor kode favorit Anda untuk memodifikasi kode sumber
dan file proyek. Karena berbasis baris perintah, Enterprise WDK tidak memiliki beberapa
fitur yang dimasukkan ke dalam Visual Studio, seperti IDE, penyebaran driver dan
pengujian driver.
Memulai
7 Catatan
Mulai Windows 10 versi 1709, Enterprise WDK berbasis ISO. Untuk memulai, unduh
dan pasang ISO, lalu jalankan LaunchBuildEnv .
cd directory_containing_project_files
Msbuild projectname.vsproj
Lihat juga
Referensi MSBuild
Memasang Lingkungan Build WDK 8.1 di
Lab
Artikel • 13/12/2022 • 2 menit untuk membaca
Windows Driver Kit (WDK) 8.1 menyediakan fitur yang memungkinkan Anda menyalin
komponen Visual Studio dan WDK ke lokasi baru dan kemudian meluncurkan
lingkungan build dari baris perintah. Dari sini Anda dapat membangun driver Windows
tanpa harus menjalankan program instalasi Visual Studio atau WDK.
Anda mungkin menemukan fitur ini berguna jika Anda perlu mengintegrasikan WDK
dengan proses pembuatan Anda, atau jika Anda ingin mendistribusikan proses
pembuatan di laboratorium atau lingkungan pengujian.
Nota Anda hanya dapat menggunakan fitur ini untuk membangun driver dan aplikasi
yang menggunakan C dan C ++. Fitur ini tidak dapat digunakan untuk kode terkelola
atau aplikasi UWP.
1. Unduh Visual Studio Professional 2013 atau Visual Studio Ultimate 2013 .
Unduh Tata Letak Produk (misalnya, vs_ultimate_download.exe). Ketika Anda
ditanya apakah Anda ingin menjalankan atau menyimpan
vs_ultimate_download.exe, pilih Jalankan lalu pilih opsi unduh dan tentukan jalur
unduhan sebagai C:\VSSetup (ini membuat langkah selanjutnya lebih mudah). Pilih
Unduh untuk mengunduh dan menginstal salinan lokal tata letak DVD di
komputer.
2. Unduh SDK mandiri. Saat Anda ditanya apakah Anda ingin menjalankan atau
menyimpan sdksetup.exe, pilih Jalankan lalu tentukan lokasi unduhan sebagai
C:\Kits\SDK. Pilih Berikutnya dan ikuti petunjuk untuk mengunduh SDK mandiri.
3. Unduh WDK 8.1. Saat Anda ditanya apakah Anda ingin menjalankan atau
menyimpan wdksetup.exe, pilih Jalankan lalu tentukan lokasi unduhan sebagai
C:\Kits\WDK. Pilih Berikutnya dan ikuti petunjuk untuk mengunduh WDK. Jika
Anda telah menginstal WDK di komputer, program instalasi web akan memberi
tahu Anda bahwa fitur yang diinstal pada komputer sudah diperbarui. Untuk
mengunduh file penyiapan WDK sehingga Anda dapat menyebarkan lingkungan
build, pilih Berikutnya dan tentukan jalur C:\Kits\WDK .
1. Unduh BuildLabSupportfiles.zip .
2. Ekstrak konten file terkompresi ke komputer Anda. File yang diekstraksi termasuk
direktori BuildLabSupport dan menyertakan file penyiapan dan utilitas yang Anda
butuhkan.
Buka jendela Command Prompt dengan hak istimewa yang ditinggikan (Jalankan
sebagai administrator) dan buka direktori tempat Anda mengekstrak file
dukungan lab build. Skrip perintah PowerShell setup.ps1 ada di < direktori
root>\BuildLabSupport.
PowerShell
C++
3. Gunakan perintah MSBuild untuk membangun proyek dan solusi driver Anda.
Contohnya:
C++
Topik terkait
Membangun Driver
MSBuild
Menggunakan Microsoft C Runtime
dengan Driver User-Mode dan Aplikasi
Desktop
Artikel • 13/12/2022 • 3 menit untuk membaca
Jika Anda membangun aplikasi atau driver untuk Windows 10, Anda hanya perlu
membaca bagian ini. Jika Anda menggunakan versi Visual Studio lebih awal dari Visual
Studio 2015, lewati bagian ini dan mulailah dengan Mendistribusikan Kembali Runtime C
(berlaku sebelum Visual Studio 2015).
Mulai tahun Visual Studio 2015, Universal C Runtime (UCRT) mencakup runtime C.
Bagian lain yang diperlukan untuk program lengkap (Fitur Bahasa C / C ++,
Perpustakaan C ++) disediakan oleh Visual Studio di VC ++ Redistributable. Untuk
menghindari persyaratan redistribusi runtime, potongan-potongan tersebut
dihubungkan secara statis.
2 Peringatan
Saat membangun proyek driver mode pengguna di Visual Studio, jika Anda
mengatur PlatformToolset ke WindowsUserModeDriver10.0 , toolset mengabaikan
pustaka runtime apa pun yang ditentukan dalam proyek dan sebagai gantinya
menautkan secara statis terhadap Runtime VC ++ dan secara dinamis melawan
UCRT. Saat menggunakan toolset ini, perilaku penautan hibrid ini tidak dapat
dikonfigurasi ulang.
1. Atur untuk menautkan secara statis secara umum: Pustaka Runtime Pembuatan >
Kode Properti > C/C++ > = Multi-threaded (/MT)
2. Hapus UCRT yang terhubung secara statis: Input > Tautan > Properti > Abaikan
Pustaka Default Tertentu += libucrt.lib
3. Tambahkan UCRT yang terhubung secara dinamis: Properties > Linker > Input >
Dependensi Tambahan += ucrt.lib, Input > Linker > Properti > Abaikan Pustaka
Default Tertentu += libucrt.lib
Mendistribusikan kembali Runtime C (berlaku
sebelum Visual Studio 2015)
7 Catatan
Semua informasi di bawah titik ini hanya berlaku untuk pra-2015. Sebelum 2015,
ada dua versi terpisah dari C Runtime: Visual C ++ Runtime (VCRT,
misalnya msvcr120.dll ) dan warisan Windows CRT ( msvcrt.dll ).
Visual Studio menginstal versi terbaru VCRT ke System32 dalam direktori. Jika file tidak
berada di lokasi ini, Anda dapat menyalinnya langsung ke direktori build proyek Visual C
++Anda.
Jika driver mode pengguna atau aplikasi desktop Anda menggunakan VCRT, Anda harus
mendistribusikan pustaka tautan dinamis yang sesuai. Gunakan Paket Visual C ++
Redistributable ( VCRedist_x86.exe , , VCRedist_x64.exe VCRedist_arm.exe ). Rantai paket
yang dapat didistribusikan kembali dengan binari lain, dan paket yang dapat
didistribusikan kembali akan menerima pembaruan otomatis.
Jangan menyalin komponen CRT individual alih-alih System32 menggunakan paket yang
dapat didistribusikan ulang. Hal ini dapat menyebabkan CRT tidak diservis secara
otomatis, dan berpotensi ditimpa.
Driver ini harus menyertakan file CRT yang diperlukan di INF, sehingga file CRT
disalin ke toko driver sebagai bagian dari muatan driver.
Driver cetak V4 tidak dapat menggunakan penginstal bersama untuk penyiapan,
sehingga INF harus menyalin binari yang relevan dari pustaka runtime C/C++ ke
penyimpanan driver. Untuk melakukan ini, rujuk file yang sesuai di bagian
[COPY_FILES] dari paket driver.
Driver cetak V3 tidak boleh menggunakan penginstal bersama untuk penyiapan,
karena tidak dijalankan selama koneksi Titik dan Cetak. Driver ini harus
mereferensikan file yang sesuai di bagian [COPY_FILES] dari paket driver.
Berikut ini adalah contoh cara memasukkan binari CRT di bagian [COPY_FILES] dari INF:
INF
[COPY_FILES]
;CRT
Msvcr120.dll
; other files
* [SourceDisksFiles]
Msvcr120.dll = 2
; other files
* [SourceDisksNames.amd64]
1 = %Location%,,,
2 = %Location%,,,"amd64"
Tautkan driver Anda secara statis ke CRT untuk menyertakan runtime dalam biner.
Dalam hal ini, Anda tidak perlu mendistribusikan kembali CRT.
Untuk informasi selengkapnya, lihat Menentukan DLL Mana yang akan Didistribusikan
Ulang dan Memilih Metode Penyebaran.
Anda tidak dapat mendistribusikan kembali semua file yang disertakan dalam Visual
Studio; Anda hanya diizinkan untuk mendistribusikan kembali file yang ditentukan
dalam Kode Redistributable untuk Pratinjau Visual Studio 2013 dan Pratinjau SDK Visual
Studio 2013 . Versi debug aplikasi dan berbagai pustaka visual C ++ dynamic-link tidak
dapat didistribusikan ulang.
Istilah Deskripsi
Msvcr120.dll Runtime C
Istilah Deskripsi
Msvcp120d.dll Versi debug runtime C++ - tidak ada redistribusi yang diizinkan
Menghindari Kesalahan Floating Point di
Lingkungan Build Kustom
Artikel • 13/12/2022 • 2 menit untuk membaca
Informasi ini ditujukan untuk pengembang dan insinyur build yang mengkompilasi
driver mode kernel untuk Windows. Di Microsoft Visual Studio Professional 2012,
arsitektur default untuk kompiler Visual C ++ (VC ++) berubah dari IA32 ke set instruksi
Streaming SIMD Extensions 2 (SSE2). Sebagai hasil dari perubahan ini, instruksi floating
point (FP) SSE2 yang disuntikkan ke dalam biner pada waktu kompilasi dapat
menghasilkan kesalahan floating-point jika tidak diperhitungkan. Masalah ini dapat
dihadapi oleh mereka yang menggunakan kompiler Microsoft VC ++, atau lingkungan
build khusus untuk mengembangkan driver Windows. Namun, masalah ini tidak
mempengaruhi pengembang yang menggunakan lingkungan pengembangan Microsoft
Visual Studio, atau yang menggunakan utilitas MSbuild untuk membangun driver
dengan toolset yang tidak dimodifikasi.
Untuk aplikasi perubahan ini menghasilkan kode yang berkinerja lebih baik dan
menggunakan lebih sedikit waktu prosesor selama eksekusi. Namun, untuk driver
kernel-mode perubahan ini tidak akan mengelola status floating point (FP) dengan
benar. Hal ini disebabkan oleh kompiler VC ++ yang memperkenalkan urutan instruksi
FP di tempat-tempat di mana konteksnya belum disimpan. Setiap sistem floating-point
biner hanya dapat mewakili sejumlah nilai floating-point yang terbatas dalam bentuk
yang tepat, dengan sisanya adalah perkiraan. Keadaan kontrol floating-point, seperti,
mode pembulatan atau presisi, adalah apa yang membuat operasi FP selaras satu sama
lain. Ketika status tidak terdefinisi, ini mengarah ke kesalahan perhitungan FP. Kesalahan
perhitungan ini sulit dideteksi karena dalam banyak kasus korupsi negara aplikasi adalah
satu-satunya tanda masalah ini. Korupsi ini dapat memanifestasikan dirinya dalam
banyak hal, mulai dari crash acak hingga korupsi data.
Larutan
Untuk menghindari masalah ini dengan perhitungan floating-point, tambahkan bendera
/kernel ke baris perintah kompiler dan linker C ++ untuk mencegah menghasilkan
instruksi SSE2. Bendera /kernel mengubah nilai default /arch:sse2 kembali ke
/arch:ia32.
Selain itu, jika Anda membangun driver menggunakan WDK dan lingkungan
pengembangan Visual Studio Professional 2012, atau menggunakan MSBuild, di jendela
prompt Command Visual Studio, toolset platform yang disediakan Microsoft
(WindowsKernelModeDriver8.0) menetapkan bendera /kernel. Akibatnya, kesalahan
generasi floating-point dihindari.
C++
Rekomendasi
Berikut adalah solusi yang direkomendasikan berdasarkan jenis lingkungan
pengembangan yang Anda gunakan:
Mengatur properti untuk alat CTRPP yang mengurai dan memvalidasi manifes
penghitung Anda. Untuk informasi tentang bekerja dengan penghitung kinerja, lihat
Penghitung Kinerja. Untuk informasi tentang menggunakan penghitung kinerja dalam
mode kernel Windows driver, lihat Pemantauan Kinerja Mode Kernel.
Jika Anda ingin menambahkan halaman properti ini ke proyek Anda sehingga Anda
dapat menjalankan alat CTRPP selama proses pembuatan, lihat lingkungan build WDK
dan Visual Studio dan tugas Ctrpp.
Opsi Deskripsi
Buat file header untuk berisi nama penghitung Membuat file header yang menetapkan simbol
dan GUID ke nama set penghitung dan GUID untuk setiap
penghitung yang ditetapkan dalam manifes.
Membuat file header untuk penyedia Menentukan nama file header yang dihasilkan
alat. Jika Anda tidak menentukan jalur, file
dihasilkan di folder saat ini.
Menghasilkan file sumber daya Menentukan nama file sumber daya yang
dihasilkan alat. Jika Anda tidak menentukan
jalur, file dihasilkan di folder saat ini.
Jalur File Penghitung yang Dihasilkan Menentukan jalur untuk menghasilkan file
penghitung biner. (-sumPathpath)
Nama File Header Untuk Penghitung Menghasilkan file header untuk berisi nama
dan id penghitung. (-chfilename)
Header FileName Untuk Penyedia Menghasilkan file header untuk penyedia. Ini
menggantikan nama default. (-ofilename)
Nama File Sumber Daya Menentukan nama untuk file sumber daya. Ini
menggantikan nama default. (-rcfilename)
Komentar
Nama default file yang dihasilkan alat didasarkan pada nama file manifes yang Anda
lewati ke alat CTRPP .
Topik terkait
CTRPP
Penghitung Performa
Pemantauan Kinerja Mode Kernel
Properti Pengaturan Model Driver untuk
Proyek Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Mengatur properti dasar untuk driver mode kernel atau mode pengguna, termasuk versi
pustaka WDF dan definisi pra-prosesor.
Jenis driver
Jenis driver ketika jenis Konfigurasi driver adalah Driver. Perhatikan bahwa opsi ini
hanya tersedia saat proyek menggunakan toolset WindowsKernelModeDriver8.0 .
Potensi nilai:
Ketika jenis driver adalah KMDF, opsi ini menentukan versi utama KMDF yang akan
digunakan saat mengkompilasi driver Anda.
KMDF Version Minor (Versi Target) (adalah KMDF Version Minor sebelum Windows 10,
versi 1803) Ketika jenis driver adalah KMDF, opsi ini menentukan versi minor KMDF yang
akan digunakan saat mengkompilasi driver Anda.
Untuk informasi selengkapnya, lihat Penerapan Versi Pustaka Kerangka Kerja. Jika Anda
tidak menentukan Versi KMDF Minor (Versi Target), Visual Studio menggunakan default
berikut:
KMDF Version Minor (Minimum Required) (opsional, tersedia mulai dari Windows 10,
versi 1803) Mulai dari KMDF versi 1.25 dan UMDF versi 2.25 pada Windows 10 versi
1803 (Redstone 4), Anda dapat membangun driver KMDF yang menargetkan rentang
versi kerangka kerja. Gunakan pengaturan opsional ini untuk menentukan versi KMDF
minimum rentang ini.
Untuk detailnya, lihat Membangun driver WDF untuk beberapa versi Windows.
Ketika Anda memiliki driver UMDF, opsi ini menentukan versi utama UMDF yang akan
digunakan saat mengkompilasi driver Anda. Lihat Riwayat Versi UMDF. Ketika Anda
memiliki driver UMDF, jenis Konfigurasi adalah Pustaka Dinamis (.dll).
UMDF Version Minor (Versi Target) (adalah UMDF Version Minor sebelum Windows 10,
versi 1803) Ketika Anda memiliki driver UMDF, opsi ini menentukan versi minor UMDF
yang akan digunakan saat mengkompilasi driver Anda. Jika Anda tidak menentukan
UmDF Version Minor (Versi Target), Visual Studio menggunakan default berikut:
UMDF Version Minor (Minimum Required) (opsional, tersedia mulai dari Windows 10,
versi 1803)
Mulai dari KMDF versi 1.25 dan UMDF versi 2.25 pada Windows 10 versi 1803 (Redstone
4), Anda dapat membangun driver UMDF yang menargetkan rentang versi kerangka
kerja. Gunakan pengaturan opsional ini untuk menentukan versi UMDF minimum
rentang ini.
Untuk detailnya, lihat Membangun driver WDF untuk beberapa versi Windows.
Izinkan Tanggal, Waktu, dan Tanda Waktu
Topik terkait
Penerapan Versi Pustaka Kerangka Kerja
Membangun dan Memuat Driver Berbasis Kerangka Kerja
Riwayat Versi UMDF
Membangun Driver UMDF
Membuat Driver Ekspor
Properti Kompiler Pesan untuk Proyek
Driver
Artikel • 13/12/2022 • 3 menit untuk membaca
Mengatur properti untuk alat Penyusun Pesan (MC.exe ). Kompiler menghasilkan file
sumber daya pesan yang dapat Anda tambahkan ke proyek Anda.
Misalnya, jika Anda menggunakan API mode kernel Pelacakan Peristiwa untuk Windows
(ETW) untuk menambahkan penelusuran peristiwa ke driver mode kernel, Anda dapat
menggunakan kompiler pesan untuk membuat file header yang berisi definisi untuk
penyedia peristiwa, atribut peristiwa, saluran, dan peristiwa. Anda harus menyertakan file
header ini dalam kode sumber Anda. Kompiler pesan membuat skrip kompiler sumber
daya (*.rc) yang Anda tambahkan ke file proyek Anda.
Halaman properti ini tersedia jika Anda menambahkan file teks pesan (.mc) atau manifes
(.man) ke solusi Anda.
Opsi Deskripsi
Pesan Ansi dalam file Bin Menentukan bahwa pesan dalam file output
.bin harus ANSI. (-A)
Jalur Sumber Daya Dasar Folder yang berisi file manifes dasar. (-
sdirectory)
Opsi Deskripsi
Ekstensi file untuk header yang dihasilkan Menentukan ekstensi file header yang
dihasilkan. (-eextension)
Buat file header untuk berisi nama Gunakan opsi ini untuk menentukan folder
penghitung dan GUID tempat Anda ingin kompiler menempatkan file
header yang dihasilkan.
Hasilkan Makro Pencatatan Mode Kernel Menghasilkan makro pencatatan mode kernel.
(-km)
Hasilkan Makro Pencatatan Mode Pengguna Hasilkan makro pencatatan mode pengguna. (-
um)
Nama Dasar File yang Dihasilkan Menentukan nama dasar semua file yang
dihasilkan. (-zbasename)
Jalur File Pesan RC dan Biner yang Dihasilkan Menentukan jalur ke file pesan RC dan biner
yang dihasilkan.
Opsi Deskripsi
Hapus karakter dari nama simbolik Gunakan argumen ini untuk menghapus
karakter dari awal nama simbolik yang Anda
tentukan untuk acara tersebut. (-Pprefix)
Mengakhiri Pesan Dengan Null Mengakhiri semua string dengan null di tabel
pesan. (-n)
Pesan Unicode Dalam File Bin Menentukan bahwa pesan dalam file output
.bin adalah Unicode. (-U)
Validasi Terhadap Sumber Daya Dasar Gunakan argumen ini saat Anda membuat versi
baru manifes Anda dan ingin memeriksa
kompatibilitas aplikasi terhadap garis dasar
yang Anda buat menggunakan opsi -s .
Opsi Deskripsi
Topik terkait
Kompiler Pesan (MC.exe)
WDK dan Visual Studio membangun lingkungan Tugas kompiler pesan
Aktivitas Pelacakan untuk Windows (ETW)
Properti Kompiler MOF untuk Proyek
Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Kompiler Managed Object Format (MOF) (mofcomp.exe) mengurai file MOF dan
menambahkan kelas dan instans kelas yang ditentukan dalam file ke repositori WMI.
Gunakan halaman properti Mofcomp untuk mengkompilasi file MOF dengan driver
Anda. Untuk informasi lebih lanjut tentang Mofcomp.exe dan WMI, lihat mofcomp,
Mengkompilasi File MOF, dan Menyusun File MOF Driver.
Halaman properti ini tersedia jika Anda menambahkan file Managed Object Format
(MOF) (.mof) ke solusi Anda.
Opsi Deskripsi
Buat File Mof Biner Meminta agar kompiler membuat versi biner
dari file MOF dengan nama file nama tanpa
membuat modifikasi apa pun pada repositori
WMI. (-B:Nama file)
Opsi Deskripsi
Topik terkait
Menyusun File MOF
Menyusun File MOF Driver
mofcomp
Properti Stampinf untuk Proyek Driver
Artikel • 13/12/2022 • 3 menit untuk membaca
Mengatur properti untuk alat Stampinf . Anda dapat menggunakan Stampinf untuk
memperbarui arahan file INF dan INX umum saat Anda membuat driver.
Jika Anda ingin menambahkan halaman properti ini ke proyek Anda, sehingga Anda
dapat menjalankan Stampinf selama proses pembuatan, lihat lingkungan WDK dan
Visual Studio build dan tugas Stampinf.
Perilaku default:
<>major_version.<>minor_version
<>major_version.<>minor_version.
<>service_version
Topik terkait
Stampinf
Direktif Inf DriverVer
Bagian Versi INF
WDK dan Visual Studio membangun lingkungan
Tugas Stampinf
Cara: Gunakan Variabel Lingkungan dalam Build
Konversi Proyek WDK 8.1 menjadi WDK
10
Artikel • 13/12/2022 • 2 menit untuk membaca
Topik ini menjelaskan cara mengonversi proyek driver yang dibuat menggunakan
Microsoft Visual Studio 2013 dan Windows Driver Kit (WDK) 8.1 menjadi proyek driver
yang dibangun di Microsoft Visual Studio 2015 dengan Windows Driver Kit (WDK) 10.
Visual Studio 2015 memiliki peringatan dan kesalahan kompiler baru. Bahkan jika proyek
driver Anda dibangun tanpa kesalahan pada Visual Studio 2013, Anda mungkin melihat
kesalahan saat anda membangunnya di Visual Studio tahun 2015.
Visual Studio membuka dialog Tinjau Tindakan Solusi dengan judul Upgrade VC
++ Compiler dan Libraries. Pilih OK dan Visual Studio mencoba untuk
meningkatkan semua proyek dalam solusi.
Jika Anda melihat dialog Terdeteksi Modifikasi File , pilih Muat Ulang Semua.
2. Di panel Penjelajah Solusi, pilih dan tahan (atau klik kanan) nama proyek driver dan
pilih Properti. Pilih tombol Configuration Manager. Dalam daftar Konfigurasi
solusi aktif , pilih <Baru...>. Ketik nama dan salin pengaturan dari konteks proyek
Windows 8.1. PilihOK.
Biasanya, solusi yang dikonversi berisi dua profil konfigurasi, satu untuk debug
(pengujian) dan satu untuk rilis. Untuk membuat lingkungan yang serupa dengan
WDK 10, cukup pilih <New...> dua kali. Untuk membuat profil debug, salin dari
profil Win 8.1 Debug . Untuk membuat profil rilis, salin dari profil Rilis Win 8.1 .
3. Dalam versi WDK sebelum WDK 10, solusi driver Anda selalu membutuhkan proyek
paket. Di WDK 10, Anda hanya memerlukan proyek paket jika Anda menyertakan
beberapa driver dalam paket driver. Gunakan panduan berikut:
Jika Anda hanya memiliki satu driver dalam solusi dan proyek paket ada,
hapus.
Jika Anda memiliki lebih dari satu driver dalam solusi, pastikan solusi Anda
berisi proyek paket. Kemudian, untuk setiap proyek driver dalam solusi, buka
properti proyek dan navigasikan ke Configuration Properties > Driver
Pengaturan. Atur BuildPackage ke No. Jika Anda membangun dari baris
perintah, atur /p:SupportsPackaging=false.
4. Sekali lagi di properti proyek driver, pilih Properti. Navigasikan ke Driver Properti
> Konfigurasi Pengaturan > Versi OS Target Umum>. Pilih Windows 10.
Verifikasi bahwa Platform Target diatur ke Desktop, dan buat solusinya. Perbaiki
kesalahan yang terjadi.
Bangun solusinya lagi. Pada titik ini, satu-satunya kesalahan berasal dari alat
ApiValidator, yang memeriksa apakah driver memanggil fungsi non-universal.
Ganti panggilan apa pun ke DDI non-universal dengan panggilan ke DDI universal.
Untuk mempelajari cara menentukan platform target untuk DDI tertentu, lihat
Platform target di halaman referensi driver.
Model konvergensi driver untuk
Windows 10
Artikel • 13/12/2022 • 4 menit untuk membaca
Untuk membuat perangkat Anda berfungsi pada rilis Windows dan Windows Phone
sebelum Windows 10, Anda mungkin perlu menulis dua driver terpisah, misalnya satu
untuk Windows 8.1 dan satu untuk Windows Phone 8.1. Dalam Windows 10, dalam
banyak kasus, Anda dapat menulis satu driver yang akan berjalan pada versi Windows
10. Topik ini menjelaskan rencana konvergensi untuk antarmuka driver perangkat di
Windows 10 dan memberikan detail ketika ada perbedaan khusus versi. Ini menjawab
pertanyaan-pertanyaan ini:
Untuk driver lama, apakah driver Windows 8.1 akan berfungsi di Windows 10 untuk
edisi desktop (Home, Pro, and Enterprise) dan/atau Windows 10 Mobile?
Untuk driver baru, dapatkah saya membuat satu driver dengan kit Windows 10
yang akan berfungsi Windows 10 untuk edisi desktop dan Windows 10 Mobile?
Di blok Persyaratan di bagian bawah halaman referensi driver Microsoft, Anda akan
melihat entri yang disebut Platform Target. Baris ini mencantumkan edisi Windows
tempat halaman diterapkan.
Nilai yang ditentukan dalam peta Platform Target ke nilai yang dapat Anda gunakan di
Visual Studio, di properti Platform Target di bawah Properti Konfigurasi-Driver>
Pengaturan-Umum>. Windows Driver dapat menggunakan DDI apa pun yang
menentukan Universal sebagai Platform Target.
Berikut adalah nilai yang mungkin Anda lihat untuk Platform Target, dan apa artinya:
Jangka Deskripsi
Waktu
Universal Biner driver dalam Driver Windows dapat memanggil antarmuka driver perangkat
(DDI) ini. Untuk informasi selengkapnya, lihat Memulai driver Windows.
Desktop Biner driver untuk Windows 10 untuk edisi desktop atau Windows Server 2016 dapat
memanggil DDI ini.
Driver Windows berjalan pada edisi Windows berbasis Universal Windows Platform
(UWP) berikut:
Windows 11
Windows Server 2022
Windows Server 2019
Windows 10 untuk edisi desktop (Beranda, Pro, dan Perusahaan)
Windows 10 dalam Mode-S
Windows 10 IoT Core
Server Windows 2016
Menganalisis Driver Menggunakan Alat
Analisis dan Verifikasi Kode
Artikel • 13/12/2022 • 2 menit untuk membaca
Alat analisis dan verifikasi kode dapat membantu meningkatkan stabilitas dan keandalan
driver Anda dengan menganalisis kode sumber secara sistematis. Alat analisis dan
verifikasi kode dapat mendeteksi kesalahan yang terlewatkan oleh kompiler dan dengan
pengujian runtime konvensional. Selain itu mereka dapat menentukan apakah driver
berinteraksi dengan benar dengan kernel sistem operasi Windows. Menggunakan
Microsoft Visual Studio dan Windows Driver Kit (WDK), Anda dapat mengonfigurasi
analisis kode dan alat verifikasi untuk dijalankan sebagai bagian dari proses pembuatan,
atau Anda dapat menjadwalkan alat untuk menganalisis driver Anda pada waktu yang
telah ditentukan.
Kapan harus menggunakan: Anda dapat menjalankan alat Analisis Kode C / C ++ untuk
driver sangat awal dalam siklus pengembangan, segera setelah kode dikompilasi
dengan benar.
Nota Dalam versi WDK sebelumnya, modul khusus driver untuk analisis kode adalah
bagian dari alat mandiri yang disebut PREfast for Drivers (PFD). PREfast for Drivers juga
diintegrasikan ke dalam lingkungan WDK Build, sebagai bagian dari Microsoft
Automated Code Review (OACR).
Verifikator Driver Statis
Static Driver Verifier (SDV) adalah alat verifikasi statis yang secara sistematis
menganalisis kode sumber driver mode kernel Windows. SDV menentukan apakah
driver berinteraksi dengan benar dengan kernel sistem operasi Windows. SDV dapat
diluncurkan dari menu Driver di Visual Studio atau dari jendela Command Prompt
Visual Studio.
Kapan harus menggunakan: Jalankan Static Driver Verifier di awal siklus pengembangan
pada driver yang mengkompilasi dengan benar. Jalankan Static Driver Verifier sebelum
Anda memulai siklus pengujian.
Anda dapat menyebarkan driver secara otomatis atau manual. Dalam kedua kasus, Anda
perlu menyiapkan komputer target terlebih dahulu. Di sini kami menjelaskan cara
menyiapkan komputer target jika Anda memilih untuk menyebarkan driver Anda secara
manual.
Biasanya komputer tempat Anda menginstal dan menguji driver terpisah dari komputer
tempat Anda mengembangkan dan membangun paket driver. Komputer tempat Anda
membangun driver disebut komputer host, dan komputer tempat Anda menginstal dan
menguji driver disebut komputer target atau komputer uji. Proses memindahkan paket
driver ke komputer target dan menginstal driver itu disebut menyebarkan driver.
Saat Anda membuat salah satu sampel driver WDK, proses pembuatan membuat
sertifikat penandatanganan pengujian. Anda perlu menginstal sertifikat
penandatanganan uji coba hanya sekali. Jika Anda telah menginstal sertifikat dari
sampel driver WDK, Anda dapat menginstal sampel driver lain tanpa menginstal
sertifikat lagi.
Apa yang terjadi ketika Anda
menyediakan komputer (WDK 8.1)
Artikel • 13/12/2022 • 2 menit untuk membaca
1. Di komputer host, di Visual Studio, pada menu Driver, pilih Test > Configure
Computers.
2. Pilih nama komputer target, dan pilih Hapus komputer.
3. Pilih Hapus provisi dan hapus komputer. Pilih Selanjutnya.
4. Setelah proses penghapusan selesai, pilih Selesai.
5. Hapus instalan WDK Test Target Setup dari komputer target.
Nota WDK 8 bukanlah versi terbaru dari WDK. Kami menyarankan Anda mendapatkan
versi WDK saat ini dan menyediakan komputer target Anda sesuai dengan instruksi
provisi di sini.
1. Di komputer host, di Visual Studio, pada menu Driver, pilih Test > Configure
Computers.
2. Pilih nama komputer target, dan pilih Hapus komputer.
3. Pilih Hapus provisi dan hapus komputer. Pilih Selanjutnya.
4. Setelah proses penghapusan selesai, pilih Selesai.
Pengaturan AutoReboot
Pengaturan dump crash memori kernel
Pengaturan penghemat layar
Kebijakan kunci workstation
Pengaturan ForceGuest
Kebijakan daya
Pengaturan timer RTC Wake
Setelan debugging kernel
Pengaturan penandatanganan uji
Konfigurasi Pemecahan Masalah
Penyebaran Driver, Pengujian, dan
Debugging
Artikel • 13/12/2022 • 4 menit untuk membaca
Tips umum
Konfigurasi perintah menu Komputer tidak aktif
Provisi gagal
Provisi gagal
Jalur jaringan tidak ditemukan
Nama jaringan tidak dapat ditemukan
Tidak dapat mengakses mesin jarak jauh
Jalur ke log mungkin berisi folder tersembunyi. Misalnya, di jalur berikut, AppData
adalah folder tersembunyi.
C:\Users\currentUser\AppData\Roaming\Microsoft\DriverTest\Install
Di komputer target, pastikan Anda telah mengaktifkan Network Discovery dan Anda
telah mengaktifkan Berbagi File dan Printer untuk profil jaringan yang sesuai. Misalnya,
jika komputer host dan target digabungkan ke domain jaringan, Anda harus
mengaktifkan penemuan jaringan dan berbagi file dan printer untuk profil jaringan
Domain . Untuk informasi selengkapnya, lihat Menyediakan komputer untuk
penyebaran dan pengujian driver (WDK 8.1).
Pastikan Anda dapat melakukan ping ke komputer target dari komputer host. Di
komputer host, buka jendela Command Prompt, dan masukkan
pingtargetComputerName, di mana targetComputerName adalah nama komputer target.
Nota Anda mungkin melihat beberapa pesan sebelum melihat pesan Jalur jaringan
tidak ditemukan. Beberapa pesan tersebut mungkin membuat Anda berpikir bahwa
jalur jaringan ditemukan dan langkah pertama penyediaan berhasil. Bahkan, jalur
jaringan tidak ditemukan dan tidak ada bagian dari penyediaan yang berhasil. Misalnya,
Anda mungkin melihat ini:
C++
Nota Anda mungkin melihat beberapa pesan sebelum melihat pesan Nama jaringan
tidak dapat ditemukan. Beberapa pesan tersebut mungkin membuat Anda berpikir
bahwa nama komputer ditemukan dan langkah pertama penyediaan berhasil. Faktanya,
nama komputer tidak ditemukan, dan tidak ada bagian dari penyediaan yang berhasil.
Misalnya, Anda mungkin melihat ini:
C++
Nota Pesan yang ditampilkan saat Anda memasukkan nama komputer target yang salah
dapat bervariasi. Misalnya, Anda mungkin melihat pesan tentang mengaktifkan
penemuan jaringan.
C++
that network discovery and file and print sharing be enabled on the
target machine.
C++
C++
sxe ld <DriverName>
Jika komputer target memiliki lebih dari satu adaptor jaringan, Anda harus menentukan
parameter bus adaptor jaringan yang ingin Anda gunakan untuk debugging.
Untuk informasi selengkapnya, lihat Pemecahan masalah Tips untuk Debugging melalui
Kabel Jaringan
Debugger tidak akan terhubung atau masuk:
koneksi 1394
Jika komputer target memiliki lebih dari satu pengontrol 1394, Anda harus menentukan
parameter bus pengontrol 1394 yang ingin Anda gunakan untuk debugging. Untuk
informasi selengkapnya, lihat Pemecahan masalah Tips untuk Debugging melalui Kabel
1394.
Paket driver adalah kumpulan file yang digunakan selama penginstalan perangkat. Paket
driver mencakup file INF, serta file dan biner yang direferensikan oleh INF tersebut.
Visual Studio menggunakan paket driver untuk menyebarkan dan men-debug driver
Anda secara otomatis ke target jarak jauh.
Paket driver adalah proyek terpisah yang mengumpulkan output dari satu atau
beberapa proyek, seperti proyek driver. Proyek paket driver, ketika dibangun, kemudian
menghasilkan paket driver yang Visual Studio gunakan untuk menyebarkan driver.
Catatan
Jika Anda menggunakan templat driver untuk membuat solusi driver, maka templat
harus secara otomatis membuat solusi yang berisi dua proyek. Satu untuk driver, dan
satu lagi untuk paket driver.
Untuk membuat paket driver baru secara manual untuk solusi yang sudah ada yang
belum memilikinya, gunakan templat "Paket Penginstalan Driver". Pilih File-Baru-
Project>>. Kemudian pilih Windows Paket > Driver > "Paket Penginstalan Driver" dari
dialog. Kemudian di menu drop-down Solusi , pilih Tambahkan ke solusi dan pilih Ok.
Di panel Penjelajah Solusi, buka proyek paket driver, pilih dan tahan (atau klik kanan)
Referensi, pilih Tambahkan Referensi... dan pilih proyek yang akan dirujuk.
Untuk menghapus referensi ke proyek yang sudah ada, pilih dan tahan (atau klik kanan)
proyek yang sudah ada yang tidak ingin Anda referensikan lagi dan pilih Hapus.
Beberapa driver dalam solusi
Anda dapat menambahkan beberapa driver dan paketnya ke solusi Anda. Mirip dengan
"Memodifikasi paket driver yang ada" Anda dapat membuat solusi driver baru, atau
menambahkan referensi ke yang sudah ada. Jika solusi Anda sudah berisi paket driver,
Anda dapat memodifikasinya untuk mereferensikan proyek driver tambahan dalam
solusi.
Di panel Penjelajah Solusi, buka proyek paket driver, pilih dan tahan (atau klik kanan)
Referensi, pilih Tambahkan Referensi... dan pilih proyek yang akan dirujuk.
Untuk menghapus referensi ke proyek yang sudah ada, pilih dan tahan (atau klik kanan)
proyek yang sudah ada yang tidak ingin Anda referensikan lagi dan pilih Hapus.
Lihat sampel "Toaster Sample Driver" untuk contoh satu solusi yang berisi beberapa
driver:
Topik terkait
Menandatangani Driver
Membuat Paket Metadata Perangkat
Artikel • 13/12/2022 • 2 menit untuk membaca
Anda dapat membuat Paket Metadata Perangkat untuk perangkat Anda secara langsung
di Visual Studio. Panduan Penulisan Metadata Perangkat, yang terletak di menu Driver,
memungkinkan Anda untuk menulis informasi spesifik yang muncul untuk pengguna
akhir di Windows, termasuk ikon dan nama untuk perangkat Anda. Ini juga
memungkinkan Anda untuk mengaitkan aplikasi perangkat UWP ke perangkat Anda,
yang diinstal secara otomatis ketika pengguna pertama kali menghubungkan perangkat.
Semua driver yang berjalan pada versi 64-bit Windows harus ditandatangani sebelum
Windows akan memuatnya. Namun, penandatanganan driver tidak diperlukan pada
versi Windows 32-bit.
NotaProyek paket driver dapat mengemas output dari proyek lain. Jika Anda
membangun proyek paket driver, Microsoft Visual Studio akan membangun proyek lain
yang memiliki dependensi. Proyek paket driver memiliki properti penandatanganan
driver sendiri yang terpisah dari proyek dependen lainnya, dan properti
penandatanganan driver hanya berlaku untuk katalog (jika ada) yang dihasilkan oleh
proyek paket driver. Artinya, proyek paket driver tidak akan secara otomatis
menambahkan tanda tangan tertanam ke binari driver yang dihasilkan oleh proyek lain,
karena sertifikat yang berbeda dapat digunakan untuk menandatangani proyek driver
lainnya, misalnya, sertifikat uji, dan hasilnya dalam kasus seperti itu adalah paket driver
di mana binari secara tidak sengaja ditandatangani dengan satu sertifikat, sedangkan
katalog paket ditandatangani dengan sertifikat yang berbeda. Hal ini dapat
mengakibatkan penurunan kinerja. Misalnya, jika tanda tangan tertanam biner driver
mulai boot tidak valid, Windows tidak dapat menggunakan sertifikat yang
ditandatangani untuk memvalidasi biner. Sebaliknya, Windows harus memvalidasi biner
terhadap tanda tangan katalog, yang akan meningkatkan waktu boot.
Bagian ini menjelaskan cara menggunakan Visual Studio untuk menandatangani paket
driver.
Sebelum menginstal driver pada komputer yang menjalankan versi 64-bit Windows,
Anda harus menandatangani paket driver. Untuk tujuan pengujian, Anda dapat menguji
tanda tangan paket driver, yang merupakan bentuk penandatanganan yang lebih santai
daripada menandatangani untuk rilis publik.
1. Di Visual Studio, buka solusi yang memiliki proyek paket driver. Pilih dan tahan
(atau klik kanan) proyek paket driver, dan pilih Properti.
Di Visual Studio, di jendela Penjelajah Solusi, pilih dan tahan (atau klik kanan)
proyek paket driver Anda, dan pilih Properti.
Ikuti instruksi dalam Wizard Ekspor Sertifikat untuk mengekspor file PFX. Saat Anda
ditanya apakah Anda ingin mengekspor kunci privat, pilih Ya, ekspor kunci privat.
Topik terkait
Menulis driver pertama Anda
Membangun Driver
Mengembangkan, Menguji, dan Menyebarkan Driver
Menandatangani Driver untuk Rilis
Publik
Artikel • 13/12/2022 • 5 menit untuk membaca
Sebelum Anda merilis paket driver ke publik, kami sarankan Anda mengirimkan paket
untuk sertifikasi. Untuk informasi selengkapnya, lihat Windows Sertifikasi Perangkat
Keras dan Layanan Dasbor Perangkat Keras. Untuk mengirimkan paket driver untuk
sertifikasi, Anda harus menandatangani paket dengan sertifikat yang Anda peroleh dari
otoritas sertifikasi tepercaya seperti VeriSign. Untuk informasi selengkapnya, lihat
Mendapatkan Sertifikat VeriSign. Anda juga akan memerlukan sertifikat silang, yang
disediakan oleh Microsoft.
Misalkan Anda telah memperoleh sepasang file dari Verisign: file kunci pribadi (PVK) dan
sertifikat penerbitan perangkat lunak (SPC). Misalkan Juga Anda memiliki solusi
Microsoft Visual Studio yang berisi proyek driver bernama MyDriver dan proyek paket
driver bernama Paket MyDriver. Untuk menandatangani paket driver Anda, ikuti
langkah-langkah berikut.
1. Gunakan alat Pvk2Pfx untuk membuat sertifikat Exchange Informasi Pribadi (PFX).
Alat Pvk2Pfx mengambil file PVK dan SPC Anda sebagai input dan membuat satu
file PFX. Untuk latihan ini, asumsikan bahwa file PFX Anda bernama MyCert.pfx.
Nota Setelah Anda membuat file PFX Anda, Anda dapat menggunakannya kembali
untuk proyek driver lain dan di komputer pengembangan driver lainnya.
2. Untuk menentukan sertifikat silang mana yang Anda butuhkan, lihat Sertifikat
Silang untuk Penandatanganan Kode Mode Kernel. Verifikasi bahwa sertifikat silang
yang diperlukan ada di $(BASEDIR)\CrossCertificates, di mana $(BASEDIR) adalah
direktori dasar kit Windows (misalnya c:\Program Files (x86)\Windows
Kits\8.0\CrossCertificates). Jika sertifikat silang yang diperlukan tidak ada, unduh
sertifikat silang dari Microsoft, dan salin ke $(BASEDIR)\CrossCertificates.
3. Di Visual Studio, buka solusi yang berisi proyek Paket MyDriver dan MyDriver. Jika
jendela Penjelajah Solusi belum terbuka, pilih Penjelajah Solusi dari menu
Tampilan. Di jendela Penjelajah Solusi, pilih dan tahan (atau klik kanan) proyek
paket, Paket MyDriver, dan pilih Properti.
Pilih Pilih Dari Toko dan pilih sertifikat yang sebelumnya Anda impor ke toko
sertifikat.
Nota Untuk mengimpor sertifikat ke toko, pilih dan tahan (atau klik kanan)
file sertifikat (file PFX), dan pilih Instal PFX. Ikuti petunjuk di Panduan Impor
Sertifikat.
Nota Menggunakan salah satu server stempel waktu dalam daftar drop-down
mengharuskan Anda terhubung ke Internet saat Anda membangun paket driver
Anda. Jika Anda perlu terputus dari Internet saat membuat paket driver, kosongkan
bidang TimeStampServer .
6. Di halaman properti untuk paket, navigasikan ke Properti > Konfigurasi Inf2Cat >
General. Di daftar turun bawah Jalankan Inf2Cat , pilih Ya.
8. Pilih dan tahan (atau klik kanan) proyek driver, MyDriver, dan pilih Properti
10. Ketika Anda siap untuk membangun paket driver Anda, tekan F5. Visual Studio
akan secara otomatis menandatangani paket dan file driver Anda. Jika Anda telah
mengonfigurasi penyebaran, Visual Studio juga akan menyebarkan paket driver
yang Anda tandatangani ke komputer uji. Untuk informasi selengkapnya, lihat
Menyediakan komputer untuk penyebaran dan pengujian driver (WDK 8.1).
Untuk menginstal pada Windows 10, 8.1, 8, dan 7, paket driver Anda dapat memiliki satu
tanda tangan SHA1.
Mulai Windows 10, Anda juga perlu mengirimkan driver mode kernel Windows 10 baru
untuk penandatanganan digital di portal Dashboard Pusat Pengembang Perangkat
Keras Windows . Pengiriman driver kernel dan mode pengguna harus memiliki
Sertifikat Penandatanganan Kode Extended Validation ("EV") yang valid.
** Catatan ** Penghentian SHA1 tidak berlaku untuk driver. Untuk info tentang
berakhirnya dukungan SHA1 di Windows, lihat Windows Enforcement of Authenticode
Code Signing dan Timestamping .
Dalam kebanyakan kasus, cukup untuk menandatangani paket driver, dan tidak perlu
menandatangani file driver individual. Namun, terkadang Anda perlu menandatangani
paket dan file driver individual. Misalnya, file driver boot-start harus ditandatangani
secara individual. Menandatangani file driver individu disebut sebagai menyematkan
tanda tangan dalam file driver.
Misalkan Anda memiliki solusi Visual Studio yang berisi proyek driver bernama MyDriver
dan proyek paket driver bernama Paket MyDriver. Visual Studio menyediakan dua set
halaman properti: satu untuk Driver Saya dan satu untuk Paket Driver Saya. Untuk
menandatangani paket driver, atur properti Penandatanganan Driver paket Driver Saya.
Untuk menyematkan tanda tangan di file driver individual, atur properti
Penandatanganan Driver Pengandar Saya.
Saat Anda mengatur properti paket driver untuk penandatanganan produksi, ingatlah
untuk menyesuaikan properti penandatanganan file driver individual yang sesuai.
Matikan penandatanganan untuk masing-masing file driver, atau atur file driver
individual untuk menggunakan sertifikat yang sama dengan yang Anda tentukan untuk
paket.
Nota Untuk melihat hash (juga disebut sidik jari) sertifikat, buka jendela Command
Prompt dan navigasikan ke direktori yang berisi sertifikat Anda. Masukkan perintah
certutil -dumpCertName.pfx, di mana CertName.pfx adalah nama sertifikat Anda.
Topik terkait
Perubahan Penandatanganan Driver di Windows 10
Ketersediaan Dukungan Penandatanganan Kode SHA-2 untuk Windows 7 dan
Windows Server 2008 R2
Menandatangani Driver
Sertifikasi Perangkat Keras Windows
Layanan Dasbor Perangkat Keras
Persyaratan Penandatanganan Driver untuk Windows
Sertifikat Silang untuk Penandatanganan Kode Mode Kernel
Panduan Penandatanganan Kode Mode Kernel
Penandatanganan Driver
Memasang Driver Boot-Start
Alat untuk Menandatangani Driver
Properti Penandatanganan Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Saat proyek dipilih dalam Penjelajah Solusi, dialog Properti di bawah simpul
Penandatanganan Driver, menampilkan dua bagian properti:
Di bawah Umum:
Mode Tanda Tangan
Tanda Uji - Microsoft Visual Studio harus menandatangani driver dengan sertifikat
pengujian yang ditentukan dalam Sertifikat Uji (default). Jika tidak ada sertifikat
yang ditentukan dalam Sertifikat Uji maka Visual Studio akan membuatnya untuk
pengemudi. Catatan: Windows mengharuskan semua driver 64-bit untuk
ditandatangani.
Tanda Produksi - Visual Studio harus menandatangani driver dengan sertifikat
produksi yang ditentukan dalam Sertifikat Produksi.
Non-Visual Studio tidak boleh menandatangani driver dengan sertifikat apa pun.
Sertifikat Uji
Sertifikat Produksi
Nonaktifkan Peringatan
Nota Jika Anda mengalami kesulitan menyiapkan komputer uji, lihat Pemecahan
Masalah Konfigurasi Penyebaran Driver, Pengujian, dan Debugging.
1. Buka halaman properti untuk proyek driver Anda. Pilih dan tahan (atau klik kanan)
proyek driver di Penjelajah Solusi dan pilih Properti.
3. Pilih komputer uji yang telah Anda konfigurasikan, atau pilih nama komputer yang
ingin Anda konfigurasikan untuk pengujian. Lihat Menyediakan komputer untuk
penyebaran dan pengujian driver (WDK 10).
Saat Anda mengaktifkan penyebaran untuk proyek paket driver Anda, driver secara
otomatis disebarkan ke komputer uji yang telah Anda pilih saat membuat solusi.
Anda dapat menggunakan halaman Properti penyebaran untuk mengonfigurasi
opsi penginstalan dan penyebaran driver. Lihat Properti Penyebaran untuk Proyek
Paket Driver.
4. Saat Mengaktifkan penyebaran di komputer uji, Anda juga dapat secara otomatis
mengaktifkan dan mengonfigurasi Driver Verifier, KMDF Verifier, atau UMDF
Verifier di komputer uji untuk meningkatkan efektivitas pengujian. Untuk mengatur
opsi ini untuk proyek paket driver, pilih Properti Konfigurasi, pilih Penginstalan
Pengandar, lalu pilih halaman properti berikut.
HKLM\Software\Microsoft\DriverTest\Service
Anda hanya perlu mengatur nilai ini sekali, dan itu bertahan untuk penyebaran di masa
mendatang.
Properti penyebaran hanya tersedia jika Anda memiliki paket driver. Jika solusi driver
Anda tidak memiliki proyek paket driver, Anda perlu menambahkannya. Paket driver
berisi komponen, seperti file INF yang diperlukan untuk instalasi. Untuk informasi
selengkapnya, lihat Paket Driver dan Membuat Paket Driver.
Afer Anda telah menambahkan paket driver, Anda dapat memilih dan menahan (atau
memilih kanan) proyek paket driver di Penjelajah Solusi dan pilih Properti. Di halaman
properti untuk paket pengandar, pilih Properti Konfigurasi, pilih Penginstalan
Pengandar, lalu pilih Penyebaran.
Untuk petunjuk tentang cara mengatur komputer target, menggunakan Windows Driver
Kit (WDK) 8.1 dan Windows Driver Kit (WDK) 8, lihat Menyediakan komputer untuk
penyebaran dan pengujian driver (WDK 10). Jika Anda memiliki masalah dengan
penyediaan komputer target, lihat Pemecahan Masalah Konfigurasi Penyebaran Driver,
Pengujian, dan Debugging.
Jika komputer target menjalankan versi N atau KN dari Windows, Anda harus menginstal
Media Feature Pack untuk versi N dan KN dari Windows. Lihat Menyediakan komputer
untuk penyebaran dan pengujian driver (WDK 10) untuk informasi lebih lanjut.
Dimulai dengan Windows Vista, semua versi 64-bit dari Windows memerlukan kode
driver untuk memiliki tanda tangan digital untuk driver untuk memuat. Lihat
Menandatangani Driver dan Menandatangani Driver Selama Pengembangan dan
Pengujian.
WDK dapat menyebarkan dan menginstal paket driver di komputer uji, tetapi hanya jika
driver memiliki semua komponen yang diperlukan untuk instalasi, seperti file INF. Lihat
Paket Driver informasi selengkapnya. Pastikan Anda dapat menginstal driver di luar
Visual Studio dan WDK. Misalnya, gunakan utilitas Konsol Perangkat, Devcon untuk
menguji apakah Anda dapat menginstal driver. Pastikan perangkat (jika Anda
memilikinya) terhubung ke komputer target. Untuk informasi selengkapnya, lihat
Instalasi Perangkat dan Driver serta Membuat Paket Driver.
Properti Penyebaran untuk Proyek Paket
Driver
Artikel • 13/12/2022 • 3 menit untuk membaca
Anda dapat mengonfigurasi penyebaran otomatis paket driver di komputer uji jarak
jauh di setiap konfigurasi proyek Anda. Dari halaman properti proyek untuk driver Anda,
Anda memiliki kontrol tambahan atas bagaimana Anda ingin menyebarkan driver Anda
untuk pengujian. Anda dapat memilih untuk menyebarkan driver secara otomatis setiap
kali Anda membangun solusi driver di setiap konfigurasi. Untuk informasi selengkapnya
tentang penyebaran, lihat Menyediakan komputer untuk penyebaran dan pengujian
driver (WDK 8.1) dan Menyebarkan Driver ke Komputer Uji.
Nota Jika solusi driver Anda tidak memiliki proyek paket driver, Anda perlu
menambahkannya. Lihat Membuat Paket Driver. Properti penyebaran hanya
tersedia jika Anda memiliki paket driver.
3. Pilih opsi Aktifkan penyebaran . Ketika opsi ini dipilih, Anda dapat memilih
komputer uji untuk digunakan, dan Anda dapat mengonfigurasi opsi untuk
instalasi dan penyebaran driver.
Mengaktifkan penyebaran
Anda dapat memilih untuk menyebarkan paket driver anda di komputer uji dengan
memilih Aktifkan penyebaran. Dalam kombinasi dengan daftar konfigurasi, Anda dapat
memilih untuk menonaktifkan penyebaran untuk build debug dan mengaktifkannya
untuk build rilis.
Untuk memastikan bahwa Anda sedang menguji versi terbaru driver, pilih Hapus versi
driver sebelumnya sebelum penyebaran.
Untuk informasi tentang bekerja dengan debugger, lihat Memulai dengan debugging
Windows.
Instal dan Verifikasi - Anda dapat memilih untuk menguji instalasi Anda menggunakan
skrip pengujian otomatis. Saat Anda memilih opsi ini dan menentukan Tugas Instalasi
Paket Driver Default (kemungkinan reboot) atau Tugas Instalasi Paket Driver Printer
Default (kemungkinan reboot), pengujian membaca file INF driver dan menginstal
driver. Tes kemudian memverifikasi bahwa pengemudi sudah bangun dan berjalan.
Setelah selesai, tes memberikan informasi rinci tentang keberhasilan atau kegagalan
tugas instalasi.
Kueri Perangkat Opsional - Nilai default adalah %PathToInf%. Jalur ke file INF driver
diganti secara otomatis. Seharusnya tidak perlu mengubah nilai ini kecuali Anda
memiliki kebutuhan untuk menempatkan file INF di lokasi yang berbeda.
Berkas Tambahan
Anda dapat menggunakan kotak File Tambahan untuk menentukan skrip atau aplikasi
instalasi kustom yang ingin Anda salin ke komputer uji jarak jauh. Berkas yang Anda
tentukan di sini ditambahkan ke folder %Systemdrive%\drivertest\drivers di komputer
jarak jauh.
Topik terkait
Menyebarkan Driver ke Komputer Uji
Cara menguji driver saat runtime menggunakan Visual Studio
Memulai dengan debugging Windows
Properti Verifikasi Driver untuk Proyek
Paket Driver
Artikel • 13/12/2022 • 4 menit untuk membaca
Driver Verifier adalah alat verifikasi run-time yang meningkatkan efektivitas pengujian
driver Anda. Anda dapat mengaktifkan dan mengonfigurasi Driver Verifier untuk
berjalan di semua komputer uji saat Anda menyebarkan driver untuk pengujian.
Anda harus selalu mengatur koneksi debugging mode kernel dengan komputer uji saat
Anda mengaktifkan Driver Verifier di komputer uji jarak jauh. Untuk informasi tentang
mengonfigurasi komputer target dan menyiapkan kabel debug, lihat Memulai dengan
debugging Windows.
Semua Pengemudi
Menentukan bahwa Driver Verifier memverifikasi semua driver yang diinstal pada
komputer uji jarak jauh.
Output Project
Menentukan bahwa Driver Verifier memverifikasi proyek driver yang diinstal pada
komputer uji jarak jauh. Ini adalah opsi default.
Daftar Driver
Menentukan driver atau daftar driver yang diverifikasi Driver di komputer uji jarak jauh.
Misalnya, Anda dapat mencantumkan semua driver yang terkait dengan perangkat
tertentu. Tentukan driver dengan nama biner, misalnya, Driver.sys. Gunakan titik koma
untuk memisahkan daftar driver. Nilai wildcard, seperti n*.sys, tidak didukung.
Ketika opsi ini aktif, Driver Verifier menerapkan seperangkat aturan antarmuka
driver perangkat (DDI) yang memeriksa interaksi yang tepat antara driver dan
antarmuka kernel sistem operasi.
Deteksi kebuntuan
Saat opsi ini aktif, Driver Verifier memantau penggunaan kunci spin, mutex, dan
mutex cepat oleh pengemudi. Ini mendeteksi apakah kode pengemudi berpotensi
menyebabkan kebuntuan di beberapa titik.
Verifikasi DMA
Ketika opsi ini aktif, Driver Verifier memantau penggunaan rutinitas akses memori
langsung (DMA) oleh pengemudi. Ini mendeteksi penggunaan buffer DMA,
adaptor, dan register peta yang tidak tepat.
Saat opsi ini aktif, Driver Verifier menempatkan tekanan memori ekstrem pada
driver dengan membatalkan kode yang dapat di halaman. Jika driver mencoba
mengakses memori halaman di IRQL yang salah atau sambil memegang kunci
putar, Driver Verifier mendeteksi perilaku ini.
Verifikasi I/O
Ketika opsi ini aktif, Driver Verifier mengalokasikan Paket Permintaan Interupsi
(IDP) pengemudi dari kumpulan khusus, dan memantau penanganan I /O
pengemudi. Ini mendeteksi penggunaan rutinitas I / O yang ilegal atau tidak
konsisten. Driver Verifier juga memantau panggilan dari beberapa rutinitas I / O
Manager dan melakukan pengujian stres irps Plug-and-Play (PnP), IRPs daya dan
IMI IRPs.
Pemeriksaan lain-lain
Ketika opsi ini aktif, Driver Verifier mencari penyebab umum kecelakaan
pengemudi, seperti kesalahan penanganan memori yang dibebaskan.
Pelacakan kumpulan
Ketika opsi ini aktif, Driver Verifier memeriksa untuk melihat apakah pengemudi
telah membebaskan semua alokasi memorinya saat diturunkan. Ini
mengungkapkan kebocoran memori.
Pemeriksaan keamanan
Ketika opsi ini aktif, Driver Verifier mencari kesalahan umum yang dapat
mengakibatkan kerentanan keamanan, seperti referensi ke alamat mode pengguna
berdasarkan rutinitas mode kernel.
Saat opsi ini aktif, Driver Verifier mengalokasikan sebagian besar permintaan
memori pengemudi dari kumpulan khusus. Kumpulan khusus ini dipantau untuk
pembengkakan memori, tayangan memori, dan memori yang diakses setelah
dibebaskan.
Saat opsi ini aktif, Driver Verifier secara acak gagal dalam permintaan alokasi
kumpulan dan permintaan sumber daya lainnya. Dengan menyuntikkan kesalahan
alokasi ini ke dalam sistem, Driver Verifier menguji kemampuan pengemudi untuk
mengatasi situasi sumber daya rendah.
Saat opsi ini aktif, Driver Verifier menguji respons pengemudi terhadap nilai
pengembalian STATUS_PENDING dengan mengembalikan STATUS_PENDING untuk
panggilan acak ke IoCallDriver.
Pencatatan IRP
Saat opsi ini aktif, Driver Verifier memantau penggunaan IRP oleh pengemudi dan
membuat log penggunaan IRP.
Opsi Invarian MDL Checking for Stack memantau bagaimana driver menangani
buffer MDL invarian di seluruh tumpukan driver. Driver Verifier dapat mendeteksi
modifikasi ilegal buffer MDL invarian. Untuk menggunakan opsi ini, Verifikasi I/O
harus diaktifkan pada setidaknya satu driver.
Opsi Invarian MDL Checking for Driver memantau bagaimana driver menangani
buffer MDL invarian berdasarkan per-driver. Opsi ini mendeteksi modifikasi ilegal
buffer MDL invarian. Untuk menggunakan opsi ini, Anda harus mengaktifkan
Verifikasi I/O pada setidaknya satu driver.
Ketika opsi ini aktif, Driver Verifier mengacak jadwal utas untuk membantu
membuang kesalahan konkurensi pada pengemudi.
Topik terkait
Verifikator Pengemudi
Cara menguji driver saat runtime menggunakan Visual Studio
Menyebarkan Driver ke Komputer Uji
Memulai dengan debugging Windows
Properti Pemverifikasi KMDF untuk
Proyek Paket Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Mengatur properti untuk Pemverifikasi KMDF (atau pemverifikasi kerangka kerja) pada
komputer jarak jauh. Anda dapat menggunakan pengaturan ini saat membuat dan
menyebarkan driver KMDF ke komputer uji. Untuk informasi tentang driver KMDF, lihat
Kerangka Kerja Driver Mode Kernel.
Opsi Deskripsi
Lacak Handel Objek KMDF Menentukan daftar tipe handel objek untuk
dilacak.
Mengatur properti untuk Verifier UMDF di komputer uji. Anda dapat menggunakan
pengaturan ini saat membuat dan menyebarkan driver ke komputer uji.
Untuk informasi tentang debugging driver UMDF, lihat Cara Mengaktifkan Debugging
Driver UMDF dan Aplikasi Kontrol Verifikator WDF.
Opsi Deskripsi
Batas waktu pada Beban Driver (detik) Menentukan waktu untuk menunggu (dalam
hitungan detik) sebelum melampirkan
debugger setelah driver dimuat.
Batas waktu pada Driver Start (detik) Menentukan waktu untuk menunggu (dalam
hitungan detik) sebelum melampirkan
debugger setelah driver dimulai.
Verifikasi pada Level Saat Ini Memverifikasi driver yang dibuat menggunakan
versi kerangka kerja yang lebih lama terhadap
aturan versi kerangka kerja saat ini.
Topik terkait
Kerangka Kerja Driver Mode Pengguna
Verifikator Pengemudi
Menyebarkan Driver ke Komputer Uji
Properti Inf2Cat untuk Proyek Paket
Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Mengatur properti untuk alat Inf2Cat . Alat Inf2Cat dapat digunakan untuk membuat
file katalog untuk paket driver apa pun yang memiliki file INF.
Jika paket driver diinstal dengan menggunakan file INF, gunakan alat Inf2Cat untuk
membuat file katalog. Inf2Cat memvalidasi bahwa file yang direferensikan dalam file INF
ada dalam paket. Untuk menambahkan file ke paket, gunakan halaman properti untuk
proyek paket dan proyek driver. Lihat Membuat Paket Driver untuk informasi lebih
lanjut.
Opsi Deskripsi
Jalankan Inf2Cat Menjalankan alat Inf2Cat pada file INF apa pun
dalam proyek (misalnya, file .inf, .inx, atau .inv).
Untuk informasi selengkapnya tentang alat Inf2Cat, lihat Menggunakan Inf2Cat untuk
Membuat File Katalog.
Untuk informasi tentang halaman dan proyek properti, lihat lingkungan WDK dan Visual
Studio build.
Topik terkait
Membuat File Katalog untuk Paket Driver PnP
Inf2Cat
Membuat Paket Driver
Menandatangani Driver
Menggunakan Inf2Cat untuk Membuat File Katalog
WDK dan Visual Studio membangun lingkungan
Cara membuat skrip penginstalan driver
kustom
Artikel • 13/12/2022 • 2 menit untuk membaca
Jika skenario penyebaran Anda membutuhkan lebih dari sekadar menginstal paket
driver di komputer uji, Anda dapat memilih untuk menjalankan skrip perintah kustom
Anda sendiri saat instalasi.
Prasyarat
Paket driver yang diuji ditandatangani dan siap dipasang. Anda harus terlebih
dahulu membuat dan membangun driver Anda dan kemudian membuat paket
driver untuk instalasi. Untuk informasi selengkapnya, lihat Membuat Driver dan
Membuat Paket Driver.
Uji komputer yang dikonfigurasi dan disediakan untuk penyebaran. Lihat Cara
menguji driver saat runtime menggunakan Visual Studio.
Instruksi
1. Buka halaman properti untuk proyek paket driver Anda. Pilih dan tahan (atau klik
kanan) proyek driver di Penjelajah Solusi dan pilih Properti.
3. Pilih Aktifkan penyebaran lalu pilih komputer uji yang akan digunakan.
4. Pilih Baris Perintah Kustom. Di dalam kotak, ketik skrip perintah kustom yang ingin
Anda jalankan saat instalasi.
5. Dalam kotak teks File Tambahan , tambahkan skrip perintah dan file instalasi
lainnya untuk disalin ke komputer uji. Saat driver disebarkan, berkas tambahan
disalin ke folder %Systemdrive%\drivertest\drivers di komputer jarak jauh.
Topik terkait
Menyebarkan Driver ke Komputer Uji
Properti Penyebaran untuk Proyek Driver
Cara menguji driver saat runtime menggunakan Visual Studio
Membangun Driver
Membuat Paket Driver
Menginstal driver pada Windows 10
Mobile
Artikel • 13/12/2022 • 2 menit untuk membaca
Untuk menginstal driver pada Windows 10 Mobile, gunakan file .spkg. .spkg ("file paket")
adalah modul mandiri yang berisi paket driver Anda.
WDK 10 mencakup PkgGen, alat yang menghasilkan file paket. Anda menjalankan
PkgGen di Visual Studio saat membuat driver, menggunakan prosedur berikut.
1. Pilih dan tahan (atau klik kanan) proyek driver dan pilih Tambahkan> Item Baru.
Selanjutnya, di bawah Visual C++->Windows Driver, pilih Manifes Paket. Pilih
Tambahkan.
2. Visual Studio menambahkan file yang disebut Package.pkg.xml ke proyek driver
Anda. Anda dapat memilih dan menahan (atau mengklik kanan) file dan memilih
properti untuk memverifikasi bahwa jenis item adalah PkgGen. (Pada halaman
properti yang sama ini, Anda dapat mengatur Dikecualikan dari Build ke Ya jika
Anda memutuskan nanti bahwa Anda ingin membangun proyek driver ini dan
tidak menghasilkan file paket.) Pilih OK.
3. Pilih dan tahan (atau klik kanan) proyek driver dan pilih Properti. Di bawah Properti
Konfigurasi, buka node PackageGen dan ubah Versi ke nilai apa pun yang Anda
suka.
4. Simpan pekerjaan Anda dan mulai ulang Visual Studio sebagai administrator.
5. Bangun driver Anda. Visual Studio menautkan ke pustaka yang diperlukan dan
menghasilkan file .cat, file .inf, biner driver, dan file .spkg.
Untuk melihat isi file paket, tambahkan akhiran .cab ke nama file lalu buka file kabin di
Windows Explorer.
Untuk mempelajari tentang menjalankan PkgGen di luar Visual Studio, lihat Membuat
paket seluler.
Untuk menginstal paket driver seluler (file.spkg), Anda memiliki dua opsi.
Jika Anda memperbarui paket yang ada pada sistem target atau menambahkan
paket baru ke target, gunakan IUTool.exe untuk menginstal paket driver .spkg.
Jika Anda menggabungkan paket ke dalam gambar OS seluler, gunakan ImgGen
untuk menambahkan paket driver .spkg ke gambar pembaruan flash penuh (FFU)
yang kemudian dapat di-flash ke perangkat seluler.
Menggunakan IUTool untuk menambahkan paket driver seluler (.spkg) ke perangkat
yang sedang berjalan
Pasang perangkat seluler Anda ke PC. Kemudian, dari prompt perintah yang
ditingkatkan, keluarkan perintah berikut:
C++
IUTool -p MyKmdfDriver.spkg
1. Setelah Anda menginstal Visual Studio, pada layar Mulai, pilih folder Visual Studio
2015. Pilih dan tahan (atau klik kanan) Perintah Pengembang untuk VS2015, dan
pilih Jalankan sebagai Administrator.
Untuk informasi umum tentang driver debugging, lihat Memulai dengan debugging
Windows.
Untuk informasi tentang mengonfigurasi komputer target dan menyiapkan kabel debug
menggunakan koneksi jaringan, lihat Menyiapkan Debugging Kernel Jaringan KDNET
Secara Otomatis.
Lihat juga
Windows Debugging.
Menguji Driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Demonstrasi Video
Video ini menunjukkan cara menjalankan tes terkait driver dalam grup pengujian.
https://www.microsoft.com/id-id/videoplayer/embed/e12e5ce5-b41f-4b91-ab5f-
69598ccdcb57?autoplay=false&postJsllMsg=true&autoCaptions=id-id
Bagian ini menjelaskan beberapa strategi untuk menguji driver, dan informasi tentang
cara Anda memilih dan mengonfigurasi komputer jarak jauh untuk digunakan untuk
pengujian.
Untuk menyiapkan driver untuk distribusi publik, Anda harus menjalankan Windows
Hardware Certification Kit (HCK). Untuk informasi tentang program Sertifikasi Windows
dan cara mendapatkan HCK, lihat Program Sertifikasi Perangkat Keras Windows.
WDK menyediakan binari uji dan alat yang memudahkan untuk menjalankan tes Device
Fundamentals dari baris perintah.
Untuk informasi selengkapnya, lihat Menjalankan Tes
DevFund melalui baris perintah.
Topik Deskripsi
Topik Deskripsi
Tips untuk menguji driver selama Kapan Anda harus mulai menguji? Segera
pengembangan setelah Anda memiliki persyaratan untuk
pengemudi Anda, Anda dapat mulai
merancang kasus uji untuk menguji bahwa
persyaratan kritis telah diterapkan. Studi
menunjukkan bahwa menemukan dan
memperbaiki cacat dalam kode menjadi lebih
mahal semakin lama cacat tetap dalam kode.
Menemukan dan memperbaiki cacat di awal
siklus pengembangan lebih murah dan
mengganggu daripada menemukan cacat
setelah kode dirilis dan didistribusikan.
Membuat kasus uji anda lebih awal juga dapat
membantu anda menemukan masalah dalam
desain anda.
Cara menguji driver saat runtime menggunakan Ekstensi WDK untuk Visual Studio menyediakan
Visual Studio antarmuka pengujian perangkat yang
memungkinkan Anda untuk dengan mudah
membangun, menyebarkan, menginstal, dan
menguji driver pada komputer uji di jaringan
Anda. WDK menyediakan kumpulan tes driver
perangkat yang dapat Anda gunakan untuk
menguji fitur dan fungsi driver Anda.
Cara menulis tes driver menggunakan templat Anda dapat menggunakan Windows Driver Kit
Uji Driver (WDK) untuk Windows 8 membuat tes driver
Anda sendiri atau untuk menyesuaikan
beberapa tes yang disediakan. Anda dapat
menyebarkan tes yang Anda buat ke komputer
uji jarak jauh menggunakan kerangka
pengujian driver yang disediakan WDK untuk
Microsoft Visual Studio Ultimate 2012.
Lihat juga
Alat untuk Memverifikasi Driver
Tips untuk menguji driver selama
pengembangan
Artikel • 13/12/2022 • 4 menit untuk membaca
Kapan Anda harus mulai menguji? Segera setelah Anda memiliki persyaratan untuk
pengemudi Anda, Anda dapat mulai merancang kasus uji untuk menguji bahwa
persyaratan kritis telah diterapkan. Studi menunjukkan bahwa menemukan dan
memperbaiki cacat dalam kode menjadi lebih mahal semakin lama cacat tetap dalam
kode. Menemukan dan memperbaiki cacat di awal siklus pengembangan lebih murah
dan mengganggu daripada menemukan cacat setelah kode dirilis dan didistribusikan.
Membuat kasus uji anda lebih awal juga dapat membantu anda menemukan masalah
dalam desain anda.
Anotasi kode Anda menggunakan bahasa anotasi kode sumber Microsoft (SAL)
2.0. Anotasi menggambarkan bagaimana suatu fungsi menggunakan
parameternya — asumsi yang dibuatnya tentang mereka, dan jaminan yang
dibuatnya ketika selesai. Anotasi juga meningkatkan akurasi alat analisis kode.
Untuk informasi selengkapnya tentang anotasi khusus pengemudi, lihat Anotasi
SAL 2.0 untuk Driver.
Gunakan alat untuk memverifikasi driver saat Anda mengembangkan driver Anda.
Untuk panduan tentang kapan harus menggunakan alat verifikasi tertentu, lihat
Menganalisis Driver menggunakan Alat Analisis dan Verifikasi Kode.
Gunakan alat InfVerif untuk memverifikasi struktur dan sintaks file INF, dan untuk
membantu Anda mendiagnosis file INF dan masalah terkait instalasi lainnya.
Gunakan alat Inf2Cat (dengan opsi /nocat ) untuk melakukan verifikasi file INF
tambahan. Inf2Cat dapat memverifikasi bahwa file yang dirujuk oleh INF ada dan
ditempatkan di direktori paket seperti yang diharapkan INF.
Jalankan tes DriverInstall yang disertakan sebagai bagian dari tes Dasar Perangkat
yang disediakan di WDK. Lihat Cara menguji driver saat runtime menggunakan
Visual Studio dan Cara memilih dan mengonfigurasi Pengujian Dasar Perangkat.
Tes DriverInstall dapat dijalankan setelah driver disebarkan ke komputer uji. Anda
dapat menambahkan tes DriverInstall ke Grup Uji Driver. Tes DriverInstall muncul
di Kategori Uji Driver di bawah Semua Tes\Basic\Device
Fundamentals\DriverInstall.
Menggunakan Visual Studio dan WDK, Anda dapat menguji dan memecahkan
masalah instalasi paket driver saat anda menyebarkan driver ke komputer uji, lihat
Menyebarkan Driver ke Komputer Uji. Pilih opsi Instal dan Verifikasi dari Properti
Penyebaran untuk Proyek Paket Driver. Saat Anda memilih opsi ini dan
menentukan Tugas Instalasi Paket Driver Default (kemungkinan reboot) atau
Tugas Instalasi Paket Driver Printer Default (kemungkinan reboot), pengujian
membaca file INF driver dan menginstal driver. Tes kemudian memverifikasi bahwa
pengemudi sudah bangun dan berjalan. Setelah selesai, tes memberikan informasi
rinci tentang keberhasilan atau kegagalan tugas instalasi. Hasil menunjukkan di
Driver Test Group Explorer, di bawah Instalasi Driver Test Groups > Driver. Nama
tugasnya adalah Tugas Instalasi Paket Driver Default.
Jalankan tes Device Fundamental yang disertakan dalam WDK. Lihat Cara menguji
driver saat runtime menggunakan Visual Studio dan Cara memilih dan
mengonfigurasi Pengujian Dasar Perangkat.
Uji driver dan perangkat Anda pada konfigurasi perangkat keras yang berbeda
sebanyak mungkin. Memvariasikan perangkat keras dapat membantu Anda
menemukan konflik antara perangkat dan kesalahan lain dalam interaksi
perangkat. Misalnya, Anda harus menguji driver dan perangkat Anda di komputer
yang memiliki arsitektur prosesor yang berbeda dan pada komputer yang
menjalankan versi Windows 32-bit dan 64-bit.
Uji driver dan perangkat Anda pada sistem multiprosesor. Kondisi ras dan masalah
waktu lainnya muncul pada sistem multiprosesor yang tidak akan ditemukan. Lihat
Cara memilih dan mengonfigurasi Parameter Pengujian dasar dan Boot Perangkat
untuk Menguji Driver untuk Beberapa Dukungan Grup Prosesor.
Uji driver dan perangkat Anda untuk kondisi sistem dan perangkat keras tertentu,
terutama kondisi tepi. Misalnya, kondisi ini mungkin termasuk "D3 panas" dan "D3
dingin." Pastikan driver dan perangkat Anda dapat kembali dengan benar dari
status daya perangkat "D3 panas" (tanpa kehilangan daya) dan "D3 dingin" (saat
daya dihapus dari perangkat). Untuk informasi selengkapnya, lihat Cara memilih
dan mengonfigurasi Pengujian Dasar Perangkat.
Cara menguji driver saat runtime
menggunakan Visual Studio
Artikel • 13/12/2022 • 6 menit untuk membaca
Ekstensi WDK untuk Visual Studio menyediakan antarmuka pengujian perangkat yang
memungkinkan Anda membangun, menyebarkan, menginstal, dan menguji driver
dengan mudah di komputer uji di jaringan Anda. WDK menyediakan kumpulan
pengujian driver perangkat yang dapat Anda gunakan untuk menguji fitur dan fungsi
driver Anda.
Prasyarat
Paket Driver yang siap diinstal. Anda harus terlebih dahulu membuat dan
membangun driver Anda. Mulai Windows 10 versi WDK, Paket Driver secara
otomatis dibuat untuk penginstalan. Untuk informasi selengkapnya, lihat
Membangun Driver.
Driver harus ditandatangani pengujian. Untuk informasi selengkapnya, lihat
Menandatangani Driver.
Komputer uji (atau komputer). Komputer uji harus berada di jaringan yang sama
dengan komputer yang Anda gunakan untuk pengembangan. Kedua komputer
harus tersambung ke domain yang sama, atau keduanya tersambung ke jaringan
di bawah grup kerja yang sama. Komputer pengujian harus menjalankan versi
Windows yang ingin Anda targetkan untuk pengujian.
Perangkat yang akan diuji.
(Disarankan) Siapkan koneksi debugging mode kernel ke komputer uji. Untuk
menggunakan koneksi jaringan untuk penelusuran kesalahan mode kernel,
komputer target harus berjalan Windows 8. Pada komputer yang menjalankan
Windows 7 atau Windows Vista, Anda dapat mengatur USB, 1394, atau koneksi
serial untuk penelusuran kesalahan mode kernel. Untuk informasi selengkapnya,
lihat Menyediakan komputer untuk penyebaran dan pengujian driver (WDK 8.1).
Instruksi
1. Jika Anda belum melakukannya, ikuti instruksi untuk Menyediakan komputer untuk
penyebaran dan pengujian driver (WDK 8.1).
2. Koneksi perangkat yang ingin Anda uji ke komputer pengujian atau komputer.
Anda juga dapat mengaktifkan dan mengatur opsi untuk Driver Verifier, alat verifikasi
runtime untuk driver. Driver Verifier memantau driver Saat Anda menjalankan pengujian
pada komputer uji. Untuk informasi tentang mengatur opsi Pemverifikasi Driver untuk
penyebaran, lihat Properti Pemverifikasi Driver untuk Proyek Driver.
Anda juga dapat menjalankan pengujian di luar Visual Studio, untuk informasi
selengkapnya lihat Cara menguji driver saat runtime dari Prompt Perintah. Mulai dari
WDK 8.1, Anda dapat menyalin dan menjalankan HCK Test Suites di komputer uji
menggunakan skrip perintah. Lihat Cara menjalankan HCK Test Suites di WDK 8.1.
1. Dari menu Driver , pilih Uji lalu pilih Uji Penjelajah Grup.
2. Di jendela Penjelajah Grup Uji Driver , pilih tombol Buat grup pengujian baru .
Atau, pilih Grup Pengujian Baru dari menu Driver .
3. Di jendela Grup Uji Driver untuk grup yang Anda buat, ketik nama di kotak teks
Nama Grup Uji untuk mengidentifikasi grup. Nama defaultnya adalah Driver Test
Group_nnnnn, di mana nnnnn mewakili jumlah grup pengujian
5. Dalam kotak dialog Tambahkan atau Hapus Pengujian Driver , Anda dapat
menentukan kategori dan arsitektur pengujian driver (Semua, x86, x64, Arm).
Secara default semua pengujian ditampilkan. Untuk melihat kategori pengujian,
pilih folder di daftar drop-down Kategori Pengujian Driver.
1. Anda dapat melihat dan mengedit semua parameter pengujian runtime untuk
pengujian dengan memilih nama pengujian di jendela Grup Uji Driver . Jendela
Grup Uji Driver menyediakan deskripsi pengujian yang dipilih dan juga
memberikan deskripsi parameter pengujian yang Anda pilih. Untuk informasi
tentang mengatur parameter pengujian, lihat Cara memilih dan mengonfigurasi
Pengujian Dasar-Dasar Perangkat
2. Setelah Anda memilih pengujian, atur parameter, dan beri nama grup, pilih
Simpan.
Saat Anda menyimpan grup pengujian, grup pengujian akan menjadi grup
pengujian yang saat ini dipilih, dan nama grup pengujian akan muncul di toolbar
Uji Driver. Anda sekarang dapat menjalankan pengujian terhadap komputer uji
jarak jauh yang saat ini dipilih (juga ditampilkan di toolbar Uji Driver).
Untuk informasi tentang menyebarkan driver secara otomatis pada waktu build, lihat
Menyebarkan Driver ke Komputer Uji. Untuk informasi tentang menyetel opsi
Pemverifikasi Driver secara otomatis pada komputer uji, lihat Properti Pemverifikasi
Driver untuk Proyek Driver. Anda harus selalu memfungsikan Pemverifikasi Driver pada
komputer uji Anda.
Keterangan
Untuk informasi tentang pengujian driver dan kategori pengujian, lihat Cara memilih
dan mengonfigurasi Pengujian Dasar-Dasar Perangkat. Untuk informasi tentang
kerangka kerja pengujian, lihat Test Authoring and Execution Framework (TAEF) dan
Windows Driver Test Framework (WDTF).
Anda dapat menulis pengujian driver Anda sendiri dan menyebarkan pengujian tersebut
pada komputer pengujian. Untuk informasi selengkapnya, lihat Cara menulis pengujian
driver.
Topik terkait
Cara menjalankan HCK Test Suites di WDK 8.1
Cara memilih dan mengonfigurasi Pengujian Dasar-Dasar Perangkat
Menyebarkan Driver ke Komputer Uji
Mulai menggunakan Windows Debugging
Program Sertifikasi Perangkat Keras
Kit Sertifikasi Perangkat Keras Windows (HCK)
Cara menguji driver saat runtime dari Prompt Perintah
Cara menjalankan HCK Test Suites di
WDK 8.1
Artikel • 13/12/2022 • 6 menit untuk membaca
Untuk mempermudah pengujian Windows driver di WDK, dimulai dengan WDK 8.1,
Anda sekarang dapat memilih rangkaian pengujian HCK untuk dijalankan pada
komputer uji. Rangkaian pengujian HCK mencakup pengujian dasar-dasar perangkat,
dan pengujian untuk grafis, pencitraan, LAN nirkabel, broadband seluler (CDMA dan
GSM), dan perangkat WiFi Direct. Ini adalah pengujian yang sama yang digunakan
dalam kit Sertifikasi Perangkat Keras Windows (Windows HCK). Lihat Program Sertifikasi
Windows untuk Perangkat Keras untuk informasi tentang HCK Windows.
Anda dapat menjalankan pengujian HCK dari jendela Prompt Perintah atau dari Visual
Studio. Selain itu, Anda dapat menyalin pengujian ini ke lokasi baru—yang mungkin
merupakan komputer lain atau drive kunci USB—dan menjalankan pengujian dari lokasi
tersebut. Meluncurkan pengujian secara otomatis mengatur konfigurasi lokal apa pun
yang diperlukan untuk menjalankan pengujian.
Siapkan komputer uji sesuai kebutuhan, dengan menginstal perangkat dan driver dan
persyaratan tambahan untuk topologi pengujian (lihat prasyarat pengujian HCK untuk
perangkat yang Anda uji). Sebagai pengganti pengontrol HCK Studio dan HCK, Anda
menjalankan pengujian menggunakan Visual Studio dan WDK 8.1.
1. Dari menu Driver , pilih Uji lalu pilih Uji Penjelajah Grup.
2. Di jendela Driver Test Group Explorer , pilih salah satu HCK Test Suites.
Saat Anda memilih Test Suite, Test Suite muncul di jendela Grup Uji Driver .
3. Pastikan Anda telah memilih komputer uji yang telah Dikonfigurasi untuk
perangkat yang sedang Anda uji dengan HCK Test Suite.
5. Anda dapat menggunakan kotak centang untuk memilih pengujian yang cocok
dengan arsitektur komputer uji yang dimaksudkan (x86, x64, Arm).
6. Dari menu Driver , pilih Uji Coba > Uji Coba. Secara default, perintah Jalankan
pengujian menjalankan semua pengujian dalam grup pengujian yang saat ini
dipilih.
Anda juga dapat menyalin salah satu HCK Test Suites yang disediakan dan
mengekspornya, bersama dengan file dukungan pengujian yang diperlukan sehingga
Anda dapat menjalankan rangkaian pengujian dari jendela Prompt Perintah.
1. Di Test Group Explorer, pilih dan tahan (atau klik kanan) HCK Test Suite yang ingin
Anda salin dan pilih Ekspor Test Suite... dari menu short-cut. (Perintah
menjalankan skrip CopyMe.cmd ).
2. Pilih folder tujuan untuk rangkaian pengujian. Anda dapat mengekspor rangkaian
pengujian ke berbagi jaringan atau ke flash drive USB.
3. Untuk menjalankan HCK Test Suite, buka jendela Prompt Perintah di komputer
pengujian dengan izin yang ditingkatkan. Navigasikan ke direktori tujuan dan
jalankan skrip RunMe.cmd . Untuk informasi selengkapnya, lihat Untuk
menjalankan HCK Test Suite dari jendela Command Prompt.
2. Jalankan skrip CopyMe.cmd dan tentukan nama rangkaian pengujian dan direktori
tujuan. Skrip memiliki sintaks berikut:
C++
CopyMe.cmd testSuite destinationPath
Dasar-Dasar Device.Device
Device.Graphics
Device.Imaging
Device.Network.MobileBroadband.CDMA
Device.Network.MobileBroadband.GSM
Device.Network.WLAN
DestinationPath dapat berupa jalur yang valid, termasuk jalur UNC. Misalnya, Anda
dapat menyalin HCK Test Suite ke flash drive USB, atau ke berbagi di server.
C++
Copy complete!
"RunMe.cmd <infFileName>"
Catatan Jika komputer pengujian berjalan Windows 7, Anda perlu mengunduh dan
menginstal Microsoft .NET Framework 4.5 sebelum dapat menjalankan HCK Test Suite.
1. Pada komputer pengujian yang telah Anda konfigurasi untuk pengujian, buka
jendela Prompt Perintah dengan hak istimewa yang ditinggikan (Jalankan sebagai
administrator) dan navigasikan ke direktori tempat Anda menyalin HCK Test Suite.
2. Jalankan skrip RunMe.cmd dan tentukan jalur dan nama file INF. Skrip memiliki
sintaks berikut:
C++
RunMe.cmd infFileName
Contohnya:
C++
RunMe.cmd myDriver.inf
Persyaratan perangkat keras, perangkat lunak, Prasyarat Pengujian Adaptor Grafis atau
dan pengujian Chipset
HCK Tests.Basic.Device.Network.MobileBroadband.CDMA
Test Suite
Gunakan rangkaian pengujian ini untuk menguji perangkat CDMA Mobile Broadband.
Ikuti panduan untuk menyiapkan dan mengonfigurasi perangkat Anda seperti yang
dijelaskan dalam Prasyarat Pengujian Broadband Seluler. Sebagai pengganti pengontrol
HCK Studio dan HCK, Anda menjalankan pengujian dasar menggunakan Visual Studio
dan WDK 8.1.
HCK
Tests.Basic.Device.Network.MobileBroadband.CDMA
Test Suite
Persyaratan perangkat keras, perangkat lunak, dan Prasyarat Pengujian Broadband Seluler
pengujian
HCK Tests.Basic.Device.Network.MobileBroadband.GSM
Test Suite
Gunakan rangkaian pengujian ini untuk menguji perangkat Mobile Broadband GSM.
Ikuti panduan untuk menyiapkan dan mengonfigurasi perangkat Anda seperti yang
dijelaskan dalam Prasyarat Pengujian Broadband Seluler. Sebagai pengganti pengontrol
HCK Studio dan HCK, Anda menjalankan pengujian dasar menggunakan Visual Studio
dan WDK 8.1.
HCK
Tests.Basic.Device.Network.MobileBroadband.GSM
Test Suite
Persyaratan perangkat keras, perangkat lunak, dan Prasyarat Pengujian Broadband Seluler
pengujian
Persyaratan perangkat keras, perangkat lunak, Prasyarat Pengujian LAN Nirkabel (802.11)
dan pengujian
Topik terkait
Cara menguji driver runtime menggunakan Visual Studio
Cara memilih dan mengonfigurasi Pengujian Dasar-Dasar Perangkat
Menyebarkan Driver ke Komputer Uji
Mulai menggunakan Windows Debugging
Program Sertifikasi Perangkat Keras
Kit Sertifikasi Perangkat Keras Windows (HCK)
Cara menguji driver saat runtime dari Prompt Perintah
Cara memilih dan mengonfigurasi
pengujian Dasar Perangkat
Artikel • 13/12/2022 • 7 menit untuk membaca
Salah satu parameter yang paling berguna adalah DQ, yang menentukan perangkat
target untuk diuji. Nilai default (IsDevice) menguji semua perangkat pada komputer
target. Parameter DQ mengambil kueri WDTFSDEL yang mengidentifikasi perangkat
target. Anda dapat menentukan perangkat tertentu untuk pengujian, misalnya:
Contoh umum:
Misalnya,
INF::OriginalInfFileName='KMDFTest.inf'
Misalnya,
DeviceID='USB\ROOT_HUB\4&1CD5D022&0'
Untuk menguji perangkat dengan antarmuka
tertentu:
Antarmuka::InterfaceGUID
Untuk menguji perangkat dengan huruf driver
tertentu:
Volume::D riverLetter='DriveLetter'
PerformIO(KMDFTest Device
ROOT\SAMPLE\0000 ) Hitung 1
WDTF_SIMPLEIO_STRESS_PROC : INFO : -
Terminate(KMDFTest Device
ROOT\SAMPLE\0000) proses
Untuk menguji semua perangkat kelas
perangkat tertentu:
Misalnya, Class=CDROM akan menguji semua
perangkat CDROM kelas.
Contoh: fe80::78b6:810:9c12:46cd
Parameter Deskripsi
Tes utilitas
Uji Deskripsi
Verifikator Pengemudi
Uji Deskripsi
Parameter: Tidak
Topik terkait
Cara menguji driver saat runtime menggunakan Visual Studio
Tes Fundamental Perangkat
Disediakan plug-in I/O Sederhana WDTF
Cara menyesuaikan I/O untuk perangkat Anda menggunakan WDTF Simple I/O
Action Plug-in
Cara menguji paket driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Anda dapat menggunakan Visual Studio untuk menyebarkan dan menginstal paket
driver di komputer uji, lalu memverifikasi bahwa driver diinstal dan berjalan.
Prasyarat
Paket driver yang siap dipasang. Anda harus terlebih dahulu membuat dan
membangun driver Anda dan kemudian membuat paket driver untuk instalasi.
Untuk informasi selengkapnya, lihat Membuat Driver dan Membuat Paket Driver.
Jika Anda belum melakukannya, ikuti petunjuk untuk Menyediakan komputer
untuk penyebaran dan pengujian driver (WDK 8.1).
Setelah Mengonfigurasi dan menyediakan komputer uji, Anda dapat
menggunakan Visual Studio untuk menyebarkan driver, menjadwalkan pengujian,
dan men-debug driver di komputer uji. Untuk informasi tentang penyebaran dan
tentang bagaimana Anda dapat menyebarkan driver secara otomatis pada waktu
pembuatan, lihat Menyebarkan Driver ke Komputer Uji.
Instruksi
1. Buka halaman properti untuk proyek driver Anda. pilih dan tahan (atau klik kanan)
proyek driver di Penjelajah Solusi dan pilih Properti.
2. Di halaman properti untuk pengandar, pilih Properti Konfigurasi, pilih
Penginstalan Pengandar, lalu pilih Penyebaran.
3. Pilih opsi Aktifkan penyebaran . Untuk informasi selengkapnya, lihat Properti
Penyebaran untuk Proyek Driver.
4. Pilih komputer uji yang telah Anda konfigurasikan sebagai Komputer Jarak Jauh.
5. Di bawah Opsi Penginstalan Pengandar, pilih Instal dan Verifikasi, lalu pilih Tugas
Penginstalan Pengandar Default.
Topik terkait
Menyediakan komputer untuk penyebaran dan pengujian driver (WDK 8.1)
Menyebarkan Driver ke Komputer Uji
Menguji Driver
Cara membaca log hasil pengujian
driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Dari Driver Test Group Explorer, Anda dapat menampilkan hasil dari pengujian driver,
menyimpan hasil pengujian ke folder, atau memuat hasil dari folder.
3. Hasil untuk pengujian dalam uji coba tersebut tercantum. Pilih nama pengujian
untuk melihat log hasil.
Log hasil menyediakan ringkasan pengujian yang dijalankan, bersama dengan detail
yang dihasilkan oleh kasus pengujian. Informasi yang direkam mencakup waktu dan
tanggal setiap pengujian dijalankan, nama komputer uji jarak jauh yang menjalankan
pengujian, dan hasil pengujian (jumlah pengujian yang dijalankan, lulus, gagal).
Menyimpan hasil pengujian ke folder
1. Di jendela Driver Test Group Explorer , pilih dan tahan (atau klik kanan) hasil dari
uji coba yang Anda minati.
2. Pilih Simpan untuk membuka kotak dialog untuk menyimpan hasilnya ke folder.
Cara menguji driver saat runtime dari
Command Prompt
Artikel • 13/12/2022 • 2 menit untuk membaca
Mulai WDK 8.1, Anda dapat menyalin dan menjalankan HCK Test Suites di komputer uji
menggunakan skrip perintah. Lihat Cara menjalankan HCK Test Suites di WDK 8.1.
Prasyarat
Instal Visual Studio dan WDK di komputer yang Anda gunakan untuk
pengembangan.
Dari Visual Studio, Anda dapat mengonfigurasi dan menyediakan komputer untuk
pengujian. Saat Anda mengonfigurasi komputer uji, kerangka uji driver WDK
secara otomatis memungkinkan komputer uji untuk debugging jarak jauh dan
mentransfer binari uji dan file pendukung yang diperlukan. Jika Anda belum
melakukannya, ikuti petunjuk di Penyediaan komputer untuk penyebaran dan
pengujian driver (WDK 8.1)
Meskipun tidak disarankan, Anda juga dapat menginstal komponen pengujian
yang diperlukan secara manual. Ikuti petunjuk untuk menginstal Test Authoring
and Execution Framework (TAEF) dan WDTF di komputer uji. Lihat Menginstal dan
menghapus TAEF secara manual di komputer uji dan WDTF Quick Start.
Instruksi
C++
Keterangan
Anda harus menentukan file biner uji (.dll) atau skrip (.wsc). Metode pengujian (/name:
<test method>) bersifat opsional. Untuk nama pengujian dan metode pengujian, lihat
Tes Dasar Perangkat. Untuk informasi tentang menentukan parameter pengujian, lihat
Parameter Uji Fundamental Perangkat dan Opsi PerintahTe.exe .
C++
Misalnya, untuk menjalankan uji PnP Surprise Remove pada perangkat dengan ID
perangkat tertentu.
C++
Topik terkait
Tes Fundamental Perangkat
Parameter Pengujian Fundamental Perangkat
Cara menjalankan HCK Test Suites di WDK 8.1
Kerangka Kerja Authoring dan Eksekusi Uji (TAEF)
Opsi PerintahTe.exe
Cara menulis tes driver menggunakan
templat Uji Driver
Artikel • 13/12/2022 • 3 menit untuk membaca
7 Catatan
Topik ini menjelaskan fungsionalitas yang hanya tersedia di Visual Studio 2013.
Untuk info tentang edisi WDK dan Visual Studio sebelumnya, lihat Unduhan WDK
lainnya.
Anda dapat menggunakan Windows Driver Kit (WDK) untuk Windows 8 membuat tes
driver Anda sendiri atau untuk menyesuaikan beberapa tes yang disediakan. Anda dapat
menyebarkan tes yang Anda buat ke komputer uji jarak jauh menggunakan kerangka
pengujian driver yang disediakan WDK untuk Microsoft Visual Studio Ultimate 2012.
WDK menyediakan templat yang membuat kode awal untuk proyek pengujian Driver
Windows dalam C++, C#, dan Script (Jscript). Anda dapat memilih kasus pengujian yang
ingin Anda sertakan, atau Anda dapat memulai dengan proyek kosong. Anda dapat
menyesuaikan kode untuk menambahkan kasus pengujian baru untuk driver Anda.
Anda dapat menyebarkan tes dari Visual Studio menggunakan kerangka kerja pengujian
driver.
Kasus Uji Plug and Play Kasus uji yang memaksa pengemudi untuk
menangani sebagian besar IRPs terkait Plug
and Play (PnP)
Kasus Uji Stres dan Fungsionalitas Menyediakan kasus pengujian yang melakukan
tegangan I /O dan pengujian fungsi antarmuka
IOCTL dan WMI.
Topik terkait
Kerangka Kerja Pengujian dan Eksekusi
Kerangka Pengujian Driver Windows
Cara menambahkan metadata pengujian
Cara menambahkan metadata
pengujian
Artikel • 13/12/2022 • 3 menit untuk membaca
Untuk Windows 8, Windows Driver Kit (WDK) menggunakan Test Authoring and
Execution Framework (TAEF) untuk membuat konten pengujian. Tes TAEF adalah objek
yang diimplementasikan sebagai pustaka tautan dinamis (DLL) yang berisi beberapa
metode, di mana setiap metode memetakan ke skenario pengujian tertentu. Objek TAEF
menggabungkan metode terkait ke dalam sekelompok tes. Untuk setiap pengujian, ada
satu set metadata yang menjelaskan pengujian. Untuk meningkatkan portabilitas dan
enkapsulasi pengujian, TAEF menyimpan metadata uji dalam objek uji itu sendiri. Saat
Anda membuat tes driver Anda sendiri menggunakan templat Uji Driver, Anda perlu
menambahkan metadata ini sehingga pengujian driver Anda tersedia dan dapat
digunakan menggunakan Visual Studio.
Prasyarat
Kode sumber untuk tes driver ditulis dengan menggunakan salah satu templat Uji
Driver. Untuk informasi, lihat Cara menulis tes driver menggunakan templat Uji
Driver.
2. Misalnya, jika Anda menggunakan templat Uji Driver untuk membuat versi tes
SurpriseRemove, metadata berikut akan ditambahkan. Edit deskripsi pengujian,
nama tampilan, kategori, dan atribut file hasil.
C++
C++
BEGIN_TEST_METHOD(DoSurpriseRemove)
TEST_METHOD_PROPERTY(L"Kits.Drivers", L"TRUE")
TEST_METHOD_PROPERTY(L"Kits.Parameter", L"DQ")
TEST_METHOD_PROPERTY(L"Kits.Parameter.DQ.Default",
L"INF::OriginalInfFileName='%InfFileName%'")
TEST_METHOD_PROPERTY(L"RebootPossible", L"true")
TEST_METHOD_PROPERTY(L"Kits.Drivers.ResultFile",
L"TestTextLog.log")
END_TEST_METHOD()
C#
C#
//
//
[TestMethod]
[TestProperty("Kits.Drivers", "TRUE")]
[TestProperty("Kits.Parameter", "DQ")]
[TestProperty("Kits.Parameter.DQ.Default",
"INF::OriginalInfFileName='%InfFileName%'")]
[TestProperty("RebootPossible", "true")]
[TestProperty("Kits.Drivers.ResultFile", "TestTextLog.log")]
<method name="PlugAndPlaySurpriseRemoveTest">
<TestMethodProperty name="Kits.Parameter.DQ.Default"
value="INF::OriginalInfFileName='%InfFileName%'"/>
<TestMethodProperty name="Kits.Drivers.ResultFile"
value="TestTextLog.log"/>
</method>
3. Tabel berikut menjelaskan atribut properti uji. Gunakan contoh untuk panduan saat
Anda mengedit atau menambahkan metadata untuk pengujian Anda.
Deskripsi
[Script]
C++
[C++]
Nama Tampilan
[Naskah]
C++
C++
[C++]
Kits.Parameter
[Naskah]
C++
[C++]
TEST_METHOD_PROPERTY(L"Kits.Parameter", L"DQ")
Kits.Parameter.<ParameterName>. Deskripsi
[Naskah]
C++
[C++]
[Naskah]
C++
[C++]
TEST_METHOD_PROPERTY(L"Kits.Parameter.DQ.Default",
L"INF::OriginalInfFileName='%InfFileName%'")
Kit.Driver
[Naskah]
C++
[C++]
TEST_METHOD_PROPERTY(L"Kits.Drivers", L"TRUE")
Kit.Kategori
[Naskah]
C++
C++
[C++]
Deploymentitem
Topik terkait
Cara menulis tes driver menggunakan templat Uji Driver
Masalah Umum Pemverifikasi Driver
Statis - Windows 10 Versi 1809
Artikel • 13/12/2022 • 4 menit untuk membaca
Halaman ini menjelaskan masalah umum yang mungkin Anda temui saat menggunakan
alat Static Driver Verifier (SDV) di Windows Driver Kit (WDK). Informasi di bawah ini
berkaitan secara khusus dengan versi alat yang dikirim dengan Pembaruan Windows 10
Oktober 2018 (Versi 1809).
Silakan lihat Masalah Yang Diketahui WDK untuk masalah SDV yang diketahui dengan
WDK resmi terbaru.
Kegagalan InterceptedBuild
Gejala utama: SDV gagal dengan FATAL ERROR: Unrecoverable error in
InterceptedBuild stage .
Saat memeriksa file DVL, Anda akan melihat AssessmentScore nilai dengan ScoreName="
[driverName].[architecture].SDV.NA.Reason" dan ScoreUnit="Unrecoverable error in
InterceptedBuild stage."
1. Jalankan ulang SDV dari Baris Perintah Alat Asli Visual Studio 2017 dengan bendera
/debug. Untuk detail tentang opsi perintah, lihat Perintah Pemverifikasi Driver
Statis.
a. Pertama, jalankan fungsi pustaka SDV pada proyek pustaka dependen apa pun.
Contoh: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv
/p:inputs="/lib /debug" .
b. Kemudian jalankan SDV pada proyek driver itu sendiri. Misalnya: msbuild
/p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"
3. Navigasi ke sdv folder yang dihasilkan di folder driver saat Anda menjalankan SDV.
b. Jika pesan kesalahan yang berisi kesalahan kompilator internal ada tetapi tidak
terlihat seperti di atas, ini kemungkinan akan memerlukan errata tetapi mungkin
bukan masalah yang diketahui yang ada. Email stlogohelp@microsoft.com.
c. Jika Anda tidak melihat baris yang berisi kesalahan kompilator internal, cari
baris apa pun yang dimulai dengan kesalahan. Ini mungkin atau mungkin bukan
masalah yang memerlukan errata. Email stlogohelp@microsoft.com.
a. Jika pesan kesalahan yang berisi kesalahan kompilator internal dan slamcl:
kesalahan: pada fase 2: kehabisan memori ada, ini adalah masalah umum yang
memerlukan errata.
b. Jika Anda tidak melihat baris yang berisi kesalahan kompilator internal, cari
baris apa pun yang dimulai dengan kesalahan. Ini mungkin atau mungkin bukan
masalah yang memerlukan errata. Email stlogohelp@microsoft.com.
c. Jika Anda tidak melihat salah satu hal di atas, hubungi MSFT untuk mendapatkan
dukungan.
Untuk menghubungi MSFT untuk mendapatkan dukungan, pastikan kode sumber tidak
dibagikan dengan menjalankan hal berikut:
1. Jalankan SDV dengan bendera /debug diaktifkan, dan pipa output ke file teks.
2. Navigasi ke sdv folder di direktori driver dan jalankan perintah berikut untuk
menghapus hasil build yang mungkin mengekspos sumber:
cmd
del /s *.obj
del /s *.rawcfg*
del /s *.li
del /s *.pdb
del /s *.sys
c. File smvexecute-InterceptedBuild.log
d. Subfolder "sdv"
Dalam hal ini, solusinya adalah menginstal Visual C++ Redistributable x86 dan x64
untuk Visual Studio 2012 dan 2013.
Solusi sementara:
1. Cadangkan file proyek Anda, lalu buka file proyek di editor teks.
[Architecture\] merupakan konfigurasi dan rilis default untuk jenis proyek ini.
Solusi alternatif:
Pastikan paket TAEF disebarkan atau RoMetadata.dll disebarkan ke lokasi dalam variabel
lingkungan PATH Anda.
Jika Anda memiliki penginstalan GUI Server dengan arsitektur dan versi Windows yang
sama dengan penginstalan ServerCore Anda, salin file RoMetadata.dll dari GUI Server ke
ServerCore. DLL dapat ditemukan di folder System32 (misalnya, C:\Windows\System32 )
dan harus ditempatkan di folder yang sama pada komputer ServerCore. Ini harus
mengaktifkan pengujian untuk berjalan di ServerCore. Jika Anda masih mengalami
masalah, silakan lihat solusi berikutnya.
Solusi kedua adalah menjalankan pada GUI Server dan kemudian menggabungkan
paket dengan paket yang berisi hasil dari Server Core. Untuk informasi tentang
menggabungkan paket, lihat Menggabungkan paket.
Pemverifikasi Driver Statis gagal dengan keluar
dari lib.exe/iwrap.exe dengan kesalahan
0xc0000142
File smvbuild.log berisi pesan yang mirip dengan kesalahan ini:
Ini adalah masalah yang sudah diketahui. Jika masalah ini memblokir sertifikasi WHCP
Anda, silakan gunakan errata 41600.
Membuat Log Verifikasi Driver
Artikel • 20/01/2023 • 3 menit untuk membaca
Program tertentu dari Program Sertifikasi Perangkat Keras Windows memerlukan Log
Verifikasi Driver (DVL) untuk semua pengiriman driver. DVL berisi ringkasan hasil dari file
log Code Analysis (CA), Static Driver Verifier (SDV), dan CodeQL . DVL tidak berisi
informasi sumber apa pun. Anda harus menjalankan alat Analisis Kode dan Pemverifikasi
Driver Statis sebelum membuat DVL untuk driver Anda.
1. Sebelum menjalankan alat Analisis Kode, pastikan Anda dapat membangun dan
menautkan driver Anda menggunakan Windows Driver Kit (WDK) terbaru.
2. Untuk Solusi Driver, pastikan Anda telah memilih konfigurasi Rilis sebagai
Konfigurasi Solusi dan x64 sebagai Platform Solusi.
3. Jalankan Pemverifikasi Driver Statis. Untuk informasi tentang membuat file log,
lihat Membuat file log untuk Pemverifikasi Driver Statis dan Menggunakan
Pemverifikasi Driver Statis untuk menemukan cacat pada driver.
4. Jalankan alat Analisis Kode untuk driver. Atasi dan perbaiki cacat yang ditemukan.
Lihat Membuat file log untuk alat analisis kode dan Cara menjalankan Analisis
Kode untuk Driver. Untuk informasi selengkapnya tentang analisis kode, lihat
Menganalisis Kualitas Kode C/C++ dengan Menggunakan Analisis Kode.
5. Jalankan CodeQL. Alamat dan perbaiki cacat yang ditemukan. Sertifikasi akan gagal
jika cacat yang dianggap "Harus Diperbaiki" tidak diperbaiki. Untuk informasi
selengkapnya tentang CodeQL dan Static Tools Logo Test, lihat CodeQL dan Static
Tools Logo Test.
6. Buat Log Verifikasi Driver. Dari menu Driver , pilih Buat Log Verifikasi Driver... .
7. Verifikasi bahwa file Log Analisis Kode, Log Pemverifikasi Driver Statis, dan Log
CodeQL terdeteksi. Pilih Buat.
Log verifikasi driver memiliki ekstensi nama file .DVL.XML. Log dibuat di folder proyek,
misalnya, \myDriverProject\myDriverName.DVL.XML.
Catatan SDV melakukan pembangunan kembali driver yang bersih, yang menghapus
log Analisis Kode. Dengan demikian, pastikan untuk menjalankan SDV sebelum
menjalankan CA.
Catatan Ketika Anda siap untuk menguji driver Anda menggunakan Windows Hardware
Lab Kit, Anda perlu menyalin log verifikasi driver ke direktori %systemdrive%\DVL pada
komputer uji. Pastikan untuk menghapus isi direktori pada komputer uji sebelum Anda
menyalin log verifikasi driver baru.
Komentar
Untuk informasi terbaru tentang alat Analisis Kode, Pemverifikasi Driver Statis, dan Log
Verifikasi Driver, lihat Catatan Rilis WDK. Catatan Rilis tersedia di halaman unduhan
Windows Driver Kit (WDK).
Penting Batas waktu, spasi, dan hasil lain yang tidak berhasil dalam file DVL dapat
diterima untuk pengiriman sertifikasi. Ini tidak akan menyebabkan pengujian Alat Statis
di HLK gagal.
Anda juga dapat membuat log verifikasi driver dari jendela Prompt Perintah Visual
Studio, baik oleh Prompt Perintah Alat Asli Visual Studio yang diinstal dengan Visual
Studio atau melalui Enterprise Windows Driver Kit (EWDK):
C++
1. Tempatkan hasil yang harus dikonsumsi untuk membuat DVL dalam satu direktori,
bersama dengan file vcxproj apa pun. Biasanya untuk driver yang dimaksudkan
untuk disertifikasi untuk Klien Windows, ini adalah file CodeQL SARIF. Untuk
sertifikasi Windows Server, ini mungkin juga mencakup file hasil Analisis Kode dan
Pengverifikasi Driver Statis (SDV). Periksa dokumen persyaratan WHCP untuk detail
spesifik tentang alat mana yang harus dijalankan untuk sertifikasi driver perangkat.
2. File CodeQL SARIF dan file XML Analisis Kode harus ditempatkan di tingkat atas
direktori. File DVL.xml SDV harus ditempatkan dalam subfolder "sdv".
3. Dari baris perintah, navigasikan ke direktori tingkat atas yang berisi file CodeQL
SARIF.
4. Temukan dvl.exe dari WDK atau eWDK yang dipasang.
5. Panggil dvl.exe dengan meneruskan bendera /manualCreate, nama driver, dan
arsitektur yang diinginkan. Contohnya:
cmd
Salah satu string berikut harus digunakan untuk string driverArchitecture Anda:
X86
X64
Lengan
Arm64
6. Periksa DVL yang dihasilkan untuk memastikan bahwa DVL dihasilkan dengan
benar
Penggunaan ini terutama ditujukan untuk menghasilkan DLL dengan hasil CodeQL,
tetapi juga dapat digunakan untuk hasil SDV dan CA.
Topik terkait
Membuat file log untuk Pemverifikasi Driver Statis
Membuat file log untuk alat analisis kode
Program Sertifikasi Perangkat Keras
Menganalisis Kualitas Driver dengan Menggunakan Alat Analisis Kode
Cara menjalankan Analisis Kode untuk driver
Menggunakan Pemverifikasi Driver Statis untuk menemukan cacat pada driver
CodeQL dan Uji Logo Alat Statis
Membuat file log untuk alat analisis
kode
Artikel • 13/12/2022 • 2 menit untuk membaca
Program Sertifikasi Perangkat Keras Windows Server 2012 memerlukan Log Verifikasi
Driver (DVL) untuk semua pengiriman driver yang berlaku. Anda harus menjalankan alat
Analisis Kode sebelum membuat DVL untuk driver Anda. DVL berisi ringkasan hasil dari
Analisis Kode dan file log Verifier Driver Statis. File log tidak berisi informasi kode
sumber.
1. Di Microsoft Visual Studio Ultimate 2012, pilih file proyek driver lalu pilih dan tahan
(atau klik kanan) untuk membuka properti proyek. Pilih Windows 8 Rilis sebagai
Konfigurasi dan x64 sebagai Platform.
2. Dari menu Analisis atau Bangun , pilih Jalankan Analisis Kode pada Solusi.
3. Jika ditemukan kesalahan atau peringatan, gunakan jendela Laporan Analisis Kode
untuk menyelidiki penyebab kesalahan. Gunakan pesan peringatan untuk
memperbaiki masalah tersebut. Untuk informasi selengkapnya tentang alat Analisis
Kode, lihat Cara menjalankan Analisis Kode untuk driver dan Menganalisis Kualitas
Kode C/C++ dengan Menggunakan Analisis Kode.
Alat Analisis Kode untuk driver menulis hasil ke file vc.nativecodeanalysis.all.xml dalam
konfigurasi build dan sub-direktori platform proyek Anda, misalnya, \Windows
8Release\x64.
Komentar
Analisis Kode untuk Driver adalah alat verifikasi statis waktu kompilasi yang mendeteksi
kesalahan pengkodean dasar dalam program C dan C ++ dan mencakup modul khusus
yang dirancang untuk mendeteksi kesalahan dalam (terutama) kode driver mode kernel.
Dalam versi WDK sebelumnya, modul khusus driver untuk analisis kode adalah bagian
dari alat yang berdiri sendiri yang disebut PREfast for Drivers (PFD).
Anda juga dapat menjalankan alat Analisis Kode dari jendela Command Prompt Visual
Studio. Siapkan lingkungan dengan menjalankan salah satu file batch berikut.
C++
-Atau-
C++
C++
Untuk informasi terbaru tentang persyaratan untuk Log Verifikasi Driver, lihat Catatan
Rilis WDK.
Topik terkait
Membuat log verifikasi driver
Membuat file log untuk Static Driver Verifier
Analisis Kode untuk Driver
Program Sertifikasi Perangkat Keras
Menganalisis Kualitas Kode C/C++ dengan Menggunakan Analisis Kode
Cara menjalankan Analisis Kode untuk driver
Membuat file log untuk Static Driver
Verifier
Artikel • 13/12/2022 • 2 menit untuk membaca
Program Sertifikasi Perangkat Keras Windows Server 2012 memerlukan Log Verifikasi
Driver (DVL) untuk semua pengiriman driver yang berlaku. Anda harus menjalankan
Static Driver Verifier (SDV) sebelum membuat DVL untuk driver Anda. DVL berisi
ringkasan hasil dari Analisis Kode dan file log Verifier Driver Statis. File log tidak berisi
informasi kode sumber.
Untuk hasil terbaik, jalankan alat Analisis Kode sebelum Anda menjalankan Static Driver
Verifier.
Static Driver Verifier menulis hasilnya ke file SDV.DVL.xml di sub-direktori SDV proyek
Anda, misalnya, \myDriverProject\SDV.
Keterangan
Untuk informasi terbaru tentang Static Driver Verifier dan Log Verifikasi Driver, lihat
Catatan Rilis WDK. Catatan Rilis tersedia di halaman unduhan Windows Driver Kit
(WDK ).
) Penting
Batas waktu, spaceout, dan hasil tidak berhasil lainnya dalam file DVL dapat
diterima untuk pengajuan sertifikasi. Ini tidak akan menyebabkan pengujian Alat
Statis di HCK gagal. Untuk HCK 2.0, Static Tools Test hanya memerlukan kehadiran
file DVL untuk menunjukkan Analisis Kode dan SDV telah dijalankan, dan tidak
memerlukan semua aturan untuk lulus.
Anda juga dapat menjalankan Static Driver Verifier dari jendela Command Prompt Visual
Studio. Siapkan lingkungan dengan menjalankan salah satu file batch berikut.
C++
-Atau-
C++
C++
Topik terkait
Membuat log verifikasi driver
Verifikator Driver Statis
Menggunakan Verifier Driver Statis untuk Menemukan Cacat pada Driver
Program Sertifikasi Perangkat Keras
Mendistribusikan paket driver
Artikel • 13/12/2022 • 2 menit untuk membaca
Topik ini menjelaskan cara mendistribusikan paket driver Anda dengan aman. Informasi
ini mencakup cara mendistribusikan paket driver melalui program Microsoft Windows
Update. Topik ini juga menjelaskan bagaimana Windows melindungi file sistem.
Windows Update
Paket driver yang lulus pengujian Windows Hardware Certification Kit (HCK) dapat
ditandatangani secara digital oleh WHQL. Jika paket driver Anda ditandatangani
secara digital oleh WHQL, paket tersebut dapat didistribusikan melalui program
Windows Update atau mekanisme distribusi lain yang didukung Microsoft.
Mendapatkan tanda tangan rilis WHQL adalah bagian dari Windows Hardware
Certification Kit (HCK). Tanda tangan rilis WHQL terdiri dari file katalog yang
ditandatangani secara digital. Tanda tangan digital tidak mengubah file biner driver atau
file INF yang Anda kirimkan untuk pengujian.
Anda dapat mendistribusikan paket driver melalui program Windows Update jika paket
driver:
Lulus program pengujian WHQL dan menerima tanda tangan rilis WHQL.
Karena persyaratan program Windows Update sering diperbarui, Anda harus secara
teratur memeriksa situs web penerbitan driver Windows Update.
WFP mencegah program mengganti file sistem Windows kritis. Program tidak boleh
menimpa file-file ini karena mereka digunakan oleh sistem operasi dan oleh program
lain. Melindungi file-file ini mencegah masalah dengan program dan sistem operasi.
Jenis file sistem yang dilindungi WFP termasuk file .sys, .exe, .ocx, dan .dll yang
dikirimkan "di dalam kotak" dengan sistem operasi.
Selama pengujian WHQL, program Signability memeriksa file INF pengemudi untuk
memastikan bahwa itu tidak mencoba untuk mengganti file sistem. Paket driver yang
mencoba mengganti file sistem tidak dapat menerima tanda tangan digital. Paket driver
dapat, bagaimanapun, berisi versi terbaru dari file yang vendor disediakan ke Microsoft
untuk kapal dengan Windows tahun 2000 atau lebih baru dari sistem operasi.
Untuk informasi tambahan tentang Windows Perlindungan File, lihat dokumentasi SDK
Windows.