Dela via


Att hantera en GUID_TARGET_DEVICE_QUERY_REMOVE-händelse

Innan PnP-hanteraren skickar en IRP_MN_QUERY_REMOVE_DEVICE IRP till drivrutinerna för en enhet anropas eventuella rutiner för återanrop av meddelanden som registrerats för EventCategoryTargetDeviceChange på enheten. PnP-hanteraren specificerar en NotificationStructure.Event av GUID_TARGET_DEVICE_QUERY_REMOVE.

Som svar på ett sådant meddelande avgör återanropsrutinen om enheten kan tas bort utan att störa systemet.

Om enheten inte ska tas bort returnerar återanropsrutinen STATUS_UNSUCCESSFUL. Som svar på den här statusen avbryter PnP-hanteraren borttagningsförfrågan och enheten kommer inte att tas bort.

Om enheten kan tas bort bör återanropsrutinen utföra lämpliga åtgärder för att förbereda enheten för borttagning, till exempel stänga alla handtag som är öppna på enheten (om möjligt). Om handtagen förblir öppna på enheten kan PnP-hanteraren inte ta bort enheten, och avbryter då bearbetningen av frågeprocessen.

När en GUID_TARGET_DEVICE_QUERY_REMOVE-händelse hanteras framgångsrikt bör en rutin för återanrop av meddelanden:

  • Stäng alla öppna referenser till enheten.

  • Om drivrutinen har en enastående referens för filobjektet avreferering av filobjektet.

  • Förbli registrerad för framtida EventCategoryTargetDeviceChange-meddelanden . Detta är viktigt eftersom den förestående borttagningsåtgärden kan avbrytas.

Genom att stänga ett handtag till en enhet avbryts inte en drivrutins registrering för meddelande om ändring av PnP-målenheter. PnP-chefen kan fortfarande anropa drivrutinens återanropsrutin för meddelanden, men i sådana anrop är filobjektet i NotificationStructure ogiltigt.