Delen via


Een GUID_TARGET_DEVICE_QUERY_REMOVE-gebeurtenis afhandelen

Voordat de PnP-manager een IRP_MN_QUERY_REMOVE_DEVICE IRP naar de stuurprogramma's voor een apparaat verzendt, worden eventuele callbackroutines voor meldingen aangeroepen die zijn geregistreerd voor EventCategoryTargetDeviceChange op het apparaat. De PnP-manager specificeert een NotificationStructure.Event van GUID_TARGET_DEVICE_QUERY_REMOVE.

Als reactie op een dergelijke melding bepaalt de callback-routine of het apparaat kan worden verwijderd zonder het systeem te verstoren.

Als het apparaat niet mag worden verwijderd, retourneert de callback-routine STATUS_UNSUCCESSFUL. Als reactie op deze status wordt de verwerking van de verwijderingsquery door de PnP-manager afgebroken en wordt het apparaat niet verwijderd.

Als het apparaat kan worden verwijderd, moet de callbackroutine de juiste bewerkingen uitvoeren om het verwijderen van het apparaat voor te bereiden, zoals het sluiten van eventuele ingangen op het apparaat (indien mogelijk). Als handles open blijven op het apparaat, kan de PnP-manager het apparaat niet verwijderen en wordt het verwerkingsproces voor query-verwijderen door de PnP-manager afgebroken.

Wanneer een GUID_TARGET_DEVICE_QUERY_REMOVE gebeurtenis is verwerkt, moet een callback-routine voor meldingen het volgende doen:

  • Sluit alle geopende ingangen op het apparaat.

  • Als de driver een openstaande verwijzing naar het bestandsobject heeft, moet u de verwijzing naar het bestandsobject opheffen.

  • Blijf geregistreerd voor toekomstige EventCategoryTargetDeviceChange-meldingen . Dit is belangrijk omdat de dreigende verwijderbewerking mogelijk wordt geannuleerd.

Als u een ingang voor een apparaat sluit, wordt de registratie van een stuurprogramma voor wijzigingsmeldingen voor PnP-doelapparaten niet geannuleerd. De PnP-manager kan nog steeds de callbackroutine voor meldingen van het stuurprogramma aanroepen, maar in dergelijke aanroepen is het bestandsobject in NotificationStructure niet geldig.