Membuat Objek Perangkat dalam Driver Fungsi
Setiap driver fungsi membuat objek perangkat kerangka kerja untuk setiap perangkat yang didukung yang ada pada sistem. Karena objek perangkat ini dibuat oleh driver fungsi, objek tersebut disebut objek perangkat fungsial (FDO). Setiap FDO adalah representasi driver fungsi dari perangkat.
Driver fungsi harus membuat objek perangkat kerangka kerja setiap kali kerangka kerja memanggil fungsi panggilan balik EvtDriverDeviceAdd driver. Kerangka kerja memanggil fungsi panggilan balik ini untuk memberi tahu driver bahwa salah satu perangkat yang didukung ada pada sistem.
Fungsi panggilan balik EvtDriverDeviceAdd driver menerima penunjuk ke struktur WDFDEVICE_INIT . Driver dapat memanggil sekumpulan metode inisialisasi objek perangkat kerangka kerja, yang menyimpan informasi dalam struktur WDFDEVICE_INIT. Selain itu, driver fungsi dapat memanggil metode inisialisasi FDO kerangka kerja.
Membuat objek perangkat kerangka kerja dalam driver fungsi biasanya mencakup langkah-langkah berikut:
Mendaftarkan fungsi panggilan balik PnP, daya, dan kebijakan daya.
Sebagian besar driver fungsi memanggil WdfDeviceInitSetPnpowerEventCallbacks untuk mendaftarkan fungsi PnP dan panggilan balik daya. Untuk informasi selengkapnya tentang fungsi panggilan balik ini, lihat Mendukung PnP dan Manajemen Daya di Driver Fungsi.
Jika perangkat mendukung idle berdaya rendah atau memiliki kemampuan bangun, driver fungsi biasanya juga memanggil WdfDeviceInitSetPowerPolicyEventCallbacks untuk mendaftarkan fungsi panggilan balik kebijakan daya. Untuk informasi selengkapnya tentang fungsi panggilan balik ini, lihat Kepemilikan Kebijakan Daya.
Mendaftarkan fungsi fungsi panggilan balik khusus driver.
Beberapa driver fungsi memanggil WdfFdoInitSetEventCallbacks, jika mereka harus berpartisipasi dalam menentukan sumber daya perangkat keras sistem yang diperlukan perangkat. Untuk informasi selengkapnya tentang sumber daya perangkat keras, lihat Sumber Daya Perangkat Keras untuk Driver Framework-Based.
Mendaftarkan fungsi panggilan balik peristiwa file.
Jika driver Anda harus merespons ketika aplikasi membuka atau menutup file pada perangkat, driver harus memanggil WdfDeviceInitSetFileObjectConfig untuk mendaftarkan fungsi panggilan balik untuk objek file kerangka kerja. Untuk informasi selengkapnya, lihat Menggunakan Objek File Kerangka Kerja.
Mengatur atribut permintaan I/O.
Jika driver Anda akan menerima permintaan I/O dari objek antrean kerangka kerja, driver dapat memanggil WdfDeviceInitSetRequestAttributes untuk menyiapkan memori konteks yang akan ditetapkan kerangka kerja ke objek permintaan perangkat. Untuk informasi selengkapnya, lihat Menggunakan Konteks Objek Permintaan.
Mengatur karakteristik perangkat.
Biasanya, driver fungsi memanggil beberapa metode berikut untuk menentukan karakteristik perangkat:
- WdfDeviceInitSetDeviceType, untuk mengidentifikasi jenis perangkat keras yang didukung driver.
- WdfDeviceInitSetIoType, untuk mengidentifikasi metode untuk mengakses buffer data, jika driver menangani permintaan I/O dari aplikasi.
- WdfDeviceInitSetCharacteristics, untuk mengatur karakteristik perangkat, seperti apakah perangkat bersifat baca-saja atau mendukung media yang dapat dilepas.
- WdfDeviceInitSetExclusive, jika perangkat memerlukan akses eksklusif oleh satu aplikasi pada satu waktu.
- WdfDeviceInitSetPowerInrush, jika perangkat memerlukan inrush saat ini ketika beralih dari status daya rendah ke status kerjanya (D0).
- WdfDeviceInitSetPowerPageable atau WdfDeviceInitSetPowerNotPageable, untuk menunjukkan apakah driver harus mengakses data yang dapat di-pageable saat sistem beralih antara status tidur dan status kerja (S0).
- WdfDeviceInitAssignName, untuk menetapkan nama ke objek perangkat.
- WdfDeviceInitAssignSDDLString, untuk menetapkan deskriptor keamanan ke objek perangkat.
- WdfDeviceInitSetDeviceClass, untuk mengidentifikasi kelas penyiapan perangkat.
Mendapatkan properti perangkat.
Terkadang driver fungsi harus mendapatkan informasi tentang properti perangkat yang telah ditetapkan driver untuk bus perangkat, atau driver tingkat bawah lainnya. Driver dapat memanggil WdfFdoInitQueryProperty atau WdfFdoInitAllocAndQueryProperty untuk mendapatkan informasi ini. Driver baru yang menargetkan Windows 8.1 dan yang lebih baru dapat memanggil WdfFdoInitQueryPropertyEx dan WdfFdoInitAllocAndQueryPropertyEx.
Mengakses kunci registri perangkat.
Beberapa driver fungsi harus mendapatkan informasi tentang perangkat atau driver yang telah ditempatkan driver lain, pengguna, atau paket penginstalan di registri. Driver dapat memanggil WdfFdoInitOpenRegistryKey untuk membuka kunci registri perangkat atau driver. Untuk informasi selengkapnya, lihat Menggunakan Registri di Driver Framework-Based.
Membuat konfigurasi daftar anak default yang akan digunakan untuk enumerasi dinamis.
Jika Anda menulis driver fungsi untuk bus, dan jika driver Anda akan melakukan enumerasi dinamis perangkat anak yang terhubung ke bus, driver harus memanggil WdfFdoInitSetDefaultChildListConfig. Untuk informasi selengkapnya, lihat Menghitung Perangkat di Bus.
Membuat objek perangkat.
Langkah terakhir dalam membuat objek perangkat adalah memanggil WdfDeviceCreate.