Bagikan melalui


Menggunakan WDF untuk Mengembangkan Driver

Topik ini memberikan gambaran umum tingkat tinggi tentang objek kerangka kerja yang akan Anda gunakan untuk mengembangkan driver Kernel-Mode Driver Framework (KMDF). Kecuali jika ditunjukkan, Anda akan menggunakan objek yang sama untuk mengembangkan driver User-Mode Driver Framework (UMDF) mulai dari UMDF versi 2.

Driver Windows Driver Frameworks (WDF) terdiri dari rutinitas DriverEntry dan serangkaian fungsi panggilan balik peristiwa yang ditentukan oleh objek Windows Driver Framework yang digunakan driver berbasis kerangka kerja. Fungsi panggilan balik memanggil metode objek yang diekspor kerangka kerja. Windows Driver Kit (WDK) berisi contoh driver WDF yang menunjukkan cara mengimplementasikan fungsi panggilan balik peristiwa driver. Anda dapat mengunduh sampel ini dari Windows Dev Center - Hardware. Untuk informasi tentang sampel apa yang tersedia, lihat Sampel Driver KMDF dan Contoh Driver UMDF.

Saat membuat driver WDF, Anda biasanya akan melakukan hal berikut:

  • Gunakan objek driver kerangka kerja untuk mewakili driver Anda.

    Rutinitas DriverEntry driver harus memanggil WdfDriverCreate untuk membuat objek driver kerangka kerja yang mewakili driver. Metode WdfDriverCreate juga mendaftarkan fungsi panggilan balik EvtDriverDeviceAdd driver, yang dipanggil kerangka kerja setiap kali manajer Plug and Play (PnP) melaporkan keberadaan perangkat yang didukung driver.

  • Gunakan objek perangkat kerangka kerja untuk mendukung PnP dan manajemen daya di driver Anda.

    Semua driver harus memanggil WdfDeviceCreate untuk membuat objek perangkat kerangka kerja untuk setiap perangkat yang didukung driver. Perangkat bisa menjadi perangkat keras yang dicolokkan ke komputer, atau bisa menjadi perangkat khusus perangkat lunak. Objek perangkat kerangka kerja mendukung PnP dan operasi manajemen daya, dan driver dapat mendaftarkan fungsi panggilan balik peristiwa yang memberi tahu driver saat perangkat memasuki atau meninggalkan status kerjanya.

    Untuk informasi selengkapnya tentang objek perangkat kerangka kerja, lihat Mendukung PnP dan Manajemen Daya di Driver Anda.

  • Gunakan objek antrean kerangka kerja dan objek permintaan kerangka kerja untuk mendukung operasi I/O di driver Anda.

    Semua driver yang menerima permintaan kontrol I/O baca, tulis, atau perangkat dari aplikasi atau driver lain harus memanggil WdfIoQueueCreate untuk membuat objek antrean kerangka kerja yang mewakili antrean I/O. Biasanya, driver mendaftarkan satu atau beberapa penangan permintaan untuk setiap antrean I/O. Ketika manajer I/O mengirim permintaan I/O ke driver, kerangka kerja membuat objek permintaan kerangka kerja untuk permintaan, menempatkan objek permintaan dalam antrean I/O, dan memanggil salah satu penangan permintaan driver untuk memberi tahu driver bahwa permintaan tersedia. Driver mendapatkan permintaan I/O dan dapat mengantre ulang, menyelesaikan, membatalkan, atau meneruskan permintaan.

    Untuk informasi selengkapnya tentang menggunakan objek antrean kerangka kerja dan objek permintaan, lihat Objek Antrean Kerangka Kerja dan Objek Permintaan Kerangka Kerja.

  • Gunakan objek interupsi kerangka kerja untuk menangani gangguan perangkat.

    Driver yang menangani gangguan perangkat harus memanggil WdfInterruptCreate untuk membuat objek interupsi kerangka kerja untuk setiap gangguan dan untuk mendaftarkan fungsi panggilan balik. Fungsi panggilan balik ini mengaktifkan dan menonaktifkan interupsi dan berfungsi sebagai rutinitas layanan interupsi (ISR) dan panggilan prosedur yang ditangguhkan (DPC) untuk interupsi.

    Untuk informasi selengkapnya tentang objek gangguan kerangka kerja, lihat Menangani Gangguan Perangkat Keras.

  • Driver KMDF dapat menggunakan objek pengaktif DMA kerangka kerja dan objek transaksi DMA untuk menangani operasi akses memori langsung (DMA) perangkat.

    Jika perangkat driver KMDF Anda mendukung operasi DMA, driver harus memanggil WdfDmaEnablerCreate untuk membuat objek pengaktif DMA dan WdfDmaTransactionCreate untuk membuat satu atau beberapa objek transaksi DMA. Objek transaksi DMA mendefinisikan fungsi panggilan balik EvtProgramDma yang memprogram perangkat keras perangkat untuk melakukan operasi DMA.

    Untuk informasi selengkapnya tentang mendukung operasi DMA, lihat Menangani Operasi DMA di Driver berbasis Kerangka Kerja.

  • Gunakan objek target I/O kerangka kerja untuk mengirim permintaan I/O ke driver lain.

    Untuk meneruskan permintaan I/O ke driver lain (biasanya driver lebih rendah berikutnya di tumpukan driver), driver Anda mengirim permintaan ke objek target I/O.

    Untuk informasi selengkapnya tentang objek target I/O, lihat Menggunakan Target I/O.

  • Driver KMDF dapat menggunakan objek penyedia WMI kerangka kerja dan objek instans WMI untuk mendukung kemampuan Windows Management Instrumentation (WMI).

    Sebagian besar driver KMDF harus mendukung WMI dan harus memanggil WdfWmiInstanceCreate untuk mendaftarkan fungsi panggilan balik yang mengirim atau menerima data WMI.

    Untuk informasi selengkapnya tentang WMI, lihat Mendukung WMI dalam Driver berbasis Kerangka Kerja.

  • Gunakan kemampuan sinkronisasi kerangka kerja.

    Semua driver harus mengetahui masalah sinkronisasi multiproscessor dan harus menggunakan teknik sinkronisasi yang disediakan kerangka kerja.

  • Gunakan objek dan fitur tambahan yang disediakan kerangka kerja.

    Kerangka kerja menyediakan objek tambahan yang dapat digunakan driver Anda. Untuk informasi selengkapnya tentang objek ini, lihat Objek Dukungan WDF.