Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gambar berikut menunjukkan urutan tipikal RUN yang terlibat dalam menghapus driver untuk perangkat.
Catatan berikut ini sesuai dengan angka yang dilingkari pada gambar sebelumnya:
Hapus kueri
Manajer PnP mengeluarkan IRP_MN_QUERY_REMOVE_DEVICE untuk menanyakan apakah perangkat dapat dihapus tanpa mengganggu komputer. Ini juga mengirimkan IRP ini ketika pengguna meminta untuk memperbarui driver untuk perangkat dan (pada Windows 2000 dan yang lebih baru) ketika Manajer Perangkat menonaktifkan perangkat. (Pada Windows 98/Me, manajer PnP mengirim runtime integrasi berhenti dalam situasi ini; lihat Menghentikan Perangkat untuk detailnya.)
Jika semua driver dalam tumpukan perangkat kembali STATUS_SUCCESS, driver telah menempatkan perangkat ke dalam status hapus-tertunda. Dalam status ini, driver tidak boleh memulai operasi apa pun yang mencegah perangkat dihapus.
Dalam kasus penghapusan "bersih" ini, manajer PnP mengirimkan IRP query-remove sebelum mengirim hapus IRP. Lihat langkah 5 untuk deskripsi penghapusan "kejutan".
Meskipun tidak ditampilkan dalam diagram di atas, pengemudi bus mungkin menerima IRP_MN_QUERY_REMOVE_DEVICE untuk perangkat yang tidak dimulai. Ini dapat terjadi jika pengguna meminta untuk secara dinamis menghapus perangkat yang ada secara fisik di komputer tetapi dinonaktifkan.
Hapus setelah kueri berhasil
Manajer PnP mengeluarkan IRP_MN_REMOVE_DEVICE untuk menghapus driver untuk perangkat.
Driver harus berhasil dalam permintaan ini. Driver untuk perangkat melakukan pembersihan yang diperlukan, melepaskan dari tumpukan perangkat, dan menghapus FDO dan DO filter apa pun. Driver bus induk mempertahankan PDO sampai pengguna secara fisik menghapus perangkat dari komputer.
Perhatikan bahwa driver mungkin menerima IRP_MN_STOP_DEVICE sebelum menghapus IRP, tetapi tidak diperlukan. Pada Windows 2000 dan yang lebih baru, IRP_MN_STOP_DEVICE hanya digunakan untuk menjeda perangkat untuk penyeimbangan ulang sumber daya; ini bukan langkah menuju penghapusan. Jika pengguna menghapus perangkat keras perangkat saat perangkat dihentikan, manajer PnP mengirimkan hapus IRP di beberapa titik setelah IRP berhenti, tetapi pemberhentian bukan prasyarat untuk dihapus.
Menghitung ulang perangkat
Jika perangkat dinilai ulang setelah driver menghapus objek perangkat mereka, manajer PnP memanggil rutinitas AddDevice driver dan mengeluarkan IRP_MN_START_DEVICE untuk mengembalikan perangkat. (Lihat juga Status Perangkat dari angka Perspektif PnP .)
Membatalkan penghapusan kueri
Manajer PnP mengeluarkan IRP_MN_CANCEL_REMOVE_DEVICE untuk membatalkan permintaan penghapusan kueri.
Menanggapi IRP_MN_CANCEL_REMOVE_DEVICE, driver mengembalikan perangkat ke status dimulai.
Penghapusan kejutan (Windows 2000 dan versi Windows yang lebih baru)
Pada sistem Windows 2000 dan yang lebih baru, jika pengguna melepas perangkat dari komputer tanpa menggunakan program Cabut atau Keluarkan Perangkat Keras, manajer PnP mengirimkan IRP_MN_SURPRISE_REMOVAL IRP.
Kasus ini disebut penghapusan "kejutan" karena driver tidak menerima peringatan sebelumnya.
Menanggapi IRP IRP_MN_SURPRISE_REMOVAL , driver untuk perangkat gagal melakukan I/O yang luar biasa dan merilis sumber daya perangkat keras yang digunakan oleh perangkat. Driver harus memastikan bahwa tidak ada komponen yang mencoba mengakses perangkat karena tidak ada lagi.
Semua driver harus menangani IRP IRP_MN_SURPRISE_REMOVAL dan harus mengatur status ke STATUS_SUCCESS.
IRP_MN_SURPRISE_REMOVAL tidak dapat dibatalkan.
Hapus setelah penghapusan mendadak (Windows 2000 dan versi Windows yang lebih baru)
Ketika semua handel terbuka ke perangkat ditutup, manajer PnP mengirimkan permintaan IRP_MN_REMOVE_DEVICE ke driver untuk perangkat. Setiap driver melepaskan dari tumpukan perangkat dan menghapus objek perangkatnya.
Penghapusan mendadak (Windows 98/Me)
Pada Windows 98/Me, driver tidak menerima IRP_MN_SURPRISE_REMOVAL ketika perangkat dihapus tanpa peringatan. Manajer PnP hanya mengirim IRP_MN_REMOVE_DEVICE. Driver WDM harus memiliki kode untuk menangani IRP_MN_SURPRISE_REMOVAL diikuti oleh IRP_MN_REMOVE_DEVICE (perilaku Windows 2000 dan yang lebih baru untuk penghapusan kejutan) dan IRP_MN_REMOVE_DEVICE tanpa IRP penghapusan mendadak sebelumnya (perilaku Windows 98/Me).
Hapus setelah awal yang gagal (Windows 2000 dan yang lebih baru)
Jika salah satu driver untuk perangkat gagal IRP_MN_START_DEVICE, manajer PnP mengirimkan permintaan IRP_MN_REMOVE_DEVICE ke tumpukan perangkat. Penghapusan IRP semacam itu memastikan bahwa semua driver untuk perangkat diberi tahu bahwa perangkat tidak berhasil dimulai. Menanggapi IRP_MN_REMOVE_DEVICE IRP, driver untuk perangkat membatalkan operasi mulai mereka (jika mereka berhasil memulai IRP) dan membatalkan operasi AddDevice mereka. Manajer PnP menandai perangkat seperti "failed start."
Perilaku ini hanya berlaku untuk platform Windows 2000 dan yang lebih baru. Pada Windows 98/Me, manajer PnP mengirimkan IRP_MN_STOP_DEVICE sebagai respons terhadap awal yang gagal.
Driver untuk perangkat PnP dapat menerima IRP_MN_SURPRISE_REMOVAL dalam situasi yang lebih banyak daripada yang ditunjukkan pada gambar yang mengilustrasikan transisi penghapusan IRP yang khas. Misalnya, pengguna dapat memasukkan Kartu PC ke dalam mesin dan kemudian menghapusnya sebelum perangkat dimulai. Dalam hal ini, manajer PnP mengeluarkan IRP yang menghilangkan kejutan setelah rutinitas AddDevice driver dipanggil tetapi sebelum mengeluarkan permintaan IRP_MN_START_DEVICE . Driver untuk perangkat PnP harus siap untuk menangani penghapusan RUN kapan saja setelah rutinitas AddDevice driver dipanggil.