Kesalahan dalam Menangani Operasi Pembersihan dan Penutupan
Beberapa driver gagal membedakan tugas yang diperlukan dalam rutinitas DispatchCleanup dan DispatchClose . Manajer I/O memanggil rutinitas DispatchCleanup driver ketika handel terakhir ke objek file ditutup. Rutinitas DispatchClose dipanggil ketika referensi terakhir dirilis dari objek file. Driver tidak boleh mencoba membebaskan sumber daya dalam rutinitas DispatchCleanup yang dilampirkan ke objek file atau mungkin digunakan oleh rutinitas DispatchXxx lainnya.
Saat memanggil rutinitas pengiriman, manajer I/O menyimpan referensi ke objek file untuk panggilan I/O normal. Akibatnya, driver dapat menerima permintaan I/O untuk objek file setelah rutinitas DispatchCleanup dipanggil tetapi sebelum rutinitas DispatchClose-nya dipanggil. Misalnya, pemanggil mode pengguna mungkin menutup handel file saat permintaan manajer I/O sedang berlangsung dari utas lain. Jika driver telah menghapus atau membebaskan sumber daya yang diperlukan sebelum manajer I/O memanggil rutinitas DispatchClose , referensi pointer yang tidak valid dan masalah lainnya dapat terjadi.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk