Aracılığıyla paylaş


Rutin Ortamı Kaldır

İşletim sistemi, sürücü değiştirildiğinde veya sürücünün hizmet verdiği tüm cihazlar kaldırıldığında sürücüyü çıkarır. Bir IRP_MN_REMOVE_DEVICE isteği işledikten sonra sürücüde başka cihaz nesnesi yoksa PnP yöneticisi bir PnP sürücüsünün Kaldır yordamını çağırır.

Boşaltma sırasının başlangıcında, G/Ç yöneticisi veya PnP yöneticisi sürücü nesnesini ve cihaz nesnelerini "Boşaltma Bekleniyor" olarak işaretler. Bir sürücü "Kaldırma Beklemede" olarak işaretlendikten sonra, bu sürücüye başka bir sürücü eklenemez ve sürücünün cihaz nesnelerine yeni bir başvuru yapılamaz. Sürücü, tamamlanmamış IRP'leri tamamlayabilir, ancak sistem sürücüye yeni IRP'ler göndermez.

G/Ç yöneticisi, aşağıdakilerin tümü doğru olduğunda sürücünün Unload yordamını çağırır:

  • Sürücünün oluşturduğu cihaz nesnelerine hiçbir referans kalmadı. Başka bir deyişle, temel alınan cihazla ilişkilendirilmiş hiçbir dosya açılamaz ve sürücünün cihaz nesnelerinden herhangi biri için hiçbir IRP kullanılamaz.

  • Bu sürücüye bağlı başka sürücü kalmadı.

  • Sürücü, daha önce kayıtlı olduğu tüm PnP bildirimlerinin kaydını kaldırmak için IoUnregisterPlugPlayNotification adını verdi.

Sürücünün DriverEntry yordamı bir hata durumu döndürürse Unload yordamının çağrılmadığını unutmayın. Bu durumda G/Ç yöneticisi yalnızca sürücü tarafından kapladığı bellek alanını boşaltıyor.

Ne PnP yöneticisi ne de G/Ç yöneticisi sistem kapatma zamanında Kaldırma yordamlarını çağırır. Kapatma işlemi gerçekleştirmesi gereken bir sürücü, bir DispatchShutdown rutini kaydetmelidir.