Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PnP yöneticisi bu IRP göndererek sürücülere bir cihazın makineden kaldırılacak olduğunu bildirir ve cihazın makineyi kesintiye uğratmadan kaldırılıp kaldırılamayacağını sorar. Kullanıcı cihaz sürücülerini güncelleştirmek istediğinde de bu IRP'yi gönderir.
PnP yöneticisi, IRQL PASSIVE_LEVEL düzeyinde, sistem iş parçacığı bağlamında bu IRP'yi gönderir.
Bu IRP'yi bir cihazın sürücülerine göndermeden önce aşağıdakileri yapar:
Cihazda (veya ilgili bir cihazda) bildirim için kaydedilen tüm kullanıcı modu uygulamalarını bildirir.
Bu, cihazda, cihazın alt öğelerinden birine (alt cihaz, çocuğun alt öğesi vb.) veya cihazın
kaldırma ilişkilerinden birine bildirim için kaydedilen uygulamaları içerir. Uygulama, CM_Register_Notification veya RegisterDeviceNotificationçağırarak bu tür bir bildirime kaydolür. Bu bildirime yanıt olarak, uygulama cihazın kaldırılması için hazırlık yapar (cihazla olan bağlantı tanıtıcılarını kapatır) veya sorguda başarısız olur. Bu bildirimleri işleme hakkında daha fazla bilgi almak için cihaz arayüzlerinin gelmesi ve cihazın kaldırılması bildirimine kaydolma hakkındaki ve numaralı belgeleri inceleyin.
Cihazda (veya ilgili bir cihazda) bildirim için kaydedilen tüm çekirdek modu sürücülerini bildirir.
Bu, cihazda, cihazın alt öğelerinden birinde veya cihazın kaldırma ilişkilerinden biri olan'de bildirim için kaydedilen sürücüleri içerir. Bir sürücü,
EventCategoryTargetDeviceChange olay kategorisiyle IoRegisterPlugPlayNotificationçağırarak bu bildirime kaydolur. Bu bildirime yanıt olarak, sürücü cihazın kaldırılmasına hazırlanır (cihaz tanıtıcılarını kapatır) veya sorguyu reddeder.
Cihazın alt öğeleri için sürücülere IRP_MN_QUERY_REMOVE_DEVICE IRP'ler gönderir. Cihaz yığınının bu IRP'i nasıl işlediği hakkında daha fazla bilgi için aşağıya bakın.
(Windows 2000 ve üzeri sistemler) Cihaza bir dosya sistemi bağlıysa, PnP yöneticisi dosya sistemine ve tüm dosya sistemi filtrelerine bir sorgu kaldırma isteği gönderir. Cihazda açık tanıtıcılar varsa, dosya sistemi genellikle sorgu kaldırma isteğinde başarısız olur. Aksi takdirde, dosya sistemi genellikle gelecekteki oluşturmaların başarılı olmasını önlemek için birimi kilitler. Bağlı bir dosya sistemi sorgu kaldırma isteğini desteklemiyorsa, PnP yöneticisi cihaz için sorgu kaldırma isteğini başarısız yapar.
Yukarıdaki adımların tümü başarılı olursa, PnP yöneticisi IRP_MN_QUERY_REMOVE_DEVICE cihazın sürücülerine gönderir.
bir IRP_MN_QUERY_REMOVE_DEVICE isteği önce cihaz yığınındaki en üstteki sürücü ve ardından sonraki her alt sürücü tarafından işlenir. Sürücü, DispatchPnP yordamındaki IRP'leri kaldırır.
Bir IRP_MN_QUERY_REMOVE_DEVICEisteğine yanıt olarak, bir sürücü aşağıdakileri yapmalıdır:
Cihazın makineden güvenli bir şekilde kaldırılıp kaldırılamayacağını belirleyin.
Aşağıdakilerden biri doğruysa bir sürücü sorgu kaldırma IRP'sinde başarısız olmalıdır:
Cihazın kaldırılması verilerin kaybolmasına neden olabilir.
Bir bileşenin cihaza açık bir kolu varsa. (Bu yalnızca Windows 98/Me'de bir sorundur. Windows 2000 ve sonraki Windows sürümleri açık tanıtıcıları izler ve IRP_MN_QUERY_REMOVE_DEVICE tamamlandıktan sonra açık tanıtıcılar varsa sorgu başarısız olur.)
Bir sürücüye, cihazın sayfalama, hata ayıklama dökümü veya hazırda bekleme dosyası yolunda olduğu (IRP_MN_DEVICE_USAGE_NOTIFICATION IRP aracılığıyla) bildirildiyse.
Sürücünün cihaza karşı açık bir bağlantı referansı varsa. Başka bir ifadeyle, sürücü bir IRP_MN_QUERY_INTERFACE isteğine yanıt olarak bir arabirim sağladı ve arabirimin referansı kaldırılmamış.
Cihaz kaldırılamıyorsa, sorgu kaldırma IRP'sini başarısız yapın.
Irp- uygun bir hata durumuna (genellikle STATUS_UNSUCCESSFUL) ayarlayın, IO_NO_INCREMENT ile IoCompleteRequestIoStatus.Status çağırın ve sürücünün DispatchPnP yordamından dönün. IRP'yi sonraki alt sürücüye geçirmeyin.Sürücü daha önce cihazı uyandırmak için etkinleştirmek üzere bir IRP_MN_WAIT_WAKE isteği gönderdiyse wait-wake IRP'sini iptal edin.
Cihazın önceki PnP durumunu kaydedin.
Sürücü, IRP_MN_QUERY_REMOVE_DEVICE isteği aldığında cihazın içinde olduğu PnP durumunu kaydetmelidir çünkü sorgu iptal edilirse sürücü cihazı bu duruma döndürmelidir (IRP_MN_CANCEL_REMOVE_DEVICE). Önceki durum genellikle "başlatıldı"dır ve sürücü bir IRP_MN_START_DEVICE isteğini başarıyla tamamladığında cihazın girdiği durumdur.
Ancak, diğer önceki durumlar mümkündür. Örneğin, kullanıcı Cihaz Yöneticisi aracılığıyla cihazı devre dışı bırakmış olabilir. Veya bir IRP_MN_QUERY_CAPABILITIES isteğine yanıt olarak, üst veri yolu sürücüsü (veya veri yolu sürücüsündeki bir filtre sürücüsü) cihazın donanımının devre dışı bırakıldığını bildirmiş olabilir. Her iki durumda da, devre dışı bırakılan cihazın sürücüsü bir IRP_MN_QUERY_REMOVE_DEVICE isteği almadan önce bir IRP_MN_START_DEVICE isteği alabilir.
IRP'yi tamamlayın:
bir işlev veya filtre sürücüsünde:
Irp->IoStatus.Status STATUS_SUCCESS olarak ayarlayın.
IoSkipCurrentIrpStackLocation
ile sonraki yığın konumunu ayarlayın ve ile IRP'yi sonraki alt sürücüye geçirin.IoCallDriver `IoCallDriver` durumunu, `DispatchPnP` yordamının dönüş durumu olarak yayma.
IRP'yi tamamlamayın.
Otobüs şoföründe görülen özellikler arasında şunlar bulunur:
Irp->IoStatus.Status STATUS_SUCCESS olarak ayarlayın.
IRP'yi (IoCompleteRequest) IO_NO_INCREMENT ile tamamlayın.
DispatchPnP rutininden dön.
Cihaz yığınındaki herhangi bir sürücü IRP_MN_QUERY_REMOVE_DEVICEbaşarısız olursa, PnP yöneticisi cihaz yığınına bir IRP_MN_CANCEL_REMOVE_DEVICE gönderir. Bu, sürücülerin daha düşük bir sürücünün IRP'yi gerçekleştirip gerçekleştiremediğini algılamak amacıyla sorgu kaldırma IRP'si için IoCompletion yordamına ihtiyaç duymasını önler.
Bir sürücü, bir IRP_MN_QUERY_REMOVE_DEVICE işleminde başarılı olduktan ve cihazın kaldırma bekleniyor durumunda olduğunu kabul ettikten sonra, sürücü cihaz için sonraki oluşturma isteklerini reddetmelidir. Sürücü bir IRP_MN_CANCEL_REMOVE_DEVICE veya IRP_MN_REMOVE_DEVICEalana kadar diğer tüm IRP'leri her zamanki gibi işler.