Bagikan melalui


Membongkar Lingkungan Rutin

Sistem operasi membongkar driver ketika driver sedang diganti atau ketika semua perangkat yang telah dihapus oleh layanan driver. Manajer PnP memanggil rutinitas Bongkar Muat driver PnP jika driver tidak memiliki objek perangkat lagi setelah menangani permintaan IRP_MN_REMOVE_DEVICE .

Pada awal urutan pembongkaran, manajer I/O atau manajer PnP menandai objek driver dan objek perangkatnya sebagai "Bongkar Tertunda". Setelah driver ditandai sebagai "Bongkar Tertunda", tidak ada driver tambahan yang dapat dilampirkan ke driver tersebut, juga tidak dapat membuat referensi tambahan ke objek perangkat driver. Driver dapat menyelesaikan IRP yang luar biasa, tetapi sistem tidak akan mengirim IRP baru ke driver.

Manajer I/O memanggil rutinitas Bongkar Muat driver ketika semua hal berikut ini benar:

  • Tidak ada referensi yang tersisa untuk objek perangkat apa pun yang telah dibuat driver. Dengan kata lain, tidak ada file yang terkait dengan perangkat yang mendasar yang dapat terbuka, IRP apa pun juga tidak dapat menjadi luar biasa untuk salah satu objek perangkat driver.

  • Tidak ada pengandar lain yang tetap terpasang pada pengandar ini.

  • Driver telah memanggil IoUnregisterPlugPlayNotification untuk membatalkan pendaftaran semua pemberitahuan PnP yang sebelumnya terdaftar.

Perhatikan bahwa rutinitas Bongkar tidak dipanggil jika rutinitas DriverEntry driver mengembalikan status kegagalan. Dalam hal ini, manajer I/O hanya membebaskan ruang memori yang diambil oleh driver.

Baik manajer PnP maupun manajer I/O tidak memanggil Rutinitas Bongkar pada waktu pematian sistem. Driver yang harus melakukan pemrosesan matikan harus mendaftarkan rutinitas DispatchShutdown .