Pengantar Rutinitas Driver Standar
Setiap driver mode kernel dibangun di sekitar serangkaian rutinitas driver standar yang ditentukan sistem. Driver mode kernel memproses paket permintaan I/O (IRP) dalam rutinitas standar ini dengan memanggil rutinitas dukungan driver yang disediakan sistem.
Semua driver, terlepas dari tingkatnya dalam rantai driver yang terpasang, harus memiliki serangkaian rutinitas standar dasar untuk memproses RUN. Apakah driver harus menerapkan rutinitas standar tambahan tergantung pada apakah driver mengontrol perangkat fisik atau dilapisi melalui driver perangkat fisik, serta pada sifat perangkat fisik yang mendasar. Driver tingkat terendah yang mengontrol perangkat fisik memiliki rutinitas yang lebih diperlukan daripada driver tingkat yang lebih tinggi, yang biasanya meneruskan IRP ke driver yang lebih rendah untuk diproses.
Rutinitas driver standar dapat dibagi menjadi dua grup: yang harus dimiliki oleh setiap driver mode kernel, dan yang bersifat opsional, tergantung pada jenis driver dan lokasi di tumpukan perangkat.
Tabel berikut mencantumkan rutinitas standar yang diperlukan.
Rutinitas driver standar yang diperlukan | Tujuan | Di mana dijelaskan |
---|---|---|
DriverEntry | Menginisialisasi pengandar dan obyek pengandarnya. | Menulis Rutinitas DriverEntry |
TambahkanDevice | Menginisialisasi perangkat dan membuat objek perangkat. | Menulis AddDevice Routine |
Rutinitas Pengiriman | Menerima dan memproses RUNPS. | Menulis Rutinitas Pengiriman |
Membongkar | Rilis sumber daya sistem yang diperoleh oleh driver. | Menulis Rutinitas Bongkar |
Tabel berikut ini mencantumkan beberapa rutinitas opsional.
Rutinitas driver standar opsional | Tujuan | Di mana dijelaskan |
---|---|---|
Reinitialize | Menyelesaikan inisialisasi driver jika DriverEntry tidak dapat. | Menulis Rutinitas Reinisialisasi |
StartIo | Memulai operasi I/O pada perangkat fisik. | Menulis StartIo Routine |
Rutinitas Layanan Interupsi | Menyimpan status perangkat saat diinterupsi. | Menulis ISR |
Panggilan Prosedur Yang Ditangguhkan | Menyelesaikan pemrosesan interupsi perangkat setelah ISR menyimpan status perangkat. | Objek DPC dan DPC |
SynchCritSection | Menyinkronkan akses ke data driver. | Menggunakan Bagian Penting |
AdapterControl | Memulai operasi DMA. | Objek Adapter dan DMA |
IoCompletion | Menyelesaikan pemrosesan driver IRP. | Menyelesaikan RUNPS |
Batalkan | Membatalkan pemrosesan driver IRP. | Membatalkan RUNPS |
CustomTimerDpc, IoTimer | Mengatur waktu dan menyinkronkan peristiwa. | Teknik Sinkronisasi |
IRP saat ini dan objek perangkat target adalah parameter input ke banyak rutinitas standar. Setiap driver memproses setiap IRP secara bertahap melalui serangkaian rutinitas standarnya.
Berdasarkan konvensi, driver yang disediakan sistem menambahkan awalan identifikasi khusus driver atau khusus perangkat ke nama setiap rutinitas standar kecuali DriverEntry. Sebagai contoh, dokumentasi ini menggunakan "DD", seperti yang ditunjukkan dalam ilustrasi dalam Pengantar Objek Driver. Mengikuti konvensi ini memudahkan untuk men-debug dan memelihara driver.