Membatalkan RUNPS

Driver di mana IRP mungkin tetap mengantre untuk interval yang tidak terbatas (sehingga pengguna dapat membatalkan permintaan I/O yang dikirimkan sebelumnya) harus memiliki satu atau beberapa rutinitas Batal untuk menyelesaikan permintaan I/O yang dibatalkan pengguna. Misalnya, driver keyboard, mouse, paralel, serial, dan perangkat suara (atau driver yang berlapis di atasnya) dan driver sistem file harus memiliki rutinitas Batal .

Driver untuk Microsoft Windows XP dan sistem operasi yang lebih baru dapat menggunakan antrean IRP yang batal aman daripada menerapkan rutinitas Batal sendiri.

Untuk "membatalkan IRP" berarti menyelesaikan IRP secepat mungkin sambil tetap menjaga integritas sistem. Untuk diskusi umum penyelesaian IRP, lihat Menyelesaikan RUNPS.

Proses pembatalan dimulai ketika sistem atau driver memanggil IoCancelIrp. Rutinitas ini dipanggil untuk setiap IRP yang terkait dengan utas yang belum sepenuhnya selesai. Sistem membatalkan runtime integrasi yang tidak diproses jika utas yang memulai permintaan I/O keluar. Driver hanya dapat membatalkan IRP yang telah mereka buat (lihat Membuat RUNTIME untuk Driver Lower-Level.)

Jika IRP yang dibatalkan tidak selesai dalam waktu 5 menit, manajer I/O mempertimbangkan waktu IRP habis. IRP tersebut dipisahkan dari utas, dan kesalahan dicatat untuk perangkat yang saat ini memiliki IRP. Anda harus memastikan bahwa setiap permintaan yang mungkin membutuhkan waktu lama untuk diselesaikan di driver Anda dapat dibatalkan. Untuk memastikan bahwa permintaan yang berpotensi panjang dapat dibatalkan, Anda dapat menggunakan antrean IRP batal aman atau Kerangka Kerja Driver Mode Kernel, yang mengabstraksi pembatalan dari pengembang driver.

Bagian ini menyediakan topik berikut:

Pengantar Batalkan Rutinitas

Mendaftarkan Batalkan Rutinitas

Menyinkronkan Pembatalan IRP

Menerapkan Batalkan Rutinitas

Poin yang Perlu Dipertimbangkan Saat Membatalkan RUNTIME